链接列表的上一个/下一个按钮 - 未按预期工作

时间:2017-08-21 04:20:49

标签: shopify liquid

我试图建立一个"下一个/上一个"页面导航系统,用于linklist

中的页面

以下代码按预期工作...除了链接列表的第一页和最后一页。我想要"上一个"第一页上显示的按钮,以及"下一页"按钮显示在最后一页上。

在第一页上,"上一页"按钮显示,并指​​向最后一页。

在最后一页,"下一页"按钮显示,但无处点。

我哪里错了?我唯一能想到的是,我没有给变量提供正确的类型(我对Liquid来说相对较新)。

  {% comment %}
    Get the linklist being passed, and the size of the linklist.
  {% endcomment %}

  {% assign thislinklist = __page-navigation-arrows %}
  {% assign thislinklistSize = linklists[thislinklist].links | plus: 0 %}

  {% comment %}
    Finds the index of the current page in the linklist array, and saves it to compare to find previous and next pages.
  {% endcomment %}

  {% for link in linklists[thislinklist].links %}
    {% if page.handle == link.handle %}
      {% assign thisindex = forloop.index0 | plus: 0 %}
    {% endif %}
  {% endfor %}

  {% comment %}
    Saves details of the current page, and indexes of the previous and nex pages.
  {% endcomment %}

  {% assign thisname = page.title %}
  {% assign thislink = page.url %}

  {% assign thisindex = thisindex | plus: 0 %}
  {% assign previndex = thisindex | minus: 1 %}
  {% assign nextindex = thisindex | plus: 1 %}

  {% comment %}
    If it's not the last page in the linklist, save details of the next page. If not, assign a blank string (used later to hide the button).
  {% endcomment %}

  {% if previndex | plus: 0 > 0 %}
    {% assign prevname = linklists[thislinklist].links[previndex].title %}
    {% assign prevlink = linklists[thislinklist].links[previndex].url %}
  {% else %}
    {% assign prevname = '' %}
    {% assign prevlink = '' %}
  {% endif %}

  {% comment %}
    If it's not the first page in the linklist, save details of the previous page. If not, assign a blank string (used later to hide the button).
  {% endcomment %}

  {% if nextindex | plus: 0 < thislinklistSize | minus: 1 %}
    {% assign nextname = linklists[thislinklist].links[nextindex].title %}
    {% assign nextlink = linklists[thislinklist].links[nextindex].url %}
  {% else %}
    {% assign nextname = '' %}
    {% assign nextlink = '' %}
  {% endif %}


  {% comment %}
    Display the navigation.
  {% endcomment %}

  <div class="page-navigation-arrows">

    {% comment %} Hide "Previous" if it's the first page {% endcomment %}
    {% if prevlink != '' or blank %}
      <a class="page-navigation-arrows__prev page-navigation-arrows__arrow" href="{{ prevlink }}" title="{{ prevname }}">
        <img src="{{ 'page-navigation-prev.svg' | asset_url }}" alt="Previous Page">
      </a>
    {% endif %}

    {% comment %} Hide "Next" if it's the last page {% endcomment %}
    {% if nextlink != '' or blank %}
      <a class="page-navigation-arrows__next page-navigation-arrows__arrow" href="{{ nextlink }}" title="{{ nextname }}">
        <img src="{{ 'page-navigation-next.svg' | asset_url }}" alt="Next Page">
      </a>
    {% endif %}

  </div>

2 个答案:

答案 0 :(得分:1)

没时间对此进行测试,但我相信代码可以正常运行。

但有一些事情:

{% if nextlink != '' or blank %}

这不是有效的if条件。它应该是:

{% if nextlink != '' or nextlink == blank %}

这也不是一个有效的if语句:

{% if previndex | plus: 0 > 0 %}

它始终返回true。它应该成为:

{% assign previndex = previndex | plus: 0 %}
{% if previndex > 0 %}
    ...
{% endif %}

解决这些问题后,它应该正常运行。

答案 1 :(得分:1)

有一种简单的方法可以实现这一目标:

{%除非forloop.first%}     您之前链接的代码   {%endunless%}

{%除非forloop.last%}     您下一个链接的代码   {%endunless%}