我正在为OpenCart 3创建一个主题,我想将嵌入在各个树枝模板中的javascripts移动到页脚。
我来自Laravel世界,在那里我可以简单地使用@stack('scripts')
&然后使用@push('scripts')
。
在Twig中是否有类似的功能可以让我这样做?
OpenCart没有使用块,所以我发现这很难搞清楚。
扩展其他人的模板不具有正文,并且所有现有模板都有一个无法在页脚模板中定义为块的正文。只需要将javascript移动到页脚。
也许我需要以某种方式扩展Twig以允许添加刀片模板中可用的堆栈/推送功能。
这会是一个更好的解决方案吗?
- 编辑
这是一个例子。这是通过slideshow.twig
模块呈现的默认slideshow.php
。
<div class="swiper-viewport">
<div id="slideshow{{ module }}" class="swiper-container">
<div class="swiper-wrapper"> {% for banner in banners %}
<div class="swiper-slide text-center">{% if banner.link %}<a href="{{ banner.link }}"><img src="{{ banner.image }}" alt="{{ banner.title }}" class="img-responsive" /></a>{% else %}<img src="{{ banner.image }}" alt="{{ banner.title }}" class="img-responsive" />{% endif %}</div>
{% endfor %} </div>
</div>
<div class="swiper-pagination slideshow{{ module }}"></div>
<div class="swiper-pager">
<div class="swiper-button-next"></div>
<div class="swiper-button-prev"></div>
</div>
</div>
<script type="text/javascript"><!--
$('#slideshow{{ module }}').swiper({
mode: 'horizontal',
slidesPerView: 1,
pagination: '.slideshow{{ module }}',
paginationClickable: true,
nextButton: '.swiper-button-next',
prevButton: '.swiper-button-prev',
spaceBetween: 30,
autoplay: 2500,
autoplayDisableOnInteraction: true,
loop: true
});
--></script>
我想让这个javascript部分在它所属的页面底部呈现,而不是在模板文件中,无论它位于页面上。 - 结束编辑
这在整个OpenCart中都很普遍,需要更改,但这是另一天的对话。使用Twig我假设有完成堆栈/推送技术的功能,但它似乎并不存在。
我确信必须有某种方法可以实现这一目标,但我没有在任何地方的文档中看到它。
答案 0 :(得分:1)
您需要在树枝中使用块
将此代码添加到要在运行时添加脚本的主文件
{% block footer %}
{% endblock %}
将此代码添加到要编写脚本代码的文件
{% block footer %}
<script>
...
</script>
{% endblock %}