Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从块Magento操作模板_Magento - Fatal编程技术网

从块Magento操作模板

从块Magento操作模板,magento,Magento,我试图更改目录页面中AddtoCart按钮的行为,并仅在特定情况下显示它。我正在做的是添加一个自定义模块,用于更新布局并用我自己的文件替换Product/List.phtml。这种方法在发布自定义模块时不是很灵活,因为几乎所有用户都将使用不同的模板文件,并且他们必须将我的模板文件与他们的模板文件合并 因此,我的问题是,我可以从块操作phtml吗?也许可以覆盖*Mage\u Catalog\u block\u Product\u List*并在*BeforeToHtml*函数中更改模板,这是一种更

我试图更改目录页面中AddtoCart按钮的行为,并仅在特定情况下显示它。我正在做的是添加一个自定义模块,用于更新布局并用我自己的文件替换Product/List.phtml。这种方法在发布自定义模块时不是很灵活,因为几乎所有用户都将使用不同的模板文件,并且他们必须将我的模板文件与他们的模板文件合并


因此,我的问题是,我可以从块操作phtml吗?也许可以覆盖*Mage\u Catalog\u block\u Product\u List*并在*BeforeToHtml*函数中更改模板,这是一种更好的方法吗?是否可行?

首先让我说,Magento在这方面缺乏一点灵活性(在渲染到模板时)。如果我对您的理解正确,您将决定该产品是否畅销:

  • 您可以在之后添加一个事件以查看产品是否畅销。通过这种方式,您可以在系统中设置产品是否可供销售。当您在事件中更改可销售对象的值时,它将更改为缺货消息。也许这就是您想要的(但问题是它被用在
    if/else
    语句中-它要么可以添加到购物车中,要么缺货(请参见下面的代码)
  • 然后,您可以使用翻译文件将缺货的字符串转换为您想要的字符串(有点像黑客)
  • 试图覆盖
    Mage\u Catalog\u Block\u Product\u List
    的问题是,直到
    \u toHtml
    方法,模板文件才被包含。您可以覆盖它,并调用
    父项::\u toHtml()
    在代码块的开头。但是,删除“添加到购物车”按钮将涉及一些非常困难的正则表达式
这是块代码。它确实有点粘

<?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; ?>