如何在产品视图Magento中调用产品列表

a25bedc5-3d09-41b8-82fb-ea6c353d75ae

我需要在产品视图页面中显示产品列表。经过非常深入的研究,我发现如果在产品视图页面中调用了块type =“ catalog / product_list”则不起作用,因此...“普遍”调用可以显示的产品列表的方法是什么在类别和产品视图页面中???我无法在view.phtml文件中编码,我要显示的产品列表由以下方式调用:

 {{block type="catalog/product_list" category_id="12" template="catalog/product/featured-products.phtml"}}

Featured-products.phtml通过给定的类别ID调用产品集合过滤器:

<?php
    $_productCollection=$this->getLoadedProductCollection();
    $_helper = $this->helper('catalog/output');
    $cat_id = $this->category_id;
    $cat = Mage::getModel('catalog/category')->load($cat_id);
?>

谢谢你的帮助

拉杰夫·托米(Rajeev K Tomy)

您可以通过创建自己的模块来做到这一点。试试这个。在这里,我将我们的模块称为Listinview

我们的模块将具有以下文件。

模块的配置文件

位置:app / code / local / Programmerrkt / Listinview / etc / config.xml

<config>
<modules>
    <Programmerrkt_Listinview>
        <version>0.1.0</version>
    </Programmerrkt_Listinview>
</modules>
<frontend>
    <layout>
        <updates>
            <programmerrkt_listinview>
                <file>programmerrkt_listinview.xml</file>
            </programmerrkt_listinview>
        </updates>
    </layout>
</frontend>
<global>
    <blocks>
        <programmerrkt_listinview>
            <class>Programmerrkt_Listinview_Block</class>
        </programmerrkt_listinview>
    </blocks>
</global>
</config>

该文件定义您的模块配置。它告诉magento它包含一些积木和一些其他东西。

位置:app / etc / modules / Programmerrkt_Listinview.xml

 <config>
<modules>
    <Programmerrkt_Listinview>
        <active>true</active>
        <codePool>local</codePool>
    </Programmerrkt_Listinview>
</modules>
</config>

它使您的模块处于活动状态并保持其版本。

位置:app / code / local / Programmerrkt / Listinview / Block / Catalog / Product / List.php

 <?php

class Programmerrkt_Listinview_Block_Catalog_Product_List extends Mage_Catalog_Block_Product_List
{

    /**
     * Default Category that is going to load
     *
     * @var string
     */
    protected $_defaultCategoryId = '12';

    /**
     * Default toolbar block name
     *
     * @var string
     */
    protected $_defaultToolbarBlock = 'catalog/product_list_toolbar';

    /**
     * Product Collection
     *
     * @var Mage_Eav_Model_Entity_Collection_Abstract
     */
    protected $_productCollection;

    /**
     * Retrieve loaded category collection
     *
     * @return Mage_Eav_Model_Entity_Collection_Abstract
     */
    protected function _getProductCollection()
    {
        if (is_null($this->_productCollection)) {

            $layer = $this->getLayer();
            $category = Mage::getModel('catalog/category')->load($this->_defaultCategoryId);
            if ($category->getId()) {
                    $origCategory = $layer->getCurrentCategory();
                    $layer->setCurrentCategory($category);
                    $this->addModelTags($category);
            }

            $this->_productCollection = $layer->getProductCollection();

            $this->prepareSortableFieldsByCategory($layer->getCurrentCategory());

            if ($origCategory) {
                $layer->setCurrentCategory($origCategory);
            }
        }

        return $this->_productCollection;
    }

    /*
        Calling method from view
    */
    public function getLoadedProductCollection()
    {
        return $this->_getProductCollection();
    }
}

该文件定义了我们将在模块中使用的产品收集方法。由于我们需要根据特定类别加载列表,因此我们使用变量$_defaultCategoryId来定义所需的加载类别。

注意:此文件应扩展Mage_Catalog_Block_Product_List

地点:app/design/<your_package>/<your_theme>/layout/programmerrkt_listinview.xml

<layout>
<catalog_product_view>
       <reference name="content">
            <block type="programmerrkt_listinview/catalog_product_list" name="listinview_list" as="listinview_list" template="programmerrkt/listinview/catalog/product/list.phtml" />
       </reference>
</catalog_product_view>
</layout>

这是我们模块的布局定义。如您所见,它将在页面中添加我们的自定义块(用于显示模块内容)product view

地点:app/design/frontend/<your_package>/<your_theme>/template/programmerrkt/listinview/catalog/product/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="category-products">
    <?php echo $this->getToolbarHtml() ?>
    <?php // List mode ?>
    <?php if($this->getMode()!='grid'): ?>
    <?php $_iterator = 0; ?>
    <ol class="products-list" id="products-list">
    <?php foreach ($_productCollection as $_product): ?>
        <li class="item<?php if( ++$_iterator == sizeof($_productCollection) ): ?> last<?php endif; ?>">
            <?php // Product Image ?>
            <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(135); ?>" width="135" height="135" alt="<?php echo $this->stripTags($this->getImageLabel($_product, 'small_image'), null, true) ?>" /></a>
            <?php // Product description ?>
            <div class="product-shop">
                <div class="f-fix">
                    <?php $_productNameStripped = $this->stripTags($_product->getName(), null, true); ?>
                    <h2 class="product-name"><a href="<?php echo $_product->getProductUrl() ?>" title="<?php echo $_productNameStripped; ?>"><?php echo $_helper->productAttribute($_product, $_product->getName() , 'name'); ?></a></h2>
                    <?php if($_product->getRatingSummary()): ?>
                    <?php echo $this->getReviewsSummaryHtml($_product) ?>
                    <?php endif; ?>
                    <?php echo $this->getPriceHtml($_product, true) ?>
                    <?php if($_product->isSaleable()): ?>
                        <p><button type="button" title="<?php echo $this->__('Add to Cart') ?>" class="button btn-cart" onclick="setLocation('<?php echo $this->getAddToCartUrl($_product) ?>')"><span><span><?php echo $this->__('Add to Cart') ?></span></span></button></p>
                    <?php else: ?>
                        <p class="availability out-of-stock"><span><?php echo $this->__('Out of stock') ?></span></p>
                    <?php endif; ?>
                    <div class="desc std">
                        <?php echo $_helper->productAttribute($_product, $_product->getShortDescription(), 'short_description') ?>
                        <a href="<?php echo $_product->getProductUrl() ?>" title="<?php echo $_productNameStripped ?>" class="link-learn"><?php echo $this->__('Learn More') ?></a>
                    </div>
                    <ul class="add-to-links">
                        <?php if ($this->helper('wishlist')->isAllow()) : ?>
                            <li><a href="<?php echo $this->helper('wishlist')->getAddUrl($_product) ?>" class="link-wishlist"><?php echo $this->__('Add to Wishlist') ?></a></li>
                        <?php endif; ?>
                        <?php if($_compareUrl=$this->getAddToCompareUrl($_product)): ?>
                            <li><span class="separator">|</span> <a href="<?php echo $_compareUrl ?>" class="link-compare"><?php echo $this->__('Add to Compare') ?></a></li>
                        <?php endif; ?>
                    </ul>
                </div>
            </div>
        </li>
    <?php endforeach; ?>
    </ol>
    <script type="text/javascript">decorateList('products-list', 'none-recursive')</script>

    <?php else: ?>

    <?php // Grid Mode ?>

    <?php $_collectionSize = $_productCollection->count() ?>
    <?php $_columnCount = $this->getColumnCount(); ?>
    <?php $i=0; foreach ($_productCollection as $_product): ?>
        <?php if ($i++%$_columnCount==0): ?>
        <ul class="products-grid">
        <?php endif ?>
            <li class="item<?php if(($i-1)%$_columnCount==0): ?> first<?php elseif($i%$_columnCount==0): ?> last<?php endif; ?>">
                <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(135); ?>" width="135" height="135" alt="<?php echo $this->stripTags($this->getImageLabel($_product, 'small_image'), null, true) ?>" /></a>
                <h2 class="product-name"><a href="<?php echo $_product->getProductUrl() ?>" title="<?php echo $this->stripTags($_product->getName(), null, true) ?>"><?php echo $_helper->productAttribute($_product, $_product->getName(), 'name') ?></a></h2>
                <?php if($_product->getRatingSummary()): ?>
                <?php echo $this->getReviewsSummaryHtml($_product, 'short') ?>
                <?php endif; ?>
                <?php echo $this->getPriceHtml($_product, true) ?>
                <div class="actions">
                    <?php if($_product->isSaleable()): ?>
                        <button type="button" title="<?php echo $this->__('Add to Cart') ?>" class="button btn-cart" onclick="setLocation('<?php echo $this->getAddToCartUrl($_product) ?>')"><span><span><?php echo $this->__('Add to Cart') ?></span></span></button>
                    <?php else: ?>
                        <p class="availability out-of-stock"><span><?php echo $this->__('Out of stock') ?></span></p>
                    <?php endif; ?>
                    <ul class="add-to-links">
                        <?php if ($this->helper('wishlist')->isAllow()) : ?>
                            <li><a href="<?php echo $this->helper('wishlist')->getAddUrl($_product) ?>" class="link-wishlist"><?php echo $this->__('Add to Wishlist') ?></a></li>
                        <?php endif; ?>
                        <?php if($_compareUrl=$this->getAddToCompareUrl($_product)): ?>
                            <li><span class="separator">|</span> <a href="<?php echo $_compareUrl ?>" class="link-compare"><?php echo $this->__('Add to Compare') ?></a></li>
                        <?php endif; ?>
                    </ul>
                </div>
            </li>
        <?php if ($i%$_columnCount==0 || $i==$_collectionSize): ?>
        </ul>
        <?php endif ?>
        <?php endforeach ?>
        <script type="text/javascript">decorateGeneric($$('ul.products-grid'), ['odd','even','first','last'])</script>
    <?php endif; ?>

    <div class="toolbar-bottom">
        <?php echo $this->getToolbarHtml() ?>
    </div>
</div>
<?php endif; ?>

该内容实际上是在前端渲染的。实际上,我只是复制了内容app/design/frontend/base/default/template/catalog/product/list.phtml并将其粘贴到此文件中。由于我们根据需要通过控制器文件更改了加载产品集合的方法,因此它将在product view页面底部显示所需类别中的所有产品现在,您可以对此phtml文件进行任何更改,以获取所需的视图。

在此处找到此模块:https : //github.com/progammer-rkt/Magent-Modules/tree/master/product-list-in-prdouct-view我希望它会有所帮助。谢谢

Programmer_rkt

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Magento:如何在产品列表后添加静态块

如何在产品中添加产品引用?

如何在magento中获取当前产品的类别名称(在产品详细信息页面上)

Magento-如何在产品中创建不同的重量价格下降

如何在产品的简短描述中添加公共段落。Magento 1

如何在产品环境中强制使用https,但在产品环境中使用http?

如何在产品服务器中调试Angular?

如何在产品显示页面中呈现Enquery表单

如何在产品内的要约中正确标记产品?

magento在产品视图页面的产品选项卡之后添加列

在Magento中,我无法在产品中上传图片

如何在woocommerce中按产品ID获取产品列表

当所有标签都在产品表中时,如何在 Laravel 中显示产品表中的所有标签?

如何在产品中(特别是在可变产品中)扮演不同角色,显示不同的价格?

我们如何在产品页面中显示每个子类别的一种产品

在Magento 2中,在产品详细信息页面上显示最近查看的产品

在产品列表销售报告中获取SKU

如何在Magento 1.7.0.2中以编程方式调用产品描述?

如何在产品配置文件中的jhipster应用上启用swagger ui?

如何在产品控制器中创建我的cart_item的新实例

如何在产品表中显示用户名?API laravel 8 使用 eloquent

如何在产品页面上显示下载链接?

如何在产品标题末尾添加“...”,php echo

如何在产品页面上显示shopify安全徽标?

如何在产品页面添加自定义选择?

Kademi - 如何在产品页面上设置规范

如何获取magento中数量少于10的产品列表

Magento扩展:在产品视图中添加自定义模块

如何在Django模板中制作水平产品列表视图