通过主题配置来配置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';
}
我想知道是否可以在启用主题时配置商店的一些选项。
让我解释一下,我已经在主题 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';
}