Доброго всем времени суток!
Требуется на главной странице вывести витрину: таблицу (грид) категорий - т.е. картинка категории, название категории (внешне по аналогии с выводом товаров, только не товары а категории).
Подскажите, плз, в каком направлении двигаться?
1) может быть есть готовый виджет? Странно что такого не виднеется по умолчанию. В Shop-Script сделано именно так.
2) может быть есть готовый "core"-функционал? По аналогии с "top.menu".
3) бросаться писать велосипед.
Заранее благодарен за совет.
Категории на главной странице
28.04.2010 14:34
i7777 (28.04.2010 14:27) писал:
Доброго всем времени суток!
Требуется на главной странице вывести витрину: таблицу (грид) категорий - т.е. картинка категории, название категории (внешне по аналогии с выводом товаров, только не товары а категории).
Подскажите, плз, в каком направлении двигаться?
1) может быть есть готовый виджет? Странно что такого не виднеется по умолчанию. В Shop-Script сделано именно так.
2) может быть есть готовый "core"-функционал? По аналогии с "top.menu".
3) бросаться писать велосипед.
Заранее благодарен за совет.
Требуется на главной странице вывести витрину: таблицу (грид) категорий - т.е. картинка категории, название категории (внешне по аналогии с выводом товаров, только не товары а категории).
Подскажите, плз, в каком направлении двигаться?
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; ?>
28.04.2010 14:47
Дмитрий Федюк (28.04.2010 14:34) писал:
Возьмите в Magento Connect модули с открытым кодом для отображения товарных категорий в виде меню (их там много) и переделайте под свои задачи:
измените вёрстку, переделайте структуру, как вам нужно.
Вот пример вывода категорий:
измените вёрстку, переделайте структуру, как вам нужно.
Вот пример вывода категорий:
огромное спасибо за стремительный ответ!
т.е. штатного (core) механизма нет?
28.04.2010 14:52
Со стандартной сборкой Magento поставляется всего 2 темы: default и modern.
Стандартные модули заточены именно под эти темы.
Вся другая функциональность витрины делается либо самостоятельно, либо через готовые расширения из Magento Connect.
В то же время, как вы видите, программный интерфейс для вывода категорий и подкатегорий присутствует:
getStoreCategories, getCurrentCategory, getCurrentCategoryPath, getCurrentChildCategories.
Стандартные модули заточены именно под эти темы.
Вся другая функциональность витрины делается либо самостоятельно, либо через готовые расширения из Magento Connect.
В то же время, как вы видите, программный интерфейс для вывода категорий и подкатегорий присутствует:
getStoreCategories, getCurrentCategory, getCurrentCategoryPath, getCurrentChildCategories.
11.11.2010 17:55
Дмитрий Федюк (28.04.2010 14:52) писал:
Со стандартной сборкой Magento поставляется всего 2 темы: default и modern.
Стандартные модули заточены именно под эти темы.
Вся другая функциональность витрины делается либо самостоятельно, либо через готовые расширения из Magento Connect.
В то же время, как вы видите, программный интерфейс для вывода категорий и подкатегорий присутствует:
getStoreCategories, getCurrentCategory, getCurrentCategoryPath, getCurrentChildCategories.
Стандартные модули заточены именно под эти темы.
Вся другая функциональность витрины делается либо самостоятельно, либо через готовые расширения из 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) а что-то другое?
11.11.2010 19:26
Метод getStoreCategories принадлежит классу Mage_Catalog_Helper_Category.
В произвольном контексте движка Magento вызывается так:
В принадлежности других методов, думаю, сами разберётесь путём поиска по коду.
Используйте адекватную среду разработки - и не придётся задавать такие вопросы типа "где найти метод?"
В произвольном контексте движка Magento вызывается так:
Mage::helper('catalog/category')->getStoreCategories()
В принадлежности других методов, думаю, сами разберётесь путём поиска по коду.
Используйте адекватную среду разработки - и не придётся задавать такие вопросы типа "где найти метод?"
12.11.2010 15:07
Дмитрий Федюк (11.11.2010 19:26) писал:
Метод getStoreCategories принадлежит классу Mage_Catalog_Helper_Category.
В произвольном контексте движка Magento вызывается так:
В принадлежности других методов, думаю, сами разберётесь путём поиска по коду.
Используйте адекватную среду разработки - и не придётся задавать такие вопросы типа "где найти метод?"
В произвольном контексте движка Magento вызывается так:
Mage::helper('catalog/category')->getStoreCategories()
В принадлежности других методов, думаю, сами разберётесь путём поиска по коду.
Используйте адекватную среду разработки - и не придётся задавать такие вопросы типа "где найти метод?"
Спасибо Дмитрий. Среду разработки (или среды) использую обычно адекватные, если к таковым относятся Zend Studio или Netbeans (иногда смотрю на Aptana).
С поиском методов по коду не составляет труда, даже без IDE.
Дело просто в том , что с данным проектом я знаком буквально пару недель, и ещё пока не понимаю основную концепцию движка.
Особенно сильно сбивают с толку XML лэйауты, в которых не всегда поддаётся логике то что там написано.
Но думаю со временем разберусь.
Вам конечно же спасибо за ответы, очень помогают.