埋め込みウィジェットを実装しようとしています。管理者は、このウィジェットを構成して、WYSIWYGエディター内に埋め込むことができます。多くの構成オプションのうちの2つは、フロントエンドに表示される製品のリストとカテゴリーのリストです。
「 adminhtml/catalog_product_widget_chooser」と「adminhtml/catalog_category_widget_chooser 」でこの選択を許可したいと思います。Webで入手できるまばらなドキュメントを使用してこれらのウィジェットを実装しようとしましたが、1つの製品を選択するか、1つのカテゴリを選択するための実装しか達成できませんでした。複数選択動作が必要です。
私が見る限り、現在の実装では複数選択の可能性は許可されていません。クラスとgrid.phtmlテンプレートの両方のコードを確認しましたが、コードが正しく記述されておらず、現在の使用目的を超えて拡張できないことがわかりました。たとえば、これは、ウィジェットパラメータのヘルパーブロックを初期化して、複数の選択を許可する方法です。
<helper_block>
<type>adminhtml/catalog_product_widget_chooser</type>
<data>
<button translate="open">
<open>Select Products...</open>
</button>
<use_massaction>1</use_massaction>
</data>
</helper_block>
ただし、製品チューザーは、コードのこの部分で大量のアクションなしで使用できるようにハードコードされています。
public function prepareElementHtml(Varien_Data_Form_Element_Abstract $element)
{
$uniqId = Mage::helper('core')->uniqHash($element->getId());
$sourceUrl = $this->getUrl('*/catalog_product_widget/chooser', array(
'uniq_id' => $uniqId,
'use_massaction' => false,
));
...
また、複数選択を確認するための何らかのボタンがあるはずのgrid.phtmlテンプレートには、「検索」ボタンと「フィルターのリセット」ボタンが表示されているだけです。また、別のボタンを追加する処理はありません。たとえば、ボタンhtmlの印刷を担当するデフォルトのコードは次のとおりです。
public function getMainButtonsHtml()
{
$html = '';
if($this->getFilterVisibility()){
$html.= $this->getResetFilterButtonHtml();
$html.= $this->getSearchButtonHtml();
}
return $html;
}
デフォルトでは、これら2つのボタンのみが印刷されます。
それで、私は上記の2つの実装に基づいて独自の実装を開始しましたが、それは醜くなり、コピーパスタの保守不可能な混乱に終わる可能性があります。そして、私は原則として、物事が醜く見え始めたら、私は何か間違ったことをしていると考えています。
では、グリッドウィジェットを使用して、ウィジェット構成画面に複数の製品と複数のカテゴリの選択を実装する簡単な方法はありますか?