0

我创建了一个自定义模块,将一些信息附加到每个产品。现在,我想在产品名称下的目录页面上显示自定义信息。

这是向您展示我正在尝试做的事情的快照。

目录页面

这是我的布局 xml

<?xml version="1.0"?>
<!--
/**
 * Custom module

 */
-->
<layout>
    <catalog_category_default translate="label">   
        <reference name="name.after">
            <block type="catalog/product_list" name="custom_content" template="custommodule/default.phtml"/>
        </reference>              
    </catalog_category_default>
</layout>

但这不起作用。是否可以在不修改任何 .phtml 文件的情况下以产品名称呈现自定义内容?

非常感谢!

4

2 回答 2

0

你能试一下吗 :

<catalog_categoryd_default>
 <reference name="content">
  <block type="catalog/product_list" name="custom_content" template="custommodule/default.phtml" after="nameofTheNameBlock"/>
</reference>
</catalog_categoryd_default>
于 2015-11-10T11:40:05.300 回答
0

我知道这是一个快速而肮脏的 hack,更勤奋的 magento 开发人员会嘲笑它,但它会给你你想要的结果,而且你很容易实现

“正确”的解决方案可能涉及编写一个自定义块并在您的 app/design/frontend/YourPackage/YourTheme/template/product/list.phtml 的 foreach 循环中调用它 - 但是,我可以为您提供一个快速而肮脏的解决方法不应该对你征税太多。通过滥用产品属性系统,您可以很容易地做到这一点。

首先在您的产品使用的属性集中创建一个新的产品属性。我们将使用它来存储我们想要在您的产品名称和价格之间注入的自定义内容。在本示例中,我们将其称为 customcontent。确保将属性的“前端产品视图页面上的可见”值设置为“否”。

编辑您的产品并将这个新属性设置为您想要的自定义内容 - 您也可以在这里使用 html 标签。默认情况下,产品属性(出于某种原因)任意限制为 30 个字符,但如果您需要它来保存更长的字符串,您可以通过编辑 app/code/mage/eav/model/entity/Attribute.php 和更改 ATTRIBUTE_CODE_MAX_LENGTH 的值。

然后在您的 app/design/frontend/YourPackage/YourTheme/template/product/list.phtml 并在第 49 行附近的某处找到以下代码行

<?php foreach ($_productCollection as $_product): ?>

在它之后直接插入以下内容:

<?php  $_customcontent =$_product->getResource()->getAttribute('customcontent')->getFrontend()->getValue($_product);?>

您现在已将产品 customcontent 属性中的字符串存储在名为 $_customcontent 的变量中

因此,如果您在 list.phtml 中找到以下行

<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 echo $_customcontent ?>

我知道这可能代表了一个非常非正统的解决方案,但它确实有效并且可以很快实现,并且不需要您了解有关编写自己的自定义块的任何内容。

于 2015-11-10T11:39:33.060 回答