/** * Retrieve URL Rewrite Instance * * @return Mage_Core_Model_Url_Rewrite */ public function getUrlRewrite() { if (null === $this->_urlRewrite) { $this->_urlRewrite = $this->_factory->getUrlRewriteInstance(); } return $this->_urlRewrite; }
/** * Join request_path column from url rewrite table * * @return Mage_Catalog_Model_Resource_Category_Flat_Collection */ public function addUrlRewriteToResult() { /** @var $urlRewrite Mage_Catalog_Helper_Category_Url_Rewrite_Interface */ $urlRewrite = $this->_factory->getCategoryUrlRewriteHelper(); $urlRewrite->joinTableToCollection($this, $this->_getCurrentStoreId()); return $this; }
/** * Add URL rewrites to collection * */ protected function _addUrlRewrite() { $urlRewrites = null; if ($this->_cacheConf) { if (!($urlRewrites = Mage::app()->loadCache($this->_cacheConf['prefix'] . 'urlrewrite' . 'urlrewrite'))) { $urlRewrites = null; } else { $urlRewrites = unserialize($urlRewrites); } } if (!$urlRewrites) { $productIds = array(); foreach ($this->_items as $item) { $productIds[] = $item->getEntityId(); } #if (!count($productIds)) { # return; #} $select = $this->_factory->getProductUrlRewriteHelper()->getTableSelect($productIds, $this->_urlRewriteCategory, Mage::app()->getStore()->getId()); $urlRewrites = array(); foreach (Mage::getSingleton('core/resource')->getConnection('core_read')->fetchAll($select) as $row) { if (!isset($urlRewrites[$row['product_id']])) { $urlRewrites[$row['product_id']] = $row['request_path']; } } if ($this->_cacheConf) { Mage::app()->saveCache(serialize($urlRewrites), $this->_cacheConf['prefix'] . 'urlrewrite' . 'urlrewrite', array_merge($this->_cacheConf['tags'], array(Mage_Catalog_Model_Product_Url::CACHE_TAG)), $this->_cacheLifetime); } } foreach ($this->_items as $item) { if (empty($this->_urlRewriteCategory)) { $item->setDoNotUseCategoryId(true); } if (isset($urlRewrites[$item->getEntityId()])) { $item->setData('request_path', $urlRewrites[$item->getEntityId()]); } else { $item->setData('request_path', false); } } }
/** * Joins url rewrite rules to collection * * @return Mage_Catalog_Model_Resource_Category_Collection */ public function joinUrlRewrite() { $this->_factory->getCategoryUrlRewriteHelper()->joinTableToEavCollection($this, $this->_getCurrentStoreId()); return $this; }
/** * Return parent categories of category * * @param Mage_Catalog_Model_Category $category * @param bool $isActive * @return array */ public function getParentCategories($category, $isActive = true) { $categories = array(); $select = $this->_getReadAdapter()->select()->from(array('main_table' => $this->getMainStoreTable($category->getStoreId())), array('main_table.entity_id', 'main_table.name'))->where('main_table.entity_id IN (?)', array_reverse(explode(',', $category->getPathInStore()))); if ($isActive) { $select->where('main_table.is_active = ?', '1'); } $select->order('main_table.path ASC'); $urlRewrite = $this->_factory->getCategoryUrlRewriteHelper(); $urlRewrite->joinTableToSelect($select, $category->getStoreId()); $result = $this->_getReadAdapter()->fetchAll($select); foreach ($result as $row) { $row['id'] = $row['entity_id']; $categories[$row['entity_id']] = Mage::getModel('catalog/category')->setData($row); } return $categories; }