1

Magento開発の1つとして、製品のカスタムオプションタブの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 に設定されます (オプション値ごとに 1 つの SKU)。

クラスオプションボックスを使用してすべての sku を div に含める場合は、次のようにする必要があります。

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 を変更できます (または存在しなくてもかまいません)。2 つ目の理由は、オプションとオプション値が ID によって一意に識別されることです。そして 3 番目の理由は、(例のように) クラス属性に sku を配置するのは適切ではないということです (おそらく、独自の data-my_attribute="{{skus}}" を追加する方が少し良いですが、 1 つのオプションに対してあまりにも多くのオプション値を持つことは依然として問題です)。

option.php/.phtml で何も変更しないことをお勧めします (可能であれば、独自の派生クラスを使用することさえありません)、または少なくとも phtml テンプレートにクラス値を追加するだけで、それを外部 JavaScript で使用することをお勧めします。その場でhtml構造を変更できる場所からファイル。

空白のページについては、間違った名前の値をテンプレートに提供したのではなく、php または javascript コードの変更で間違いを犯したと思います。正しいjavascript変数sintaxを持っている限り、変数にどのように名前を付けても問題に気づきませんでした。

于 2013-01-03T12:59:41.093 に答える
0

私は間違った道を進んでいました。モジュールを開発するこの方法は正しくありませんでした。私はそれを再考し、すべてのビジネスを phtml ファイルで行いました。

ご協力ありがとうございました。

于 2013-01-15T14:23:12.880 に答える