1

私はそれを見ることができ、プロトタイプクラス を介して画像データをブラウザに入れる責任がMage_Adminhtml_Block_Catalog_Product_Helper_Form_Gallery_Content::getImagesJson()あります。app\design\adminhtml\default\default\template\catalog\product\helper\gallery.phtmlProduct.Gallery

Mage_Adminhtml_Block_Catalog_Product_Helper_Form_Gallery_Contentただし、画像コレクションがブロックのどこに設定されているかを追跡することはできません。コントローラーまたはレイアウトのどこかにある魔法のセッターを介してそれを想定していますが、それを追跡することはできません。

Mage_Adminhtml_Block_Catalog_Product_Helper_Form_Gallery_Content::getImagesJson()もっている

$value = $this->getElement()->getValue();
        if(count($value['images'])>0) {
            foreach ($value['images'] as &$image) {

elementそのため、そのブロックの属性に何かが入力されています。

Mage_Adminhtml_Block_Catalog_Product_Helper_Form_Gallery_Contentによってインスタンス化されてMage_Adminhtml_Block_Catalog_Product_Helper_Form_Gallery::getContentHtml()いるようですが、ブロックに属性が設定されていません。

これにより、 Javascriptが探してMage_Catalog_Model_Product_Attribute_Backend_Media::afterLoad()いる構造に一致する配列が属性に入力されていることがわかりますが、属性がレンダリングブロックに関連付けられている場所についてはまだ少し不思議です。Product.Gallery

このもつれたウェブを頭の中でまっすぐに保つための図が必要だと思います!

ありがとう、
ジョナサン

4

3 に答える 3

1

答えは目の前にありました。のmedia_gallery属性は、マジック セッター を実行するバックエンド クラスとしてeav_attribute定義されます。Mage_Catalog_Model_Product_Attribute_Backend_MediaafterLoad

製品編集画面のタブのどこに接続されるのかまだ正確にはMage_Adminhtml_Block_Catalog_Product_Helper_Form_Galleryわかりませんが、誰か知っていますか?

于 2011-06-22T09:43:27.887 に答える
1

あなたは言う;

...によってインスタンス化されてMage_Adminhtml_Block_Catalog_Product_Helper_Form_Gallery::getContentHtml()いるようですが、ブロックに属性が設定されていません。

しかし、getContentHtml()次のようになります。

/**
 * Prepares content block
 *
 * @return string
 */
public function getContentHtml()
{

    /* @var $content Mage_Adminhtml_Block_Catalog_Product_Helper_Form_Gallery_Content */
    $content = Mage::getSingleton('core/layout')
        ->createBlock('adminhtml/catalog_product_helper_form_gallery_content');

    $content->setId($this->getHtmlId() . '_content')
        ->setElement($this);
    return $content->toHtml();
}

オブジェクトであるelementfor$contentを toに明確に設定します。$thisMage_Adminhtml_Block_Catalog_Product_Helper_Form_Gallery

于 2011-06-22T09:45:35.990 に答える
0

Mage_Adminhtml_Block_Catalog_Product_Helper_Form_Gallery が製品編集画面のタブに接続される場所がまだ正確にはわかりません。

これが行われていることがわかりましたMage_Adminhtml_Block_Catalog_Product_Edit_Tabs

74 行目を見てください。

            $this->addTab('group_'.$group->getId(), array(
                'label'     => Mage::helper('catalog')->__($group->getAttributeGroupName()),
                'content'   => $this->_translateHtml($this->getLayout()->createBlock($this->getAttributeTabBlock(),
                    'adminhtml.catalog.product.edit.tab.attributes')->setGroup($group)
                        ->setGroupAttributes($attributes)
                        ->toHtml()),
            ));

このコードをコメントアウトすると、[画像] タブが表示されなくなります。

このギャラリーには多くの「魔法」があります。ここで別のディスカッションを開きました: https://stackoverflow.com/questions/11740995/how-to-include-magento-image-gallery-in-a-custom -モジュール-バックエンド

私はそれが役立つことを願っています:)

于 2012-07-31T14:16:19.793 に答える