1: <?php
2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25:
26:
27: 28: 29: 30: 31: 32: 33:
34: class extends Mage_Rss_Block_Catalog_Abstract
35: {
36: protected function _construct()
37: {
38: 39: 40:
41: $tagModel = Mage::registry('tag_model');
42: $this->setCacheKey('rss_catalog_tag_' . $this->getStoreId() . '_' . $tagModel->getName());
43: $this->setCacheLifetime(600);
44: }
45:
46: protected function _toHtml()
47: {
48:
49: $storeId = $this->_getStoreId();
50: $tagModel = Mage::registry('tag_model');
51: $newurl = Mage::getUrl('rss/catalog/tag/tagName/' . $tagModel->getName());
52: $title = Mage::helper('rss')->__('Products tagged with %s', $tagModel->getName());
53: $lang = Mage::getStoreConfig('general/locale/code');
54:
55: $rssObj = Mage::getModel('rss/rss');
56: $data = array('title' => $title,
57: 'description' => $title,
58: 'link' => $newurl,
59: 'charset' => 'UTF-8',
60: 'language' => $lang
61: );
62: $rssObj->_addHeader($data);
63:
64: $_collection = $tagModel->getEntityCollection()
65: ->addTagFilter($tagModel->getId())
66: ->addStoreFilter($storeId);
67:
68: $_collection->setVisibility(Mage::getSingleton('catalog/product_visibility')->getVisibleInCatalogIds());
69:
70: $product = Mage::getModel('catalog/product');
71:
72: Mage::getSingleton('core/resource_iterator')->walk(
73: Mage::getResourceHelper('core')->getQueryUsingAnalyticFunction($_collection->getSelect()),
74: array(array($this, 'addTaggedItemXml')),
75: array('rssObj'=> $rssObj, 'product'=>$product),
76: $_collection->getSelect()->getAdapter()
77: );
78:
79: return $rssObj->createRssXml();
80: }
81:
82: 83: 84: 85: 86:
87: public function addTaggedItemXml($args)
88: {
89: $product = $args['product'];
90:
91: $product->setAllowedInRss(true);
92: $product->setAllowedPriceInRss(true);
93: Mage::dispatchEvent('rss_catalog_tagged_item_xml_callback', $args);
94:
95: if (!$product->getAllowedInRss()) {
96:
97: return;
98: }
99:
100: $allowedPriceInRss = $product->getAllowedPriceInRss();
101:
102: $product->unsetData()->load($args['row']['entity_id']);
103: $description = '<table><tr><td><a href="'.$product->getProductUrl().'">'
104: . '<img src="' . $this->helper('catalog/image')->init($product, 'thumbnail')->resize(75, 75)
105: . '" border="0" align="left" height="75" width="75"></a></td>'
106: . '<td style="text-decoration:none;">'.$product->getDescription();
107:
108: if ($allowedPriceInRss) {
109: $description .= $this->getPriceHtml($product,true);
110: }
111:
112: $description .='</td></tr></table>';
113:
114: $rssObj = $args['rssObj'];
115: $data = array(
116: 'title' => $product->getName(),
117: 'link' => $product->getProductUrl(),
118: 'description' => $description,
119: );
120: $rssObj->_addEntry($data);
121: }
122: }
123: