Answers:
为了完整起见,您可以在系统>权限>变量和系统>权限>块下,将块和变量手动添加到白名单。您添加的代码的格式为web/unsecure/base_url
(配置路径)或rss/order_new
(块类别名)。
我的升级脚本如下所示:
/*
* Make sure the upgrade is not performed on installations without the tables
* (i.e. unpatched shops).
*/
$adminVersion = Mage::getConfig()->getModuleConfig('Mage_Admin')->version;
if (version_compare($adminVersion, '1.6.1.2', '>=')) {
$blockNames = array(
'cms/block',
'catalog/product_list',
'germany/impressum',
'page/html',
'magesetup/imprint_field',
'magesetup/imprint_content'
);
foreach ($blockNames as $blockName) {
$whitelistBlock = Mage::getModel('admin/block')->load($blockName, 'block_name');
$whitelistBlock->setData('block_name', $blockName);
$whitelistBlock->setData('is_allowed', 1);
$whitelistBlock->save();
}
$variableNames = array(
'design/email/logo_alt',
'design/email/logo_width',
'design/email/logo_height',
);
foreach ($variableNames as $variableName) {
$whitelistVar = Mage::getModel('admin/variable')->load($variableName, 'variable_name');
$whitelistVar->setData('variable_name', $variableName);
$whitelistVar->setData('is_allowed', 1);
$whitelistVar->save();
}
}
更换$blockNames
并$variableNames
用自己的。以下工具有助于查找已使用的变量和块:https : //github.com/peterjaap/magerun-addons
首先加载变量/块,以确保您不尝试插入重复项(这会使脚本崩溃)。发生这种情况是因为脚本向我显示了变量“ trans_email / ident_general / email”和“ trans_email / ident_support / email”,它们已在最终补丁发行版中列入白名单。
将其作为数据升级脚本放置在自定义模块中(数据升级脚本在常规升级脚本之后运行,这确保表已存在)。如果您还没有用于配置更新的模块,请按以下方式创建它:
<?xml version="1.0"?>
<config>
<modules>
<Project_Config>
<active>true</active>
<codePool>local</codePool>
</Project_Config>
</modules>
</config>
<?xml version="1.0"?>
<config>
<modules>
<Project_Config>
<version>0.1.0</version>
</Project_Config>
</modules>
<global>
<resources>
<project_config>
<setup>
<module>Project_Config</module>
<class>Mage_Core_Model_Resource_Setup</class>
</setup>
</project_config>
</resources>
</global>
</config>
(如上)
{{config}}
指令需要白名单。该代码用于项目,而不用于扩展,因此,我假设商店打了补丁,但是扩展应检查Magento版本(或者最好检查表是否存在)
一旦安装了Magento 1.9.2.2,您就可以在Magento后端的“ 系统>权限>变量和系统>权限>块”下手动添加它们。
使用块的自定义变量的插件将需要添加具有如下所示代码的数据升级脚本。
if (Mage::getModel('admin/block')) {
$installer = $this;
$installer->startSetup();
$connection = $installer->getConnection();
$installer->getConnection()->insertMultiple(
$installer->getTable('admin/permission_block'),
array(
array('block_name' => 'flexslider/view', 'is_allowed' => 1),
)
);
$installer->endSetup();
}