好的,所以在我的主页上,我想拉出 3 个新闻项目列表;重大新闻、专题新闻和新闻头条。一次应该只在主要新闻标题下显示一个项目,任何其他被标记为此类的条目将过滤回特色新闻列表。
我的问题是捕获“一个”主要新闻项目的 entry_id 并将其从特色列表中排除。主要新闻项目可能并不总是最新的新闻项目,因此排除使用 offset="1"。
因此,我整理了一些基于自定义字段 (cf_news_article_type) 过滤掉新闻的 Stash 集。cf_news_article_type 是用户在添加新闻项目时设置的 3 个单选按钮的列表。字段的值设置如下:
mj : Major Feature
gf : Featured Article
gn : General article
我存储了一组 13 条来自所有类型的新闻:
{!-- Bring out all the recent news --}
{exp:channel:entries channel="news" orderby="date" sort="desc" dynamic="no" limit="13" parse="inward" disable="categories|category_fields|member_data|pagination|trackbacks"}
{exp:stash:append_list name='recent_articles'}
{stash:item_count}{count}{/stash:item_count}
{stash:item_type}{cf_news_article_type}{/stash:item_type}
{stash:item_title}{title}{/stash:item_title}
{/exp:stash:append_list}
{/exp:channel:entries}
然后稍后在我的模板中,我提取了主要新闻项目:
<article class="major-feature">
{exp:stash:get_list name="recent_articles" match="#mj#" against="item_type" limit="1" parse_tags="yes"}
{sn_news_story}
{/exp:stash:get_list}
</article>
现在的大问题是:我如何才能从精选新闻列表中排除该单一主要新闻项目,但在获得精选隐藏列表时将其他项目标记为“mj”?
<section class="featured-stories">
<h1>Featured stories</h1>
{exp:stash:get_list name="recent_articles" match="#(mj|gf)#" against="item_type" limit="3" parse_tags="yes"}
{sn_news_story}
{/exp:stash:get_list}
</section>
然后对于我的头条新闻,我很想排除这两个列表中显示的所有特色和主要新闻项目,但我认为我会在另一篇文章中解决这个问题。
这甚至是做这种事情的正确方法吗?任何帮助将不胜感激。