将Javascripts移动到页脚树枝模板

时间:2018-01-21 07:50:02

标签: php twig opencart-3

我正在为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我假设有完成堆栈/推送技术的功能,但它似乎并不存在。

我确信必须有某种方法可以实现这一目标,但我没有在任何地方的文档中看到它。

1 个答案:

答案 0 :(得分:1)

您需要在树枝中使用块

将此代码添加到要在运行时添加脚本的主文件

{% block footer %}        
{% endblock %}

将此代码添加到要编写脚本代码的文件

{% block footer %}
 <script>
  ...
 </script>
{% endblock %}