1

对于我的 Magento 开发之一,我需要编辑产品自定义选项选项卡的 HTML。对于每个自定义选项,您都会获得一个带有类option-box的 div 。

我需要在这个类中添加选项的 sku 以便识别它。

我发现app/design/adminhtml/default/default/template/catalog/product/edit/options/option.phtml。该文件似乎使用 javascript 通过模板系统加载我存储的选项。

我需要找到解析器在哪里以及它是如何工作的。我的主要问题是:我{{sku}}在模板中添加了一个,但是对于下拉类型的自定义选项,我无法在我的 html 中获取 sku,不知道为什么。

我尝试了一些事情: - 加载选项时,我在 getOptionValues 函数中的每种情况下都添加了 SKU,但选项卡没有打开,我没有收到错误... - 加载选项时,我添加了一个属性SKU 在它的getOptionValues功能中,我替换{{sku}}{{class}},但选项卡没有打开,我也没有错误。

我需要找到解析器在哪里,以确定是否可以编辑它以接受属性。

感谢您的帮助。

PS:getOptionValues功能在Mage_Adminhtml_Block_Catalog_Product_Edit_Tab_Options_Option

4

2 回答 2

2

您不需要更改解析器。它完全按照您的预期工作。

您遇到的问题是产品选项没有自己的 sku。Sku 在选项值上设置,如果自定义选项具有单个值,它会保存在 catalog_product_option 的 sku 列中,您可以在 getOptionValues 函数中使用

$value['class'] = $this->htmlEscape($_value->getSku());

但如果是下拉列表或多选 sku,则未在该表中设置(设置为 NULL),而是在 catalog_product_option_type_value 中设置(每个选项值一个 sku)。

如果您想在带有类选项框的 div 中拥有所有 sku-s,则必须执行以下操作:

在 getOptionValues 函数中:

//...
$value = array();
$value[ 'skus' ] = $this->htmlEscape($option->getSku());
//...
//code for select and multi-select
if ($option->getGroupByType() == Mage_Catalog_Model_Product_Option::OPTION_GROUP_SELECT) {
    foreach ($option->getValues() as $_value) {
       $value[ 'skus' ] .= ' ' . $this->htmlEscape($_value->getSku());
    //...

在 option.phtml 中:

var firstStepTemplate = '<div class="option-box {{skus}}" id="option_{{id}}">'+

编辑: 话虽如此,我不建议您以这种方式使用 sku。首先,可以更改(甚至不存在)选项值的 sku。第二个原因是选项和选项值由它们的 ID 唯一标识。第三个原因是将 skus 放入类属性(如示例中)不会是要走的路(也许添加你自己的 data-my_attribute="{{skus}}" 会更好一点,但会有对于单个选项有太多选项值仍然是一个问题)。

我建议您不要更改 option.php/.phtml 中的任何内容(如果可能,甚至不要使用您自己的派生类),或者至少只在 phtml 模板中添加您的类值,然后您将在外部 javascript 中使用文件,您可以在其中动态更改 html 结构。

关于空白页,我想说您在更改 php 或 javascript 代码时犯了一个错误,而不是为模板提供了错误命名的值。无论我如何命名变量,只要它们具有正确的 javascript 变量 sintax,我都没有注意到任何问题。

于 2013-01-03T12:59:41.093 回答
0

我走错了路。这种开发我的模块的方式是不正确的。我重新考虑并在 phtml 文件中完成了我所有的业务,并且我做到了。

感谢您的帮助。

于 2013-01-15T14:23:12.880 回答