我可以看到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) {
因此某些东西正在填充该块的CCD_ 6属性。
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所寻找的结构相匹配,但我仍然有点困惑于属性与渲染块的绑定位置。
我想我需要一张图表来让这张纠结的网在我的脑海中保持清晰!
谢谢,
Jonathan
你说;
似乎是由
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();
}
它清楚地将$content
的element
设置为$this
,即Mage_Adminhtml_Block_Catalog_Product_Helper_Form_Gallery
对象。
答案就在我面前。eav_attribute
中的media_gallery
属性将Mage_Catalog_Model_Product_Attribute_Backend_Media
定义为其后端类,用于执行afterLoad
魔术设置器。
仍然不确定Mage_Adminhtml_Block_Catalog_Product_Helper_Form_Gallery
在产品编辑屏幕选项卡上的位置,有人知道吗?
仍然不确定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
我希望它能有所帮助:)