Heyo,一直在magento主题工作了一段时间(...和我对系统的理解缓慢但稳步增长)。我需要尽快开始制作一些自定义模块,所以我从这个小项目开始着手我的方向:Magento - 自定义模块结构
我发现了一小段代码来管理我一直在复制和粘贴的特定任务模板文件:
<?php
$ids = $_product->getCategoryIds();
$cat = Mage::getModel('catalog/category')->load($ids[0]);
$isFF = false;
foreach ($ids as $key=>$val) {
$cat = Mage::getModel('catalog/category')->load($val);
$name = $cat->getName();
if ($name === 'Fast Fulfillment') {
$isFF = true;
}
}
if ($isFF) { echo '<span class="ff-logo"></span>'; }
?>
很简单。我只是检查产品是否属于特定类别,如果是,则生成元素。 (我知道大约有5种可行的方式来做这件事......这是我一起去的)。
每次显示产品块时,我都需要测试它,到目前为止,它一直在复制此代码以使其正常工作。它确实有效,但是是回传(我不应该将逻辑放入视图层)。
好了 - 所以,让我们做一个简单的模块共享功能:
本地/ WACI/ProductFlag的/ etc/config.xml中
<config>
<modules>
<WACI_ProductFlag>
<version>0.1.0</version>
</WACI_ProductFlag>
</modules>
<global>
<blocks>
<WACI_ProductFlag>
<class>WACI_ProductFlag_Block_View</class>
</WACI_ProductFlag>
</blocks>
</global>
</config>
等/模块/ WACI_All.xml现在
<config>
<modules>
<WACI_CustomPageLayouts>
<codePool>local</codePool>
<active>true</active>
</WACI_CustomPageLayouts>
</modules>
<modules>
<WACI_ProductFlag>
<codePool>local</codePool>
<active>true</active>
</WACI_ProductFlag>
</modules>
</config>
,为类......我真的不知道,如果一个Block
Ø r a Helper
是适当的。我去了Block
,但 - idk ...我可能是错的(教程这个东西差异很大)。
本地/ WACI/ProductFlag /座/ View.php
<?php
/**
* WACI
*
* @codepool Local
* @category View
* @package WACI
* @module ProductFlag
*/
class WACI_ProductFlag_Block_View extends Mage_Core_Block_Template
{
private $_focus;
private $_isFF = false;
public function getIsFF($product){
$this->_focus = "FF";
$isFF = false;
$ids = $product->getCategoryIds();
$cat = Mage::getModel('catalog/category')->load($ids[0]);
foreach ($ids as $key=>$val) {
$cat = Mage::getModel('catalog/category')->load($val);
$name = $cat->getName();
if ($name === 'Fast Fulfillment') {
$isFF = true;
}
}
}
protected function _toHtml(){
$html = parent::_toHtml();
if ($this->_focus === "FF") {
if ($this->_isFF){
$html .= '<span class="ff-logo"></span>';
}
}
return $html;
}
}
?>
希望它清楚,我只希望输出字符串基于任何特定产品的输入。我是否应该重写_toHtml()
以提供字符串?再次。也许不是...
我引用块:
<catalog_product_view>
<reference name="content">
<reference name="product.info">
<block type="WACI/ProductFlag" name="product.flag" as="productFlag" output="toHtml" />...
...我不太清楚,如果这实例化此类?我不这么认为。我不知道如何在我的product/view/media.phtml中解决它,因为我需要使用参数调用方法。
我不认为我需要一个模板文件,因为我只是输出一个字符串,但我不认为我没有看到没有关联模板的块模块。也许辅助班是适当的呢?
无论如何,这是不workin。
我得到一个致命的错误,说我的媒体类没有getIsFF()
方法(不奇怪),或者什么都没有出现。我的配置文件是正确的,但这就是它。
Jebus。 我都转过身。
与法师技能的人可以澄清这个简单的问题,并指出我在正确的方向吗?
干杯!
如果您不介意,请发布确切的错误,先生。 (With stacktrace) –
您好 - 谢谢您的回复。在我离开工作之前,我终于在昨晚得到了这份工作。做了一个简单的帮手课,我(最终)能够工作。不知道我的架构是否“正确” - 感觉有点冒险。将在星期一发布我想出的内容。 ...还要通过magento U视频。可能有助于加快这一进程。 – Bosworth99