2

我目前正在开发一个实时网站,但问题是他们想切换主题,所以我想安装新主题并且只能通过我的 IP 地址查看它。

问题是我不知道如何以编程方式更改 Magento 主题和皮肤值。

你们有人能帮我吗?

4

3 回答 3

3

所以这不是一个直接的答案。最佳实践将是备份您的数据库和系统,并恢复到开发环境文件和数据库。

编辑 core_config_data 表中每个商店的两个条目,以将 url 从实时站点更改为开发站点 url。

然后在开发站点上开发您的新主题或修改后的主题,并在您准备好推送更改时将文件部署到实时服务器。

可能有另一种方法可以做到这一点。您可以在 Magento 安装中创建一个新商店,请参阅如何创建多个商店,然后将主题文件夹复制到您的开发它们的名称目录中。最后配置 new/dev 商店以使用您的开发主题。

这两个都是可行的选择。试图欺骗 Magento 为您的 IP 提供一个主题,而为其他所有人提供另一个主题似乎是自找麻烦。

于 2013-08-27T22:22:55.863 回答
2

这可以在不修改 Magento 核心的情况下完成。

它涉及 Chrome 并将您的用户代理设置为自定义。

首先,在 Magento 中创建一个异常 - 我们将匹配的表达式设置为dev并将包设置为new-theme. 这会将您的包设置为new-theme好像您的用户代理匹配dev(将提供位于的主题app/design/frontend/new-theme

Magento 配置

然后第二步也是最后一步是在 Chrome 中打开您的开发者工具栏并将您的用户代理设置为dev

铬配置

采取这两个简单的步骤,您就可以通过编程方式仅为自己设置主题包,而不会影响他人。

于 2013-09-13T05:35:49.660 回答
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');
        }

    }
}
于 2013-09-13T11:08:05.187 回答