我目前正在开设一个实时网站,但问题是他们想切换主题,所以我想安装新主题,只能通过我的IP地址查看。
麻烦的是我不知道如何以编程方式更改Magento主题和皮肤值。
你们中有谁可以帮助我吗?
答案 0 :(得分:3)
所以这不是一个直接的答案。最佳实践是备份数据库和系统,并还原到开发环境文件和数据库。
编辑core_config_data表中每个商店的两个条目,将网址从实际网站更改为开发网站网址。
然后在开发站点上开发新的或修改过的主题,并在准备推送更改时将文件部署到实时服务器。
可能有另一种方法可以做到这一点。您可以在Magento安装中创建新商店请参阅How to Make Multiple Stores,然后将主题文件夹复制到您的开发名称目录。最后配置新的/ dev商店以使用您的开发主题。
这两个都是可行的选择。试图欺骗Magento为你的IP服务一个主题,而另一个主题为其他人服务似乎是在寻找麻烦。
答案 1 :(得分:2)
这可以在不修改Magento核心的情况下完成。
它涉及Chrome并将您的用户代理设置为自定义内容。
首先,在Magento中创建一个例外 - 我们将匹配的表达式设置为dev
并将包设置为new-theme
。如果您的用户代理与new-theme
匹配,则会将您的包设置为dev
(将提供app/design/frontend/new-theme
中的主题:
然后第二步也是最后一步是在Chrome中打开您的开发者工具栏,并将您的用户代理设置为dev
:
采取这两个简单的步骤,您可以自己编程设置主题包,而不会影响其他人。
答案 2 :(得分:1)
你可以用
完成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');
}
}
}