我正在尝试编写一个新的复选框,以附加到“禁用”旁边的图片库中的列。其行为与在数据库中输入时的“禁用/排除” =是/否相同。
这个想法是为图片库中的每个图片添加一个“用作页面”复选框。目的是制作一个JS轮播,将所有图片都选中为“用作页面”。
我已经完成了一些事情,但是我不能:
更新数据库中的数据=>将“页面”字段设置为0或1(请参见下文)
从数据库中检索数据,然后根据“页面”字段选中/取消选中复选框。
->所以我的问题是:如何更新数据库中的数据并在复选框中进行检索(0或1,取决于字段值)?
感谢大家的宝贵帮助。
这是我所做的(1.4.1.0):
1-更新表catalog_product_entity_media_gallery_value
添加了一个新字段(名称为“ page”):
页面tinyint(4)未签名否0
2-对类Mage_Catalog_Model_Product_Attribute_Backend_Media进行了以下更改
49行:
从
$localAttributes = array('label', 'position', 'disabled');
至
$localAttributes = array('label', 'position', 'disabled', 'page');
223行:
从
$data['disabled'] = (int) $image['disabled'];
至
$data['disabled'] = (int) $image['disabled'];
$data['page'] = (int) $image['page'];
301线
从
$mediaGalleryData['images'][] = array(
'file' => $fileName,
'position' => $position,
'label' => '',
'disabled' => (int) $exclude
);
至
$mediaGalleryData['images'][] = array(
'file' => $fileName,
'position' => $position,
'label' => '',
'disabled' => (int) $exclude,
'page' => (int) $exclude,
);
328线
从
$fieldsMap = array(
'label' => 'label',
'position' => 'position',
'disabled' => 'disabled',
'exclude' => 'disabled',
);
至
$fieldsMap = array(
'label' => 'label',
'position' => 'position',
'disabled' => 'disabled',
'exclude' => 'disabled',
'page' => 'disabled',
);
3-对模板adminhtml / default / default / template / catalog / product / helper / gallery.phtml进行了以下更改
64号线
从
<th><?php echo Mage::helper('catalog')->__('Exclude') ?></th>
至
<th><?php echo Mage::helper('catalog')->__('Exclude') ?></th>
<th><?php echo Mage::helper('catalog')->__('Is Page') ?></th>
77号线
从
<td class="cell-disable a-center"><input type="checkbox" <?php if($_block->getElement()->getReadonly()):?> disabled="disabled"<?php endif;?> onclick="<?php echo $_block->getJsObjectName(); ?>.updateImage('__file__')" /></td>
至
<td class="cell-disable a-center"><input type="checkbox" <?php if($_block->getElement()->getReadonly()):?> disabled="disabled"<?php endif;?> onclick="<?php echo $_block->getJsObjectName(); ?>.updateImage('__file__')" /></td>
<td class="cell-page a-center"><input type="checkbox" <?php if($_block->getElement()->getReadonly()):?> disabled="disabled"<?php endif;?> onclick="<?php echo $_block->getJsObjectName(); ?>.updateImage('__file__')" /></td>
105号线
从
至
<td class="cell-disable"><input type="hidden" /> </td>
<td class="cell-page last"><input type="hidden" /> </td>
最佳答案
这就是我解决问题的方法,并且工作正常。除了您所做的更改之外,也请进行这些更改。
1.在Mage_Catalog_Model_Product_Attribute_Backend_Media中
更改
public function addImage(Mage_Catalog_Model_Product $product, $file,
$mediaAttribute = null, $move = false, $exclude = true)
至
public function addImage(Mage_Catalog_Model_Product $product, $file,
$mediaAttribute = null, $move = false, $exclude = true, $page = false)
更改
public function addImagesWithDifferentMediaAttributes(Mage_Catalog_Model_Product $product,
$fileAndAttributesArray, $filePath = '', $move = false, $exclude = true)
至
public function addImagesWithDifferentMediaAttributes(Mage_Catalog_Model_Product $product,
$fileAndAttributesArray, $filePath = '', $move = false, $exclude = true, $page = true)
更改
$savedFileName = $this->addImage($product, $filePath . $value['file'], null, $move, $exclude);
至
$savedFileName = $this->addImage($product, $filePath . $value['file'], null, $move, $exclude, $page );
2.转到Mage_Catalog_Model_Resource_Product_Attribute_Backend_Media
更改
array('label','position','disabled')
至
array('label','position','disabled','page')
更改
array(
'label_default' => 'label',
'position_default' => 'position',
'disabled_default' => 'disabled',
)
至
array(
'label_default' => 'label',
'position_default' => 'position',
'disabled_default' => 'disabled',
'page_default' => 'page'
)
3.在js / mage / adminhtml / product.js中
更改
this.getFileElement(file, 'cell-label input').value = image.label;
this.getFileElement(file, 'cell-position input').value = image.position;
this.getFileElement(file, 'cell-remove input').checked = (image.removed == 1);
this.getFileElement(file, 'cell-disable input').checked = (image.disabled == 1);
至
this.getFileElement(file, 'cell-label input').value = image.label;
this.getFileElement(file, 'cell-position input').value = image.position;
this.getFileElement(file, 'cell-remove input').checked = (image.removed == 1);
this.getFileElement(file, 'cell-disable input').checked = (image.disabled == 1);
this.getFileElement(file, 'cell-page input').checked = (image.page == 1);
更改
this.images[index].label = this
.getFileElement(file, 'cell-label input').value;
this.images[index].position = this.getFileElement(file,
'cell-position input').value;
this.images[index].removed = (this.getFileElement(file,
'cell-remove input').checked ? 1 : 0);
this.images[index].disabled = (this.getFileElement(file,
'cell-disable input').checked ? 1 : 0);
至
this.images[index].label = this
.getFileElement(file, 'cell-label input').value;
this.images[index].position = this.getFileElement(file,
'cell-position input').value;
this.images[index].removed = (this.getFileElement(file,
'cell-remove input').checked ? 1 : 0);
this.images[index].page = (this.getFileElement(file,
'cell-page input').checked ? 1 : 0);
this.images[index].disabled = (this.getFileElement(file,
'cell-disable input').checked ? 1 : 0);
只需使用搜索文本来查找更改代码的位置。希望这会有所帮助。
关于magento - 在产品图片库中添加一个复选框(例如“禁用/排除”),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3297460/