如何使用 Twig 在 Stacey v3 中删除第一页和最后一页上的上一个和下一个链接?

Posted

技术标签:

【中文标题】如何使用 Twig 在 Stacey v3 中删除第一页和最后一页上的上一个和下一个链接?【英文标题】:How can I remove the previous and next links on the first and last pages in Stacey v3 with Twig? 【发布时间】:2014-04-18 12:28:32 【问题描述】:

我正在 Stacey v3 中编辑 project.html 模板,有下一个和上一个链接生成:

% include 'partials/next-page.html' %

% include 'partials/previous-page.html' %

next-page.html:

% for sibling in page.next_sibling %
  <li><a href=" sibling.url " title=" sibling.title ">Next project</a>: &rarr;  sibling.title </li>
% endfor %

previous-page.html:

% for sibling in page.previous_sibling %
  <li><a href=" sibling.url " title=" sibling.title ">Previous project</a>: &larr;  sibling.title </li>
% endfor %

他们工作得很好,他们完成了他们的工作,对我来说,问题出在第一个项目页面上,它有一个指向前一个页面的链接,如 &lt;li&gt;&lt;a href="" title=""&gt;Previous project&lt;/a&gt;: ← &lt;/li&gt;,它无处可去。

在它创建的项目的最后一页&lt;li&gt;&lt;a href="" title=""&gt;Next project&lt;/a&gt;: → &lt;/li&gt;

我不想要这些死链接,它们具有误导性且毫无意义。

所以我试图摆脱它们的逻辑,如果它是第一页,则不生成上一个链接,并且在最后一页上不生成下一个链接。

我曾尝试过这样的事情:

% for sibling in page.siblings %
    % if loop.first == False %
        Nothing should be generated
            % else %
        % include 'partials/next-page.html' %
    % endif %
% endfor %

这不起作用,我对逻辑的理解也不正确。

【问题讨论】:

【参考方案1】:

实际上我认为你在这里做的与你想要的相反:

% if loop.first == False %
    Nothing should be generated

你应该这样做

% if loop.first %
    Nothing should be generated

您希望它在循环是第一个循环时应用。

更新:试试这个:

% for sibling in page.siblings %
    % if sibling is null %
        Nothing should be generated
    % else %
        % include 'partials/next-page.html' %
    % endif %
% endfor %

第二次更新: 好像有后端概念问题……如果页面不存在,它应该呈现空。在这里,is 似乎渲染了一个具有空属性(url、title…)的页面对象。 它应该被修复。现在,这可以解决问题吗?

% for sibling in page.siblings %
    % if (sibling.url is null) or (sibling.url is empty) %
        Nothing should be generated
    % else %
        % include 'partials/next-page.html' %
    % endif %
% endfor %

【讨论】:

它现在重复下一页链接的次数与我拥有的项目数量一样多:( 它还在做:( 奇怪。你能做一个 dump(sibling) 吗? % for sibling in page.siblings % dump(sibling) % endfor % The function "dump" does not exist in "project.html" at line 54 哦。你知道你正在使用的树枝版本吗?嗯……实际上默认不可用。 twig.sensiolabs.org/doc/functions/dump.html【参考方案2】:

将templates/partials/next-page.html的内容替换为:

% if page.is_last %
<p>&nbsp;</p>
% else %
% for sibling in page.next_sibling %
  <p><a href=" sibling.url ">Next project</a>: &rarr;  sibling.title </p>
% endfor %
% endif %

将templates/partials/previous-page.html的内容替换为:

% if page.is_first %
<p>&nbsp;</p>
% else %
% for sibling in page.previous_sibling %
  <p><a href=" sibling.url ">Previous project</a>: &larr;  sibling.title </p>
% endfor %
% endif %

【讨论】:

以上是关于如何使用 Twig 在 Stacey v3 中删除第一页和最后一页上的上一个和下一个链接?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用基于标签的 XML::Twig 解析器在 Unix 上清理 xml 文件 [关闭]

升级 PHP 版本后如何修复 Twig 文件中的 Html 标签问题

如何使用 Laravel8 中的 Twig 扩展注入 php GraphQL 查询结果,在 Twig(Bridge) 模板中定义查询?

Twig / PHP - 使用Replace或Regex格式化字符串

如何通过 YouTube api v2/v3 (JSON) 获取已删除视频的信息

如何在将要在生产中呈现的模板中使用“dump()”twig 函数?