1

我可以看到Mage_Adminhtml_Block_Catalog_Product_Helper_Form_Gallery_Content::getImagesJson()app\design\adminhtml\default\default\template\catalog\product\helper\gallery.phtml负责通过Product.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

答案就在我面前。in 中的media_gallery属性eav_attribute定义Mage_Catalog_Model_Product_Attribute_Backend_Media为其执行afterLoad魔术设置器的后端类。

仍然不确定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();
}

它清楚地将 for 设置element$content$this这是Mage_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 回答