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 layoutpage 将已经加载此信息。

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