Категории на главной странице

[16 июля 2019 г.]    Российская сборка Magento 2.52.2
Magento 2: модули и услуги
magereport.com: составление перечня необходимых для установки заплаток SUPEE
#1 i7777
  • Группа: Пользователь
  • Сообщений: 6
  • Регистрация: 28.04.2010

28.04.2010 14:27

Доброго всем времени суток!
Требуется на главной странице вывести витрину: таблицу (грид) категорий - т.е. картинка категории, название категории (внешне по аналогии с выводом товаров, только не товары а категории).
Подскажите, плз, в каком направлении двигаться?
1) может быть есть готовый виджет? Странно что такого не виднеется по умолчанию. В Shop-Script сделано именно так.
2) может быть есть готовый "core"-функционал? По аналогии с "top.menu".
3) бросаться писать велосипед.
Заранее благодарен за совет.

#2 Дмитрий Федюк
  • Администратор
  • Иконка
  • Группа: Администратор
  • Сообщений: 8995
  • Регистрация: 20.02.2010

28.04.2010 14:34

Просмотр сообщенияi7777 (28.04.2010 14:27) писал:

Доброго всем времени суток!
Требуется на главной странице вывести витрину: таблицу (грид) категорий - т.е. картинка категории, название категории (внешне по аналогии с выводом товаров, только не товары а категории).
Подскажите, плз, в каком направлении двигаться?
1) может быть есть готовый виджет? Странно что такого не виднеется по умолчанию. В Shop-Script сделано именно так.
2) может быть есть готовый "core"-функционал? По аналогии с "top.menu".
3) бросаться писать велосипед.
Заранее благодарен за совет.


Возьмите в Magento Connect модули с открытым кодом для отображения товарных категорий в виде меню (их там много) и переделайте под свои задачи: измените вёрстку, переделайте структуру, как вам нужно.

Вот пример вывода категорий:

<?php
$_main_categories=$this->getStoreCategories();
$_current_category=$this->getCurrentCategory();
$_categorypath = $this->getCurrentCategoryPath();
?>
<ul>
<?php
if ($_main_categories):
    foreach ($_main_categories as $_main_category):
      if($_main_category->getIsActive()):                             
           $cur_category=Mage::getModel('catalog/category')->load($_main_category->getId());
           $layer = Mage::getSingleton('catalog/layer');
           $layer->setCurrentCategory($cur_category);             
?>               
<li><a href="<?php echo $this->getCurrentCategory()->getUrl()?>"><?php echo $this->getCurrentCategory()->getName();?></a></li>   
 
 
<?php
 
if (in_array($this->getCurrentCategory()->getId(), $_categorypath)): ?>
<?php $_maincategorylisting=$this->getCurrentCategory()?>                       
<?php $_categories=$this->getCurrentChildCategories()?>
<?php if($_categories->count()):?>
 
<ul>
<? foreach ($_categories as $_category):?>                   
   <? if($_category->getIsActive()):                   
           $cur_subcategory=Mage::getModel('catalog/category')->load($_category->getId());
           $layer = Mage::getSingleton('catalog/layer');
           $layer->setCurrentCategory($cur_subcategory); 
         
?>                         
<li><a href="<?php echo $this->getCategoryUrl($_category)?>"> <?php echo $_category->getName()?></a></li>
    <? endif;?>
<?endforeach?>
</ul>           

<?php $layer->setCurrentCategory($_current_category);  ?>
<?endif;?>   
 
<?endif;?>                                   
                                                             
<?php         
endif;
endforeach;
else:
?>
<p>$_main_categories array was empty.</p>
<p>This might be because you are referencing this phtml file with a wrong type attribute. You should use <block type="catalog/navigation" ... /> !</p>
<?php endif; ?>


#3 i7777
  • Группа: Пользователь
  • Сообщений: 6
  • Регистрация: 28.04.2010

28.04.2010 14:47

Просмотр сообщенияДмитрий Федюк (28.04.2010 14:34) писал:

Возьмите в Magento Connect модули с открытым кодом для отображения товарных категорий в виде меню (их там много) и переделайте под свои задачи:
измените вёрстку, переделайте структуру, как вам нужно.

Вот пример вывода категорий:


огромное спасибо за стремительный ответ!

т.е. штатного (core) механизма нет?

#4 Дмитрий Федюк
  • Администратор
  • Иконка
  • Группа: Администратор
  • Сообщений: 8995
  • Регистрация: 20.02.2010

28.04.2010 14:52

Со стандартной сборкой Magento поставляется всего 2 темы: default и modern.
Стандартные модули заточены именно под эти темы.
Вся другая функциональность витрины делается либо самостоятельно, либо через готовые расширения из Magento Connect.
В то же время, как вы видите, программный интерфейс для вывода категорий и подкатегорий присутствует:
getStoreCategories, getCurrentCategory, getCurrentCategoryPath, getCurrentChildCategories.

#5 i7777
  • Группа: Пользователь
  • Сообщений: 6
  • Регистрация: 28.04.2010

28.04.2010 15:39

ага,
спасибо за наводку!

#6 Дмитрий Широковский
  • Группа: Пользователь
  • Сообщений: 7
  • Регистрация: 29.10.2010

11.11.2010 17:55

Просмотр сообщенияДмитрий Федюк (28.04.2010 14:52) писал:

Со стандартной сборкой Magento поставляется всего 2 темы: default и modern.
Стандартные модули заточены именно под эти темы.
Вся другая функциональность витрины делается либо самостоятельно, либо через готовые расширения из Magento Connect.
В то же время, как вы видите, программный интерфейс для вывода категорий и подкатегорий присутствует:
getStoreCategories, getCurrentCategory, getCurrentCategoryPath, getCurrentChildCategories.


Подскажите, не могу понять. У меня в catalog/product/my_list.phtml (копия от list.phtml) объект $this не имеет вышеуказанных методов (v.1.4.1.1)

Моя задача, вывести на главную страницу все товары всех категорий (их по пальцам сосчитать можно, так что список/грид не большой будет).
Но, если использовать вот такую строку
{{block type="catalog/product_list" name="home.catalog.product.list" alias="products_homepage" template="catalog/product/my_list.phtml"}}
в теле страницы home (в админке), то говорит что нет продуктов

Если использовать вот такую (с указанием ID категории)
{{block type="catalog/product_list" name="home.catalog.product.list" alias="products_homepage" category_id="4" template="catalog/product/my_list.phtml"}}
то продукты выводит, но только (естественно) по одной категории.
А мне надо по всем!

При этом если указать category_id="2" (т.е. Default category) то всё равно ничего не выводит.

Решил, для себя, сделать перебор категорий, как показано в примере выше (а далее типа как в my_list.phtml - то есть цикл по категориям, а потом уикл по продуктам), но как уже сказал, объект $this не имеет подобных методов.
Выводил командой get_class_methods()

Что делать, подскажите.
Может мне надо юзать не my_list.phtml (он же list.phtml) а что-то другое?

#7 Дмитрий Федюк
  • Администратор
  • Иконка
  • Группа: Администратор
  • Сообщений: 8995
  • Регистрация: 20.02.2010

11.11.2010 19:26

Метод getStoreCategories принадлежит классу Mage_Catalog_Helper_Category.
В произвольном контексте движка Magento вызывается так:
Mage::helper('catalog/category')->getStoreCategories() 


В принадлежности других методов, думаю, сами разберётесь путём поиска по коду.
Используйте адекватную среду разработки - и не придётся задавать такие вопросы типа "где найти метод?"

#8 Дмитрий Широковский
  • Группа: Пользователь
  • Сообщений: 7
  • Регистрация: 29.10.2010

12.11.2010 15:07

Просмотр сообщенияДмитрий Федюк (11.11.2010 19:26) писал:

Метод getStoreCategories принадлежит классу Mage_Catalog_Helper_Category.
В произвольном контексте движка Magento вызывается так:
Mage::helper('catalog/category')->getStoreCategories() 


В принадлежности других методов, думаю, сами разберётесь путём поиска по коду.
Используйте адекватную среду разработки - и не придётся задавать такие вопросы типа "где найти метод?"


Спасибо Дмитрий. Среду разработки (или среды) использую обычно адекватные, если к таковым относятся Zend Studio или Netbeans (иногда смотрю на Aptana).
С поиском методов по коду не составляет труда, даже без IDE. :)
Дело просто в том , что с данным проектом я знаком буквально пару недель, и ещё пока не понимаю основную концепцию движка.
Особенно сильно сбивают с толку XML лэйауты, в которых не всегда поддаётся логике то что там написано.
Но думаю со временем разберусь.
Вам конечно же спасибо за ответы, очень помогают.

#9 Дмитрий Федюк
  • Администратор
  • Иконка
  • Группа: Администратор
  • Сообщений: 8995
  • Регистрация: 20.02.2010

27.03.2011 21:23

Самый удобный способ отобразить товарные категории на главной странице

Поделиться темой: