/** * @param Mage_Catalog_Model_Category $category * @return mixed */ public function getImageUrl($category) { $url = null; if ($image = $category->getThumbnail()) { $url = Mage::getBaseUrl('media') . 'catalog/category/' . $image; } if (!$url) { $url = $category->getImageUrl(); } return $this->_getExportHelper()->parseUrl($url); }
/** * Provides the URL to the image on the CDN or fails back to the parent method as appropriate * * @return string */ public function getImageUrl() { $path = false; if ($image = $this->getImage()) { $path = Mage::getBaseDir('media') . '/catalog/category/' . $image; } $cds = Mage::Helper('imagecdn')->factory(); if ($path && $cds->useCdn()) { $fileExists = $cds->fileExists($path); if (!$fileExists) { $cds->save($path, $path); } $url = $cds->getUrl($path); if ($url) { return $url; } } return parent::getImageUrl(); }
public function getObject(Mage_Catalog_Model_Category $category) { /** @var $productCollection Mage_Catalog_Model_Resource_Product_Collection */ $productCollection = $category->getProductCollection(); $category->setProductCount($productCollection->addMinimalPrice()->count()); $transport = new Varien_Object(); Mage::dispatchEvent('algolia_category_index_before', array('category' => $category, 'custom_data' => $transport)); $customData = $transport->getData(); $storeId = $category->getStoreId(); $category->getUrlInstance()->setStore($storeId); $path = ''; foreach ($category->getPathIds() as $categoryId) { if ($path != '') { $path .= ' / '; } $path .= $this->getCategoryName($categoryId, $storeId); } $image_url = NULL; try { $image_url = $category->getImageUrl(); } catch (Exception $e) { /* no image, no default: not fatal */ } $data = array('objectID' => $category->getId(), 'name' => $category->getName(), 'path' => $path, 'level' => $category->getLevel(), 'url' => $category->getUrl(), '_tags' => array('category'), 'popularity' => 1, 'product_count' => $category->getProductCount()); if (!empty($image_url)) { $data['image_url'] = $image_url; } foreach ($this->config->getCategoryAdditionalAttributes($storeId) as $attribute) { $value = $category->getData($attribute['attribute']); $attribute_ressource = $category->getResource()->getAttribute($attribute['attribute']); if ($attribute_ressource) { $value = $attribute_ressource->getFrontend()->getValue($category); } if (isset($data[$attribute['attribute']])) { $value = $data[$attribute['attribute']]; } if ($value) { $data[$attribute['attribute']] = $value; } } $data = array_merge($data, $customData); foreach ($data as &$data0) { $data0 = $this->try_cast($data0); } return $data; }
public function testGetImageUrl() { $this->assertFalse($this->_model->getImageUrl()); $this->_model->setImage('test.gif'); $this->assertStringEndsWith('media/catalog/category/test.gif', $this->_model->getImageUrl()); }
/** * Prepare category JSON * * @param Mage_Catalog_Model_Category $category * @return array */ public function getCategoryJSON(Mage_Catalog_Model_Category $category) { $transport = new Varien_Object(); Mage::dispatchEvent('algolia_category_index_before', array('category' => $category, 'custom_data' => $transport)); $customData = $transport->getData(); $storeId = $category->getStoreId(); $category->getUrlInstance()->setStore($storeId); $path = ''; foreach ($category->getPathIds() as $categoryId) { if ($path != '') { $path .= ' / '; } $path .= $this->getCategoryName($categoryId, $storeId); } $imageUrl = NULL; try { $imageUrl = $category->getImageUrl(); } catch (Exception $e) { /* no image, no default: not fatal */ } $data = array('objectID' => $this->getCategoryObjectId($category), 'name' => $category->getName(), 'path' => $path, 'level' => $category->getLevel(), 'url' => $category->getUrl(), '_tags' => array('category'), 'popularity' => 1); if ($this->isIndexProductCount()) { $data['product_count'] = $data['popularity'] = $category->getProductCount(); } if (!empty($imageUrl)) { $data['image_url'] = $imageUrl; } foreach ($this->getCategoryAdditionalAttributes($storeId) as $attributeCode) { $value = $category->hasData($this->_dataPrefix . $attributeCode) ? $category->getData($this->_dataPrefix . $attributeCode) : $category->getData($attributeCode); $value = Mage::getResourceSingleton('algoliasearch/fulltext')->getAttributeValue($attributeCode, $value, $storeId, Mage_Catalog_Model_Category::ENTITY); if ($value) { $data[$attributeCode] = $value; } } $data = array_merge($data, $customData); return $data; }