Я использую 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 на страницу … однако образцы не отображаются.
У кого-нибудь есть совет, как мне это сделать? Я должен упустить что-то очевидное здесь ..
Спасибо!
Попробуйте добавить обновление списка продуктов в файл 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>
Если вы идете в приложение / 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:
Вы можете использовать этот модуль бесплатно или вы можете изучить способ изучения, изучив модуль
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 ?>
Вы можете заменить выпадающий список по изображению или надписи.
Надеюсь, это сработает для вас.
Если вы посмотрите в 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). Вы можете переопределить этого наблюдателя, переписав и добавив свое условие.