如何使用 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>: → sibling.title </li>
% endfor %
在previous-page.html
:
% for sibling in page.previous_sibling %
<li><a href=" sibling.url " title=" sibling.title ">Previous project</a>: ← sibling.title </li>
% endfor %
他们工作得很好,他们完成了他们的工作,对我来说,问题出在第一个项目页面上,它有一个指向前一个页面的链接,如 <li><a href="" title="">Previous project</a>: ← </li>
,它无处可去。
在它创建的项目的最后一页<li><a href="" title="">Next project</a>: → </li>
我不想要这些死链接,它们具有误导性且毫无意义。
所以我试图摆脱它们的逻辑,如果它是第一页,则不生成上一个链接,并且在最后一页上不生成下一个链接。
我曾尝试过这样的事情:
% 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> </p>
% else %
% for sibling in page.next_sibling %
<p><a href=" sibling.url ">Next project</a>: → sibling.title </p>
% endfor %
% endif %
和
将templates/partials/previous-page.html的内容替换为:
% if page.is_first %
<p> </p>
% else %
% for sibling in page.previous_sibling %
<p><a href=" sibling.url ">Previous project</a>: ← 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格式化字符串