OctoberCMS 全局页面属性?
OctoberCMS global page properties?
是否可以设置一系列全局属性(例如社交媒体用户名)以供 OctoberCMS 中的所有页面浏览使用,而不是将它们一次关联到一个 CMS 页面或静态页面?
例如,可以在任何模板中使用 {{ twitter_username }}
,但它不会在后端的任何页面表单中显示为字段。
更新: 这可以通过在插件中使用 registerMarkupTags
注册一个 Twig 函数来实现:
use System\Classes\PluginBase;
class Plugin extends PluginBase
{
public function registerMarkupTags()
{
return [
'functions' => [
'globals' => function($var) {
switch ($var) {
case 'twitter_username':
return 'mytwitterusername';
}
return null;
},
],
];
}
}
在这种情况下,从任何模板调用 {{ globals('twitter_username') }}
打印 mytwitterusername
。
嗯,是的,你需要向 layouts
中的 life-cycle
方法添加代码,所以现在使用 that layout
的 page
将已经加载此信息。
In layout code block you can use something like this
use RainLab\Pages\Classes\Page as StaticPage;
function onStart() {
$pageName = 'static-test'; // this will be static page name/filename/title
$staticPage = StaticPage::load($this->controller->getTheme(), $pageName);
$this['my_title'] = $staticPage->viewBag['title'];
$this['twitter_username'] = $staticPage->viewBag['twitter_username'];
}
现在在您的 cms page
中您可以使用这个变量
<h1>{{ my_title }} </h1>
<h3>{{ twitter_username }} </h3>
如果您发现任何问题,请告诉我
您还可以使用主题配置文件,它为您提供了更大的灵活性,而不是将值硬编码到代码块中。
https://octobercms.com/docs/themes/development#customization
是否可以设置一系列全局属性(例如社交媒体用户名)以供 OctoberCMS 中的所有页面浏览使用,而不是将它们一次关联到一个 CMS 页面或静态页面?
例如,可以在任何模板中使用 {{ twitter_username }}
,但它不会在后端的任何页面表单中显示为字段。
更新: 这可以通过在插件中使用 registerMarkupTags
注册一个 Twig 函数来实现:
use System\Classes\PluginBase;
class Plugin extends PluginBase
{
public function registerMarkupTags()
{
return [
'functions' => [
'globals' => function($var) {
switch ($var) {
case 'twitter_username':
return 'mytwitterusername';
}
return null;
},
],
];
}
}
在这种情况下,从任何模板调用 {{ globals('twitter_username') }}
打印 mytwitterusername
。
嗯,是的,你需要向 layouts
中的 life-cycle
方法添加代码,所以现在使用 that layout
的 page
将已经加载此信息。
In layout code block you can use something like this
use RainLab\Pages\Classes\Page as StaticPage;
function onStart() {
$pageName = 'static-test'; // this will be static page name/filename/title
$staticPage = StaticPage::load($this->controller->getTheme(), $pageName);
$this['my_title'] = $staticPage->viewBag['title'];
$this['twitter_username'] = $staticPage->viewBag['twitter_username'];
}
现在在您的 cms page
中您可以使用这个变量
<h1>{{ my_title }} </h1>
<h3>{{ twitter_username }} </h3>
如果您发现任何问题,请告诉我
您还可以使用主题配置文件,它为您提供了更大的灵活性,而不是将值硬编码到代码块中。 https://octobercms.com/docs/themes/development#customization