2011-11-25 16 views
0

Magentoサイトには、カスタムオプションが1つ、テキストが1つ、ファイルアップロードが1つ、ドロップダウンリストが4つの製品があります。Magentoカスタムオプションを個別に表示する方法

サイトのデザインによって、これらのオプションを製品のビューページ全体に表示する必要があり、すべてのグループではないことが示されています。

単一のカスタムオプションのHTMLを返すために呼び出せる関数はありますか?

答えて

0

不正行為と同じようにこれを行う方法があります。

ショップではjavascriptが必要です。on dom:loadedイベントを使用して、ページがレンダリングされる前にPrototypeでできることはたくさんあります。カスタムオプションは、DOM内の任意の場所に貼り付けることができます。また、フォーム要素を非表示にして、フォーム要素を更新するページに別の場所を配置することもできます。カラー名をキャプチャする必要があるが、すべての製品に色の濃い色をつけたくない場合は、これを行うことができます。テキストボックスは製品に貼り付けることができ、コントロールはコントロールに書き込むことができます。

いくつかの$$(「不正行為」)のメリットは、「設計上の考慮」についてMagentoコードを深く考える必要がないことです。

+0

おかげで、私は、cを終わりました大きな時間を加熱する。私はMagentoが私に与えたページをレンダリングし、ソースコードを取り出し、ハードコードされたバージョンのページを構築しました。楽しい経験ではなく、私は大量の技術的負債をその過程で抱えています。そのページの次の修正案を楽しみにしていません! – John

0

グループについて正しく分かりませんでした。カテゴリーを意味するならば;

この属性セットに表示する属性を含める新しい属性セットを作成します。その後、製品を作成するときは、デフォルトの代わりにこの属性セットを選択します。したがって、指定された製品ではこの属性のみが使用可能になります。

(「attribute_code」を変更することを忘れないでください)、次のコードスニペットを試してみてください

は、あなたが、その場合には、お使いの製品ページに複数選択リストを表示したい、としましょう:

$selectArray = $this->getProduct()->getAttributeText('YOUR_ATTRIBUTE_CODE'); 
$endOfArray = end($selectArray); 

echo "<ul class='set-some-class'>"; 
foreach($selectArray as $selectionItem) { 
    echo "<li> . $selectionItem"; 
    if($selectionItem != $endOfArray) { 
    echo "</li>\n"; 
    } else { 
    echo "</ul>"; 
    } 
} 
その場合の製品ビューページ以外のページについては、

は:

$attribute = Mage::getModel('catalog/product')->getAttribute('catalog_product', 'YOUR_ATTRIBUTE_CODE'); 
$options = $attribute->getSource()->getAllOptions(true, true); 
$lastOption = end($options); 

echo "<ul class='set-some-class'"; 
foreach($options as $option) { 
    echo $option['label']; 
    if($option != $lastOption) { 
    echo "<li>\n"; 
    } else { 
    echo "</ul>"; 
    } 
} 
+0

製品のカスタムオプションが返されると、グループ化され、すべてが1つの

ブロック内にあります。私が構築しているサイトのデザインには、ページ全体に広がるカスタムオプションが必要です。私の質問は、カスタムオプションを個別に呼び出すことで、製品ページの1つのブロック/グループ内で一度にすべてではなく個別にレンダリングすることができます。 – John

+0

@Johnは上記のコードスニペットを試してください。 –