我可以看到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()
实例化,但是没有在块上设置任何属性。
我可以看到Mage_Catalog_Model_Product_Attribute_Backend_Media::afterLoad()
使用与Product.Gallery
Javascript正在寻找的结构相匹配的数组填充该属性,但我仍然对于属性绑定的位置感到有些迷惑渲染块。
我想我需要一个图表来保持这个纠结的网络直接在我脑海中!
谢谢,
乔纳森
答案 0 :(得分:1)
答案就在我面前。 media_gallery
中的eav_attribute
属性将Mage_Catalog_Model_Product_Attribute_Backend_Media
定义为执行afterLoad
魔术设置器的后端类。
仍然不确定Mage_Adminhtml_Block_Catalog_Product_Helper_Form_Gallery
附加到产品编辑屏幕标签的位置,有人都知道吗?
答案 1 :(得分: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();
}
它明确地将element
的{{1}}设置为$content
,即$this
个对象。
答案 2 :(得分: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-module-backend
我希望它有帮助:)