gpt4 book ai didi

Magento 按entity_id排序

转载 作者:行者123 更新时间:2023-12-02 16:10:58 27 4
gpt4 key购买 nike

有人知道如何使 entity_id 在前端作为可排序属性可见吗?我去管理属性,但无法按照其说明将 entity_id 添加为属性

“属性代码‘entity_id’已被系统保留。请尝试其他属性代码”

所以我尝试使用以下 SQL CMD 在 Magento 上的整个数据库中进行搜索:

select attribute_id from eav_attribute where attribute_code = 'updated_at';

它返回零结果,我尝试了其他属性,结果显示...

有谁知道如何将 entity_id 添加为属性,因为我什至无法使其可见,因为即使在整个数据库中搜索该值时我也不知道 attribute_id # 是什么.

这是我用来使属性在 magento 的管理部分可见的代码:

UPDATE `catalog_eav_attribute` 
SET `is_visible` = '1'
WHERE `catalog_eav_attribute`.`attribute_id` = 105;

我已经尝试了几天的高低搜索,并尝试了不同的变化 - 所以陷入了这一点,任何帮助都会很棒。

如果有帮助的话,我正在使用 Magento Enterprise 12.2,但说实话,数据库与社区版本没有太大区别,唯一的区别是添加的模块,但就产品而言,它几乎是相同的。

最佳答案

这令人惊讶地令人讨厌 - 我看不到在数据库中简单地执行此操作的方法,因为entity_id不是标准属性(它实际上只是一个关键字段)并且核心代码在三个地方重复相同的逻辑(呃)。

自旧版 Magento 以来,它也发生了很大变化,因此许多教程和论坛帖子不再适用。

您可以做的是将“entity_id”添加为新的排序选项,类似于“最佳值(value)”作为排序选项的存在方式。在下面的示例中,我将其标记为“最新”

通常的警告适用:您应该在扩展中执行此操作(或至少在/local/overrides 中),但在 Community Edition 1.7 中需要重写的三个核心文件方法是:

Mage_Adminhtml_Model_System_Config_Source_Catalog_ListSort

public function toOptionArray()
{
$options = array();
$options[] = array(//benz001
'label' => Mage::helper('catalog')->__('Newest'),
'value' => 'entity_id'
); //end benz001
$options[] = array(
'label' => Mage::helper('catalog')->__('Best Value'),
'value' => 'position'
);
foreach ($this->_getCatalogConfig()->getAttributesUsedForSortBy() as $attribute) {
$options[] = array(
'label' => Mage::helper('catalog')->__($attribute['frontend_label']),
'value' => $attribute['attribute_code']
);
}
return $options;
}

然后是Mage_Catalog_Model_Category_Attribute_Source_Sortby

    /**
* Retrieve All options
*
* @return array
*/
public function getAllOptions()
{
if (is_null($this->_options)) {
$this->_options = array(
array(//benz001
'label' => Mage::helper('catalog')->__('Newest'),
'value' => 'entity_id'
), //end benz001
array(
'label' => Mage::helper('catalog')->__('Best Value'),
'value' => 'position'
));
foreach ($this->_getCatalogConfig()->getAttributesUsedForSortBy() as $attribute) {
$this->_options[] = array(
'label' => Mage::helper('catalog')->__($attribute['frontend_label']),
'value' => $attribute['attribute_code']
);
}
}
return $this->_options;
}

然后是Mage_Catalog_Model_Config

    public function getAttributeUsedForSortByArray()
{
$options = array(
'entity_id' => Mage::helper('catalog')->__('Newest'), //benz001
'position' => Mage::helper('catalog')->__('Position'),
);
foreach ($this->getAttributesUsedForSortBy() as $attribute) {
/* @var $attribute Mage_Eav_Model_Entity_Attribute_Abstract */
$options[$attribute->getAttributeCode()] = $attribute->getStoreLabel();
}

return $options;
}

完成这些后,刷新缓存并刷新,然后您可以选择在配置中、类别页面和前端上按 Newest/entity_id 进行排序。

注意:即使您关闭了缓存,刷新缓存仍然是一个好主意 - 即使禁用缓存,管理的部分内容也会被缓存。

关于Magento 按entity_id排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11012195/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com