通过主题配置来配置prestashop

Configure prestashop through theme configuration

我想知道是否可以在启用主题时配置商店的一些选项。

让我解释一下,我已经在主题 zip 的根目录中生成了一个 config.xml 到 enable/disable 一些模块或挂钩。但我想做更多。

确实,我希望能够在主题时启用CCC“将JavaScript移动到最后”。

我看到一些主题 (including the community theme) 在主题文件夹中包含一个 config.xml。我经常看到像 <ccc available="true" />.

这样的东西

但我不确定它有什么作用。它有什么作用吗?

我找不到那个 config.xml 文件的任何参考,有什么方法可以实现我想要的吗?

使用最新的 Prestashop 1.6。

这些行检查配置值,但仅在 <ccc available="false" />.

时检查

因此,如果您有 <ccc available="true" />,则表示您的主题与 CCC 兼容,而商店是否启用 CCC 并不重要。

如果您将其设置为 false,安装将检查与 CCC 相关的设置是否被禁用,否则它会向用户抛出一个错误,即他们的 CCC 配置将被禁用不适用于您的主题。

您可以看到特征定义 here

    'ccc' => array(
        'attributes' => array(
            'available' => array(
                'value' => 'true',
                /*
                 * accepted attribute value if value doesn't match, prestashop configuration value must have those values
                */
                'check_if_not_valid' => array(
                    'PS_CSS_THEME_CACHE' => 0,
                    'PS_JS_THEME_CACHE' => 0,
                    'PS_HTML_THEME_COMPRESSION' => 0,
                    'PS_JS_HTML_THEME_COMPRESSION' => 0,
                ),
            ),
        ),
        'error' => 'This theme may not correctly use PrestaShop\'s "combine, compress and cache" options.',
        'tab' => 'AdminPerformance',
    )

因此,如果您在 config.xml <ccc available="false" /> 中设置,它将检查 check_if_not_valid 数组中的所有四个配置是否都设置为 0,否则它会抛出一条错误消息 This theme may not correctly use PrestaShop's "combine, compress and cache" options..

至于在主题安装上配置设置,我没有看到在不覆盖 AdminThemesController class 的情况下使用 xml 配置的方法,但我猜你想要分发此主题,因此无法选择覆盖。

你可以做的是安装一个简单的配置 setter 模块以及挂钩到 displayAfterThemeInstallation 的主题。

public function hookDisplayAfterThemeInstallation($params)
{
    $theme_name = $params['theme_name'];
    if ($theme_name != 'mythemename') {
        return false;
    }
    // Enable Move JS to bottom setting
    Configuration::updateValue('PS_JS_DEFER', 1);

    // Optional text or html to display 
    return 'Your settings have been changed';
}