以编程方式设置 Magento 产品组权限

Set Magento Product Group Permissions Programatically

当您在 Magento 中编辑产品时,会出现一个带有两个多项选择的权限选项卡。

Disable product for

Hide product price for

我们需要通过包含 'Mage.php' 并使用脚本更新禁用组来以编程方式设置禁用产品组。

例如,我们要为产品的 10 个特定组停用产品。我们已经能够在脚本中完成您在管理界面中可以做的几乎所有其他事情,因此应该有一种方法可以使用 Mage::getModel('catalog/product') 或其他模型来访问它。调用一个函数,传入要将产品设置为禁用的组 ID。

但似乎无法追踪到它。

谢谢!

找到了数据存放在数据库中的位置,结果直接修改了数据库。

$groupsDisabledArray 是一个数组,其中包含我要为其禁用产品权限的每个组的 ID。 magento 中的数据简单地存储为逗号分隔的组 ID 列表

示例:

1,2,3,4,5,6,7,8,9,10

所以我内爆我的禁用组 ID 数组以获得逗号分隔列表

$groupsList=implode(",", $groupsDisabledArray);

然后插入或更新存储值的 catalog_product_entity_text table。

值存储在catalog_product_entity_text中,其中

entity_id = PRODUCT_ID
attribute_id = 155 (This corresponds to the table eav_attribute where attribute_code = 'aw_cp_disable_product')
entity_type_id = 4 (This corresponds to table eav_entity_type where entity_type_code = 'catalog_product')
store_id = STORE_ID (If you just have one store you should just be able to put 0 here for the Default Store)

执行以下完整更新的代码。可能需要将路径更新为 Mage.php,具体取决于您放置脚本的位置。

include("/app/Mage.php");

/* Get DB Connections */
$resource = Mage::getSingleton('core/resource');
$readConnection = $resource->getConnection('core_read');
$writeConnection = $resource->getConnection('core_write');
$tableName = $resource->getTableName('catalog_product_entity_text');

/* $groupsDisabledArray - Array of all of the Magento Group ID's I want to disable this product for */

$groupsList=implode(",", $groupsDisabledArray);
$sql="SELECT * FROM $tableName WHERE entity_id=$product_id AND attribute_id=155 and entity_type_id=4 AND store_id=0;";
$results = $readConnection->fetchAll($sql);
if (count($results) > 0) {
    $sql="UPDATE $tableName SET value='$groupsList' WHERE entity_id=$product_id AND attribute_id=155 and entity_type_id=4 AND store_id=0;";
}
else
{
    $sql="INSERT INTO $tableName (entity_id, entity_type_id, store_id, attribute_id, value) VALUES ($product_id, 4, 0, 155, '$groupsList')";
}
$writeConnection->query($sql);