WedX - журнал о программировании и компьютерных науках

настраиваемый макет для всех страниц категорий magento

Я хочу отображать изображения подкатегорий на странице категории по продуктам. 1. Я создал category_listing.phtml с собственным кодом для отображения подкатегорий. 2. Создал статический блок.

{{block type="core/template" template="catalog/navigation/category_listing.phtml"}}

В настройках отображения категорий я выбрал «статический блок и продукты». скажем, у меня есть три категории: категория 1, категория 2, категория 3.

если я выбираю статический блок только для одной категории, но если я вызываю статический блок более чем в одной категории, он показывает неправильные подкатегории, если я не удаляю кеш каждый раз. Есть ли какой-либо шаг, который я пропустил, пожалуйста, ответьте, учитывая, что я новичок в magento

Спасибо


Ответы:


1

Откройте файл: app/design/frontend/yourtheme/default/template/catalog/category/view.phtml и добавьте следующий код:

<div class="category-grid-new">
    <?php $_columnCount = 4;?>
    <?php if ($i++%$_columnCount==0): ?>
        <ul class="sub-category">
        <?php endif; ?>
            <?php foreach ($this->getCurrentCategory()->getChildrenCategories() as $_subcat): ?>
                <li class="item<?php if(($i-1)%$_columnCount==0): ?> first<?php elseif($i%$_columnCount==0):?> last<?php endif; ?>">
                    <a href="<?php echo $_subcat->getUrl() ?>">
                        <div class="category-img"><img src="<?php echo $_category->getImageUrl() ?>" alt="" width="100px" height="100px"/></div>
                        <div class="category-name"><?php echo Mage::helper('catalog/output')->categoryAttribute($_subcat, $_subcat->getName()) ?></div>
                    </a>
                </li>
            <?php endforeach; ?>
    <?php if ($i%$_columnCount==0): ?>
        </ul>
    <?php endif; ?> 
</div>
26.11.2016
  • Привет, спасибо за ответ, можем ли мы использовать код через статический блок, чтобы использовать его только с определенными категориями, а не со всеми категориями?? 28.11.2016
  • Пожалуйста, используйте данную ссылку для вашего решения. docs.google.com/document/d/ 28.11.2016
  • Привет спасибо. Это дает мне ту же ошибку, что и в моем вопросе. Если я выберу статический блок в категории 1 в настройках дисплея, это сработает. Когда я вызываю тот же блок в категории 2, он показывает мне подкатегории категории 1, если я не удаляю кеш. Но после удаления кеша он показывает подкатегорию 2 в категории 1, короче говоря, после вызова этого блока в более чем одной категории он не показывает правильные подкатегории для соответствующих кошек, вам нужно каждый раз удалять кеш, чтобы увидеть правильные подкатегории текущей категории. Хотя ваш код в view.html работает отлично, возможно, мне придется фильтровать его по идентификатору кошки. 28.11.2016

  • 2

    <сильный>1. Для навигации по меню пользовательских категорий в Magento

    Макет
    Откройте app/design/frontend/base/default/layout/page.xml или эквивалент вашей темы. Поместите следующий код под тегом по умолчанию:

    <reference name="right">
         <block type="core/template" name="catalog.sidenav" template="page/custom.phtml" before="cart_sidebar"/>
    </reference>
    

    Создайте app/design/frontend/base/default/template/page/custom.phtml со следующим содержимым:

    <ul>
        <?php
            $obj = new Mage_Catalog_Block_Navigation();
            $storeCategories = $obj->getStoreCategories();
            Mage::registry('current_category') ? $currentCategoryId = Mage::registry('current_category')->getId() : $currentCategoryId='';
            foreach ($storeCategories as $_category):
        ?>
                <li>
                    <strong><?php echo $_category->getName(); ?></strong>
                    <?php $categoryChildren = $_category->getChildren(); ?>
                    <?php if($categoryChildren->count()) : ?>
                        <ul>
    
                            <?php foreach($categoryChildren as $_categoryChild) : ?>
                                <?php $_categoryChildModel = Mage::getModel('catalog/category')->load($_categoryChild->getId());?>
                                <?php $categoryGrandchildren=$_categoryChild->getChildren(); ?>
                                <li>
                                    <?php
                                        $currentCategoryId===$_categoryChild->getId() ? $bold="style=\"font-weight:bold\"" : $bold='';
                                        echo '&emsp;' . '<a href="' . $_categoryChildModel->getUrl() . '"' . $bold . '>' .  $_categoryChild->getName() . '(' . $_categoryChildModel->getProductCollection()->count() . ')</a>';
                                    ?>
                                </li>
                                <?php if($categoryGrandchildren->count()) : ?>
                                    <?php foreach($categoryGrandchildren as $_categoryGrandchild) : ?>
                                        <?php $_categoryGrandchildModel = Mage::getModel('catalog/category')->load($_categoryGrandchild->getId());?>
                                        <li>
                                            <?php
                                                $currentCategoryId===$_categoryChild->getId() ? $bold="style=\"font-weight:bold\"" : $bold='';
                                                echo '&emsp;&emsp;' . '<a href="' . $_categoryGrandchildModel->getUrl() . '"' . $bold . '>' .  $_categoryGrandchild->getName() . '(' . $_categoryGrandchildModel->getProductCount() . ')</a>';
                                            ?>
                                        </li>
                                    <?php endforeach; ?>
                                <?php endif; ?>
                            <?php endforeach; ?>
                        </ul>
                    <?php endif; ?>
                </li>
            <?php endforeach ?>
    </ul>
    

    Вы также можете вставить этот шаблон на любую другую страницу, закодировав обновление макета или через администратора, вставив эту строку как содержимое вашей страницы CMS:

    {{block type="core/template" template="page/custom.phtml"}}
    

    2. Чтобы добавить навигацию по категориям на левой боковой панели:

    создайте новый файл "category_listing.phtml" в вашей теме по адресу -

    app/design/frontend/{your_namespace}/{your_module}/template/catalog/navigation/category_listing.phtml
    

    Поместите в него следующий код:

    <div class="block block-category">
       <div class="inside-box">
          <div class="block-title block-category-title">
             <h2><?php echo $this->__('Categories') ?></h2>
          </div>
          <div class="block-category-navigation">
             <ul id="category-nav">
                <?php foreach ($this->getStoreCategories() as $_category): ?>  
                <?php if($_category->name!=""):  ?>    
                <li><?php echo $this->drawItem($_category) ?></li>
                <?php endif?>  
                <?php endforeach ?>    
             </ul>
          </div>
       </div>
    </div>
    

    затем вызовите это в файле catalog.xml, расположенном в папке темы -

    app/design/frontend/{your_namespace}/{your_module}/layout/catalog.xml
    

    код:

    <reference name="left">
       <-- this is new block added by us -->
       <block type="catalog/navigation" name="catalog.categorymenu" after="top.search" template="catalog/navigation/category_listing.phtml"/>
    
       <block type="core/template" name="left.permanent.callout" template="callouts/left_col.phtml">
       ...
       ...
       ...
    </reference>
    
    26.11.2016
  • Привет Спасибо за подробный ответ. Он добавит код во все категории. Не могли бы вы сообщить мне, как заставить его работать для определенных категорий, если у меня есть категория 1, 2, 3, 4, 5, и я хочу показывать подкатегории только для категории 3 и категории 5. . Спасибо 28.11.2016
  • после этого кода ‹?php if($categoryChildren-›count()) : ?› , вы должны поставить условие, ‹?php if($_category-›getId()=='3' && $_category-›getId( )=='5'){ //здесь код подкатегории } 28.11.2016
  • Новые материалы

    Как проанализировать работу вашего классификатора?
    Не всегда просто знать, какие показатели использовать С развитием глубокого обучения все больше и больше людей учатся обучать свой первый классификатор. Но как только вы закончите..

    Работа с цепями Маркова, часть 4 (Машинное обучение)
    Нелинейные цепи Маркова с агрегатором и их приложения (arXiv) Автор : Бар Лайт Аннотация: Изучаются свойства подкласса случайных процессов, называемых дискретными нелинейными цепями Маркова..

    Crazy Laravel Livewire упростил мне создание электронной коммерции (панель администратора и API) [Часть 3]
    Как вы сегодня, ребята? В этой части мы создадим CRUD для данных о продукте. Думаю, в этой части я не буду слишком много делиться теорией, но чаще буду делиться своим кодом. Потому что..

    Использование машинного обучения и Python для классификации 1000 сезонов новичков MLB Hitter
    Чему может научиться машина, глядя на сезоны новичков 1000 игроков MLB? Это то, что исследует это приложение. В этом процессе мы будем использовать неконтролируемое обучение, чтобы..

    Учебные заметки: создание моего первого пакета Node.js
    Это мои обучающие заметки, когда я научился создавать свой самый первый пакет Node.js, распространяемый через npm. Оглавление Глоссарий I. Новый пакет 1.1 советы по инициализации..

    Забудьте о Matplotlib: улучшите визуализацию данных с помощью умопомрачительных функций Seaborn!
    Примечание. Эта запись в блоге предполагает базовое знакомство с Python и концепциями анализа данных. Привет, энтузиасты данных! Добро пожаловать в мой блог, где я расскажу о невероятных..

    ИИ в аэрокосмической отрасли
    Каждый полет – это шаг вперед к великой мечте. Чтобы это происходило в их собственном темпе, необходима команда астронавтов для погони за космосом и команда технического обслуживания..


    Для любых предложений по сайту: [email protected]