我目前正在开发一个实时网站,但问题是他们想切换主题,所以我想安装新主题并且只能通过我的 IP 地址查看它。
问题是我不知道如何以编程方式更改 Magento 主题和皮肤值。
你们有人能帮我吗?
所以这不是一个直接的答案。最佳实践将是备份您的数据库和系统,并恢复到开发环境文件和数据库。
编辑 core_config_data 表中每个商店的两个条目,以将 url 从实时站点更改为开发站点 url。
然后在开发站点上开发您的新主题或修改后的主题,并在您准备好推送更改时将文件部署到实时服务器。
可能有另一种方法可以做到这一点。您可以在 Magento 安装中创建一个新商店,请参阅如何创建多个商店,然后将主题文件夹复制到您的开发它们的名称目录中。最后配置 new/dev 商店以使用您的开发主题。
这两个都是可行的选择。试图欺骗 Magento 为您的 IP 提供一个主题,而为其他所有人提供另一个主题似乎是自找麻烦。
这可以在不修改 Magento 核心的情况下完成。
它涉及 Chrome 并将您的用户代理设置为自定义。
首先,在 Magento 中创建一个异常 - 我们将匹配的表达式设置为dev
并将包设置为new-theme
. 这会将您的包设置为new-theme
好像您的用户代理匹配dev
(将提供位于的主题app/design/frontend/new-theme
:
然后第二步也是最后一步是在 Chrome 中打开您的开发者工具栏并将您的用户代理设置为dev
:
采取这两个简单的步骤,您就可以通过编程方式仅为自己设置主题包,而不会影响他人。
你可以这样做
Mage::getSingleton('core/design_package')->setTheme('default');
对于实现,只需创建一个在所有页面上加载的块并将其添加到构造函数中。
XML 会是这样的:
<layout version="0.1.0">
<default>
<reference name="content">
<block type="kervin/theme" name="kervin.theme"/>
</reference>
</default>
</layout>
和 theme.php,块将是:
class My_Kervin_Block_Theme extends Mage_Core_Block_Template
{
public function __construct()
{
if ($_SERVER["REMOTE_ADDR"] == 'xxx') {
Mage::getSingleton('core/design_package')->setTheme('default');
}
}
}