我正在尝试编写一个新的复选框,以附加到“禁用”旁边的图片库中的列。其行为与在数据库中输入时的“禁用/排除” =是/否相同。

这个想法是为图片库中的每个图片添加一个“用作页面”复选框。目的是制作一个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" />&nbsp;</td>
            <td class="cell-page last"><input type="hidden" />&nbsp;</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/

10-13 02:29