Magento 1.8.1 - block type="catalog/product_list" 未显示在产品页面上

Posted

技术标签:

【中文标题】Magento 1.8.1 - block type="catalog/product_list" 未显示在产品页面上【英文标题】:Magento 1.8.1 - block type="catalog/product_list" not displaying on the product page 【发布时间】:2014-02-26 10:02:21 【问题描述】:

我正在处理的 Magento 网站上的产品页面有问题。

我在静态块中使用以下代码在标题部分显示产品:

block type="catalog/product_list" category_id="4" template="catalog/product/custom_list.phtml"  

问题是,除“产品”页面外,该块在所有页面上都显示良好。我在这里遗漏了什么吗?

希望你们能帮助我。

custom_list.phtml

<?php
    $_productCollection = $this->getLoadedProductCollection();
    $_helper = $this->helper('catalog/output');
?>
<?php if(!$_productCollection->count()): ?>
    <p class="note-msg"><?php echo $this->__('There are no products matching the selection.') ?></p>
<?php else: ?>
    <div class="cat-product-list">
        <ul class="products-grid">
            <?php foreach ($_productCollection as $_product): ?>
                <li class="item">
                    <a href="<?php echo $_product->getProductUrl() ?>" title="<?php echo $this->stripTags($this->getImageLabel($_product, 'small_image'), null, true) ?>" class="product-image"><img src="<?php echo $this->helper('catalog/image')->init($_product, 'small_image')->resize(90,60)->constrainOnly(TRUE)->keepAspectRatio(TRUE)->keepFrame(TRUE); ?>"    /></a>
                </li>
            <?php endforeach ?>
        </ul>
    </div>
<?php endif; ?>

【问题讨论】:

“我在这里遗漏了什么吗?” ——也许吧,但没有我们那么多。您如何将此添加到产品页面? 像这样:getLayout()->createBlock('cms/block')->setBlockId('catProducts')->toHtml(); ?> 在标题区域中。 那是静态块没有显示吗?还是它正在显示,而您的 catalog/product_list 没有显示在块内。 目录/产品列表未显示在块内。它在除产品视图页面之外的所有其他页面上都显示良好。 【参考方案1】:

事实证明,除非类别 (category_id="4") 与您正在查看的产品类别相同,否则产品不会显示在产品页面上。发现 在List.php

if (Mage::registry('product')) 
                $categories = Mage::registry('product')->getCategoryCollection()
                    ->setPage(1, 1)
                    ->load();
                if ($categories->count()) 
                    $this->setCategoryId(current($categories->getIterator()));
                
            

我添加了List.php 文件的本地副本,并根据我的需要对其进行了修改。 现在工作正常。

【讨论】:

能否详细说明您是如何修改List.php 的本地副本的?我遇到了同样的问题。【参考方案2】:

查看您的代码

block type="catalog/product_list" category_id="4" template="catalog/product/custom_list.phtml"  

您似乎正在使用非库存模板文件来渲染块。 (catalog/product/custom_list.phtml)。如果我自己调试这个问题,我会首先查看该模板中的逻辑并找出它为什么没有在产品页面上显示集合。

【讨论】:

custom_list.phtml 只是list.phtml 的副本,其中我删除了部分代码(名称、价格、评级)。我也试过template="catalog/product/list.phtml",但问题还是一样。 :( 我已编辑问题以添加 custom_list.phtml 的代码。

以上是关于Magento 1.8.1 - block type="catalog/product_list" 未显示在产品页面上的主要内容,如果未能解决你的问题,请参考以下文章

PHP 从Magento CMS Block获取HTML

PHP Magento - PHTML页面中的Echo Static Block

何时在Magento中使用Block和Controller

Magento-检查是否启用了静态块

magento 1.8.1中未在销售订单视图上显示原始价格?

Magento-如何添加一些静态块内容