如何在多个布局之间共享相同的变量

时间:2017-11-06 04:11:14

标签: octobercms

我有几个布局,它们共享一组共同的变量。目前我已经将一个解决方案混合在一起,完成了工作,但我确信有更优雅的方法可以做到。

以下是我目前如何在布局之间共享视图变量

function onStart(){
    include_once 'themes/website/layouts/include_common_view_vars.php';
    /**
       Additional $this['lucky_poker'] params here for the specific layout
       */
}

其中包含文件包含所有常见的addCSS和addJS文件等。

有更好的想法吗?

PS我读了关于共享变量的Question ---和--- 我确实搜索了文档,但没有看到我想要的内容

2 个答案:

答案 0 :(得分:0)

我不确定它会解决你的问题但是一些不同的方法可能会有所帮助。

我们还能做些什么。

  1. 创建新插件/或者如果您有相关插件使用那个
  2. 定义类似" SharedVars"
  3. 您需要将其包含在布局中(您需要访问变量的所有布局)
  4. 现在在组件

    public function onRun() {
        // or your file which can return values then loop through it
        // set variables in page
        $this->page['testVar'] = 'Test';
    }
    

    现在变量" testVar"将在您的所有部分内容以及使用此布局的所有页面中提供。

    Value : {{ testVar }}
    

    为简单起见,您可以在数组(sharedVars)中指定值/变量并分配给页面。

    这样下次创建新布局时需要在布局中添加该组件..为了安全起见,我们在布局中使用{%page%}之前包含组件。

    我找到了另一种共享相同变量的方式。

    注意:为了处理组件,它必须处于布局而不是局部,因为局部不包含在页面执行生命周期中。

答案 1 :(得分:0)

我认为最好的选择是使用支持表单的主题信息文件,您可以在其中添加所有必要的数据(通过主题设置ui),以便在所有布局之间共享。< / p>

https://octobercms.com/docs/themes/development#theme-information