0

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

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

4

1 回答 1

1

你需要在树枝中使用块

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

{% block footer %}        
{% endblock %}

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

{% block footer %}
 <script>
  ...
 </script>
{% endblock %}
于 2018-01-21T07:55:49.050 回答