如何在OctoberCMS

时间:2016-03-09 13:10:49

标签: php octobercms

10月CMS提供了便捷的功能来组合js / css资产。在我的layouts/default.htm我有这样定义的脚本:

<script src="{{ [
    'assets/javascript/jquery.js',
    'assets/vendor/bootstrap/js/transition.js',
    'assets/vendor/bootstrap/js/alert.js',
    'assets/vendor/bootstrap/js/button.js',
    'assets/vendor/bootstrap/js/carousel.js',
    'assets/vendor/bootstrap/js/collapse.js',
    'assets/vendor/bootstrap/js/dropdown.js',
    'assets/vendor/bootstrap/js/modal.js',
    'assets/vendor/bootstrap/js/tooltip.js',
    'assets/vendor/bootstrap/js/popover.js',
    'assets/vendor/bootstrap/js/scrollspy.js',
    'assets/vendor/bootstrap/js/tab.js',
    'assets/vendor/bootstrap/js/affix.js',
    'assets/javascript/app.js',
    '@framework',
    '@framework.extras'
]|theme }}"></script>
{% scripts %}

在我的config/cms.php文件中:

'enableAssetCache' => false,
'enableAssetMinify' => null,

config/app.php

'debug' => true,

这导致组合树枝阵列中定义的所有脚本。在渲染的网站上,我得到一个javascript文件

<script src="http://localhost/Test/october/combine/2cdc17b704821cd2ffbd9be8e4d340f9-1457016128"></script>

只要在'debug' => true中启用了config/app.php,我就可以选择不合并我的资源(在开发环境中也是如此)。

我知道如果我将它们添加到单独的脚本标记中的布局中,我可以通过10月CMS单独提供我的资源。但这也将在生产中分别为他们服务。例如:

<script src="{{ 'assets/js/one.js'|theme }}"></script>
<script src="{{ 'assets/js/two.js'|theme }}"></script>

我在github上发现了这个1.5岁的问题而没有任何有用的答案: https://github.com/octobercms/october/issues/289

文档也说这件事没什么用处: https://octobercms.com/docs/markup/filter-theme

你知道如何处理这个问题吗?我可能会在OctoberCMS中创建一个插件,它会根据配置设置(调试true / false)将资源注入布局。但据我所知,从插件中注入资源,需要将资源放在插件目录而不是主题目录

2 个答案:

答案 0 :(得分:2)

好的,我设法解决了这个问题,但没有使用问题中提到的config/app.php

其他解决方案需要在OctoberCMS的根目录中创建.env文件。默认情况下,此文件位于.gitignore中,因此您可以在生产和开发中使用不同的.env文件(Piece of documentation

此文件的内容应为:

APP_ENV=dev

然后你可以访问树枝中的变量:

{% if this.environment == 'dev' %}
    <script src="{{ 'assets/vendor/jquery.min.js'|theme }}"></script>
    <script src="{{ 'assets/semantic/dist/semantic.min.js'|theme }}"></script>
    <script src="{{ 'assets/javascript/app.js' | theme }}"></script>
    {% framework extras %}
{% else %}
    <script src="{{ [
     'assets/vendor/jquery.js',
     'assets/semantic/dist/semantic.js',
     'assets/javascript/app.js',
     '@framework',
     '@framework.extras'
     ]|theme }}"></script>
{% endif %}

答案 1 :(得分:0)

尝试在配置文件(app / config / cms.php)

中切换关闭
/*
|--------------------------------------------------------------------------
| Determines if the asset minifcation is enabled.
|--------------------------------------------------------------------------
|
| If the minifcation is enabled, combined assets are compressed (minified).
| It is recommended to disable the minification during the development, and
| enable it in the production mode.
|
*/

'enableAssetMinify' => true,