Я пытаюсь показать настраиваемые образцы на странице пользовательской категории (magento 1.9)

Я использую Magento 1.9.1.0 и у меня есть настраиваемые образцы, работающие над страницами категорий и продуктов.

Я пытаюсь создать собственную страницу «Магазин», в которой перечислены все товары (в магазине только +/- 20), а также показывает настраиваемые образцы под продуктами.

Я могу создать страницу магазина, в которой перечислены все продукты несколькими способами. Либо через CMS, local.xml, либо с помощью контроллера и т. Д. … никаких проблем нет.

Вот пример local.xml. * У меня есть соответствующие настройки маршрутов, и для категории по умолчанию установлено значение «Is Anchor».

<mystore_site_index_shop>
<reference name="content">
<block type="catalog/product_list" name="product_list" template="catalog/product/list.phtml">
<block type="core/text_list" name="product_list.name.after" as="name.after" />
<block type="core/text_list" name="product_list.after" as="after" />
<block type="catalog/product_list_toolbar" name="product_list_toolbar" template="catalog/product/list/toolbar.phtml">
<block type="page/html_pager" name="product_list_toolbar_pager"/>
</block>
</block>
</reference>
</mystore_site_index_shop>

Я также добавил ссылку на страницу в файле configurableswatches.xml.

<mystore_site_index_shop>
<update handle="product_list"/>
</mystore_site_index_shop>

который загружает соответствующие файлы .js на страницу … однако образцы не отображаются.

У кого-нибудь есть совет, как мне это сделать? Я должен упустить что-то очевидное здесь ..

Спасибо!

1

Решение

Попробуйте добавить обновление списка продуктов в файл local.xml после блока mystore_site_index_shop.

Внутри local.xml

<mystore_site_index_shop>
<update handle="product_list"/>
</mystore_site_index_shop>

—Редактировать—

Хотя я смог заставить это работать, используя метод, который я разместил выше. Насколько я понимаю, правильный метод — создать всю свою тему как дочернюю для темы rwd, что позволит вам использовать образцы без каких-либо взломов.

внутри приложения / дизайн / интерфейс / YOURTHEME / по умолчанию / etc / theme.xml

<?xml version="1.0"?>
<theme>
<parent>rwd/default</parent>
</theme>
1

Другие решения

Если вы идете в приложение / code / core / Mage / ConfigurableSwatches / etc / config.xml
Вы увидите наблюдателя на событии catalog_block_product_list_collection в строке 83.

  <catalog_block_product_list_collection>
<observers>
<configurableswatches>
<class>configurableswatches/observer</class>
<method>productListCollectionLoadAfter</method>
</configurableswatches>
</observers>
</catalog_block_product_list_collection>

Если вы прокомментируете этот код, вы не увидите образцы на странице со списком продуктов.

Добавьте свой метод наблюдателя на событие, чтобы добавить образцы.

Надеюсь, это поможет.

1

Добавление образцов на страницу листинга осуществляется различными способами.

Я буду предоставлять вам методы.

Способ 1:
Вы можете использовать этот модуль бесплатно или вы можете изучить способ изучения, изучив модуль

http://magebug.blogspot.in/2013/06/magento-how-to-display-color-options-in.html

Митос 2:[Это покажет все опции настраиваемого продукта]

<?php if($_product->isConfigurable()): ?>
//get attributes
<?php $attributes = $_product->getTypeInstance(true)->getConfigurableAttributes($_product) ?>
<?php if(count($attributes)): ?>
<ul>
<?php foreach($attributes as $att): ?>
<?php $pAtt=$att->getProductAttribute();
//get the child products
$allProducts = $_product->getTypeInstance(true)->getUsedProducts(null, $_product);
$frontValues =array() ?>
<li><?php echo $pAtt->getFrontendLabel() ?>
<ul>
<?php foreach($allProducts as $p): ?>
//check stock, status, ...
//do not show unsaleable options
<?php if(!$p->isSaleable()) continue; ?>
<?php $out=$p->getAttributeText($pAtt->getName()); ?>
<?php $frontValues[$out]=$out; ?>
<?php endforeach ?>
<li><?php echo implode('</li><li>', $frontValues) ?></li>
</ul>
</li>
<?php endforeach ?>
</ul>
<?php endif ?>
<?php endif ?>

Вы можете заменить выпадающий список по изображению или надписи.

Надеюсь, это сработает для вас.

1

Если вы посмотрите в Mage_ConfigurableSwatches_Model_Observer, у вас есть

  public function convertLayerBlock(Varien_Event_Observer $observer)
{
$front = Mage::app()->getRequest()->getRouteName();
$controller = Mage::app()->getRequest()->getControllerName();
$action = Mage::app()->getRequest()->getActionName();

// Perform this operation if we're on a category view page or search results page
if (($front == 'catalog' && $controller == 'category' && $action == 'view')
|| ($front == 'catalogsearch' && $controller == 'result' && $action == 'index')) {

// Block name for layered navigation differs depending on which Magento edition we're in
$blockName = 'catalog.leftnav';
if (Mage::getEdition() == Mage::EDITION_ENTERPRISE) {
$blockName = ($front == 'catalogsearch') ? 'enterprisesearch.leftnav' : 'enterprisecatalog.leftnav';
} elseif ($front == 'catalogsearch') {
$blockName = 'catalogsearch.leftnav';
}
Mage::helper('configurableswatches/productlist')->convertLayerBlock($blockName);
}
}

Как видите, условный запрос требует обработки вашего маршрута ($ front, $ controller, $ action). Вы можете переопределить этого наблюдателя, переписав и добавив свое условие.

0
По вопросам рекламы [email protected]