Пользовательский макет Обновляет XML в категории


У меня есть категория на моем веб-сайте, к которой я применяю некоторые пользовательские обновления макета в XML категории. ПРИМЕЧАНИЕ. Я также установил "Применить к продуктам" на "Да":

<reference name="content">
        <block type="core/template" name="members.header" template="members/header.phtml" before="-" />
    <remove name="product_list" />
    <block type="catalog/product_memberscontentlist" name="product_memberscontentlist" template="catalog/product/members-content-list.phtml" />
</reference>
<reference name="right">
    <block type="core/template" name="members.sidebar" template="members/sidebar.phtml" before="-" />
</reference>

Я создал файл в app/code/local/Mage/Catalog/Block/Product/Memberscontentlist.php вот как работает product_memberscontentlist. Содержимое этого файла:

class Mage_Catalog_Block_Product_Memberscontentlist extends Mage_Catalog_Block_Product_List
{
/**
     * Retrieve loaded category collection
     *
     * @return Mage_Eav_Model_Entity_Collection_Abstract
     */
    protected function _getProductCollection()
    {
        $collection = parent::_getProductCollection();

        if(isset($_GET['filterID'])) {
            $collection->addAttributeToSelect('my_attribute')
                ->addAttributeToFilter('my_attribute', array('like' => '%'.$_GET['filterID'].'%'));
        }

        return $collection;
    }
}

Это всего лишь фрагмент кода, который добавляет дополнительный фильтр в список категорий. Это прекрасно работает на странице категории, но вызывает какую-то ошибку на странице продукта, что означает, что страница продукта загружается, но по какой-то причине тег 404-Страница не найдена, и внизу страницы есть "Упс, наши плохие... и т. Д.".

Моя теория заключается в том, что код...

<remove name="product_list" />
<block type="catalog/product_memberscontentlist" name="product_memberscontentlist" template="catalog/product/members-content-list.phtml" />

... в пользовательском обновлении макета возникает проблема, поэтому я попытался указать, чтобы этот код применялся только к представлению категории, т.Е.:

<reference name="content">
    <block type="core/template" name="members.header" template="members/header.phtml" before="-" />
</reference>
<reference name="right">
    <block type="core/template" name="members.sidebar" template="members/sidebar.phtml" before="-" />
</reference>

<catalog_category_default>
    <reference name="content">
        <remove name="product_list" />
        <block type="catalog/product_memberscontentlist" name="product_memberscontentlist" template="catalog/product/members-content-list.phtml" />
    </reference>
</catalog_category_default>

Но, похоже, это не работает. Проблема в том, что я нужно оставить "Применить к продуктам" на "Да", потому что некоторые блоки (members.header и members.sidebar) также необходимы на страницах продуктов этой категории.

Я также попробовал следующее:

<reference name="category.products">
    <action method="unsetChild"><name>product_list</name></action>
    <block type="catalog/product_memberscontentlist" name="product_memberscontentlist" template="catalog/product/members-content-list.phtml" />
</reference>

Но это тоже не работает!

По сути, моя проблема заключается в том, что я хочу применить обновление пользовательского макета к категории, и я хочу, чтобы некоторые (но только некоторые) из этого XML также применялись к странице продукта. Если кто-нибудь может помочь с тем, как я могу настроить таргетинг на страницу категории только в пользовательском макете, обновите ее был бы очень признателен. Спасибо!

Я использую Magento 1.8.1

Author: Sarah, 2014-05-07

1 answers

Дескрипторы макета <catalog_category_default> не работают в пользовательском XML-формате макета, поэтому это не тот путь.

Вместо этого оставьте в поле XML пользовательского макета только XML, который вы хотите применить как к продуктам, так и к категориям.

Вы можете поместить XML-формат для конкретной категории в приложение/дизайн/интерфейс/[YOUR_PACKAGE]/[YOUR_THEME]/layout/local.xml следующим образом:

<layout>
    <CATEGORY_18> <!-- 18 is category ID -->
        <!-- put category specific layout XML here -->
    </CATEGORY_18>
</layout>

P.S. <CATEGORY_18> дескриптор макета применяется перед пользовательским XML-макетом, указанным в панели администратора.

 1
Author: MANAdev.com Team, 2015-02-13 22:26:40