Проверить настройки Skip to content

Название категории в списке продуктов Magento (list.phtml)

Бывают разрабатываются интересные дизайны для сайтов на Magento (Мадженто), где надо выводить несколько раз название категории Magento в списке товаров или писать название в  «нестандартных местах» страницы.

Пример как получить название категории товаров в Magento в файле шаблона list.phtml.

echo Mage::getModel('catalog/layer')->getCurrentCategory()->getName();

 

а так можно узнать все доступные свойства категории Magento:

var_dump(Mage::getModel('catalog/layer')->getCurrentCategory()->getData()); 
Magento 1.*
  • Andrew

    Fatal error: Call to a member function getCurrentCategory() on a non-object in

    подскажите почему выдает ошибку? в чем может быть проблема??

    • admin

      значит что getCurrentCategory() этот метод не доступен, так как не задана текущая категория.

  • http://svoedelo.info/ Тимофей Ткачев

    Доброго времени суток! Столкнулся с простой на первый взгляд проблемой: необходимо вывести картинку категории в карточке товара. Возможно ли это и будет ли такой вывод соответствовать стандартам разработки под Magento? То, что у меня получается, либо не работает, либо выводит не то изображение.

    • magefast

      Если требуется показать картинку категории или какие другие данные категории — требуется сама категория товара, получить список категорий товара $product->getCategoryIds() и вернет массив из id категорий, в которые входит товар.

      Далее потребуется как-то «понять» какие данные категории требуется отобразить….. какая категория актуальна …. сложно, надо делать свой алгоритм. Хорошо если товар в 1 категории, а если в 3-х :)

      У меня получалось примерно такая проверка —

      $categories = $this->_getCategoriesArray();
      foreach ($catIds as $c) {
      if (isset($categories[$c]) && $categories[$c][‘level’] == 4) {
      $productCategory = $categories[$c];
      break;
      }

      if (isset($categories[$c]) && $categories[$c][‘level’] == 3) {
      $productCategory = $categories[$c];
      break;
      }

      if (isset($categories[$c]) && $categories[$c][‘level’] == 2) {
      $productCategory = $categories[$c];
      break;
      }
      }

      protected function _getCategoriesArray()
      {
      $categoriesArray = Mage::getModel(‘catalog/category’)->getCollection()->addAttributeToSelect(‘name’);
      $categoryArray = array();

      foreach ($categoriesArray as $category) {
      $categoryData = $category->getData();
      $categoryArray[$categoryData[‘entity_id’]] = $categoryData;
      $categoryArray[$categoryData[‘entity_id’]][‘url’] = $category->getUrl();
      }

      unset($categoriesArray);
      return $categoryArray;
      }

      В итоге есть $productCategory — id категории,

      далее уже проще —
      $categoryImage = Mage::getModel(‘catalog/category’)->load($productCategory)->getImage();

      И конечно же, неплохо вывести картинку-категории в новый метод, хелпер или блок, или через обсервер.

      • http://svoedelo.info/ Тимофей Ткачев

        Я сделал именно так как написано. Спасибо, все работает. При смене структуры таблиц все ОК. Посмотрим как покажет себя в дальнейшем, но логи чисты.

    • magefast

      «Возможно ли это и будет ли такой вывод соответствовать стандартам разработки под Magento?» — к сожалению сложно сказать, надо просто проверить — работает ли ваше решение с включенным кешем и Flat catalog Category/Flat catalog Product

      В Magento много можно сделать разными способами