00001 <?php
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027 class Mage_Catalog_Helper_Output extends Mage_Core_Helper_Abstract
00028 {
00029
00030
00031
00032
00033
00034 protected $_handlers;
00035
00036 public function __construct()
00037 {
00038 Mage::dispatchEvent('catalog_helper_output_construct', array('helper'=>$this));
00039 }
00040
00041
00042
00043
00044
00045
00046
00047
00048 public function addHandler($method, $handler)
00049 {
00050 if (!is_object($handler)) {
00051 return $this;
00052 }
00053 $method = strtolower($method);
00054
00055 if (!isset($this->_handlers[$method])) {
00056 $this->_handlers[$method] = array();
00057 }
00058
00059 $this->_handlers[$method][] = $handler;
00060 return $this;
00061 }
00062
00063
00064
00065
00066
00067
00068
00069 public function getHandlers($method)
00070 {
00071 $method = strtolower($method);
00072 return isset($this->_handlers[$method]) ? $this->_handlers[$method] : array();
00073 }
00074
00075
00076
00077
00078
00079
00080
00081
00082
00083 public function process($method, $result, $params)
00084 {
00085 foreach ($this->getHandlers($method) as $handler) {
00086 if (method_exists($handler, $method)) {
00087 $result = $handler->$method($this, $result, $params);
00088 }
00089 }
00090 return $result;
00091 }
00092
00093
00094
00095
00096
00097
00098
00099
00100
00101 public function productAttribute($product, $attributeHtml, $attributeName)
00102 {
00103 $attributeHtml = $this->process('productAttribute', $attributeHtml, array(
00104 'product' => $product,
00105 'attribute' => $attributeName
00106 ));
00107 return $attributeHtml;
00108 }
00109
00110
00111
00112
00113
00114
00115
00116
00117
00118 public function categoryAttribute($category, $attributeHtml, $attributeName)
00119 {
00120 $attributeHtml = $this->process('categoryAttribute', $attributeHtml, array(
00121 'category' => $category,
00122 'attribute' => $attributeName
00123 ));
00124 return $attributeHtml;
00125 }
00126 }