我正在为 OpenCart 3 创建一个主题,并且我想将嵌入在单个树枝模板中的 javascript 移动到页脚。
我来自 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,我认为会有完成堆栈/推送技术的功能,但它似乎并不存在。
我确信必须有某种方法来实现这一点,但我没有在任何地方的文档中看到它。