gpt4 book ai didi

Magento:在页脚中显示特定类别的产品

转载 作者:行者123 更新时间:2023-12-04 00:47:39 25 4
gpt4 key购买 nike

我正在为页脚构建一个“本月产品”块。它应该加载一个类别的产品并显示第一个。

这是我的模板文件 custom/featured-product.phtml :

<?php $_productCollection = $this->getLoadedProductCollection() ?>

<div class="featured-product">
<h2><?php echo $this->__('Product of the Month') ?></h2>

<?php foreach ($_productCollection as $_product): ?>
<div class="item">
<a class="product-image" href="<?php echo $_product->getProductUrl() ?>">
<img src="<?php echo $this->helper('catalog/image')->init($_product, 'small_image')->resize(200); ?>" alt="<?php echo $this->htmlEscape($this->getImageLabel($_product, 'small_image')) ?>" />
</a>

<a class="product-name" href="<?php echo $_product->getProductUrl() ?>"><?php echo $this->htmlEscape($_product->getName()) ?></a>

<?php echo $this->getPriceHtml($_product, true) ?>
</div>

<?php
// Note: Exit after first product.
break;
?>
<?php endforeach ?>
</div>

它只是 Magento 的产品列表模板的简化版: catalog/product/list.phtml
工作

在 CMS 页面中嵌入块时,它工作正常。示例:
{{block type="catalog/product_list" category_id="13" template="custom/featured-product.phtml" }}

不工作

通过 local.xml 嵌入块时,它失败了。返回正确的标记但未加载指定的类别。而是加载了一组随机(我不知道它们是如何选择的)产品集。

我在 local.xml 中的代码:
<default>
<reference name="footer">
<block type="catalog/product_list" name="custom.featuredProduct" as="product_of_the_month" category_id="13" template="custom/featured-product.phtml" />
</reference>
</default>

为了完整起见,我在 page/html/footer.phtml 中显式地渲染了块像这样:
<?php echo $this->getChildHtml('product_of_the_month') ?>

有什么想法吗?

我最好的猜测是我的 local.xml不正确。我需要加载父块吗?

[更新]

我的原始代码使产品页面崩溃。解决方法不是将代码过多地基于 Magento 核心文件: catalog/product/list.phtml .特别避免这一行:
<?php $_productCollection = $this->getLoadedProductCollection() ?>

[解决方案]

包含在 CMS Pages 和 LayoutXML 中使用的示例的工作版本包含在此处:
https://stackoverflow.com/a/12288000/1497746

最佳答案

使用 Alan Storm 的建议找到了一个可行的解决方案。

/template/custom/featured-product.phtml

<?php
$_categoryId = $this->getCategoryId();

$_productCollection = Mage::getModel('catalog/category')->load($_categoryId)
->getProductCollection()
->addAttributeToSelect('*')
->addAttributeToFilter('status', 1)
->addAttributeToFilter('visibility', 4)
->setOrder('price', 'ASC');
?>

<div class="featured-product">
<h2><?php echo $this->__( $this->getLabel() ); ?></h2>

<?php foreach ($_productCollection as $_product): ?>
<div class="item">
<a class="product-image" href="<?php echo $_product->getProductUrl() ?>">
<img src="<?php echo $this->helper('catalog/image')->init($_product, 'small_image')->resize(200); ?>" alt="<?php echo $this->htmlEscape($this->getImageLabel($_product, 'small_image')) ?>" />
</a>

<a class="product-name" href="<?php echo $_product->getProductUrl() ?>"><?php echo $this->htmlEscape($_product->getName()) ?></a>

<?php echo $this->getPriceHtml($_product, true) ?>
</div>

<?php
// Note: Exit after first product.
break;
?>
<?php endforeach ?>
</div>

简而言之,集合是手动生成的,而不是接收集合(就像我最初的尝试那样):
<?php $_productCollection = $this->getLoadedProductCollection() ?>
<?php $_collectionSize = $_productCollection->count(); ?>

在 CMS 页面中使用:
{{block type="core/template" category_id="13" label="Product of the Month" template="custom/featured-product.phtml" }}

在模板中使用:

/layout/local.xml
<default>
<reference name="footer">
<block type="core/template" name="custom.featuredProduct" as="featured_product" template="custom/featured-product.phtml">
<action method="setData"><key>category_id</key><value>13</value></action>
<action method="setData"><key>label</key><value>Product of the Month</value></action>
</block>
</reference>
</default>

/template/page/html/footer.phtml
<?php echo $this->getChildHtml('featured_product') ?>

有用的资源:

如何获得产品系列:
  • http://overlycaffeinated.com/2011/02/get-all-sale-products-from-a-category-in-magento/
  • Magento products by categories

  • 使用魔法 getter/setter:
  • https://stackoverflow.com/a/4008251/1497746
  • https://stackoverflow.com/a/4006374/1497746
  • http://www.magestore.com/blog/2012/02/29/magento-cetificate-pass-variables-from-layout-to-block/
  • 关于Magento:在页脚中显示特定类别的产品,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12285216/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com