【发布时间】:2014-06-03 13:10:27
【问题描述】:
我正在尝试找出一种方法来根据模板变量 (tv) 值呈现具有特定 tpl 的资源。这是我的用例:
我已经为带有主页和博客的基本站点设置了 modx 安装(我使用了文章插件)。我想在文章容器之外的主页上显示博客文章。根据我的经验,最简单的方法是使用 getResource。但是对于这个特定的项目,我想根据每个结果的 tv 值来更改 getResources 结果的 tpl。
可以将模板变量视为“帖子类型”。如果您选择“文本”,它将具有 tplA,如果您选择“多媒体”,它将具有 tplB 等...
现在根据我的研究,您可以在 getResources 调用中使用属性“tplCondition”和“conditionalTpls”来实现这一点,如下所示:
[[getResources?
&tplCondition=`tv.blogPostType`
&conditionalTpls=`{"1":"tplA","2":"tplB","3":"tplC"}`
&tpl=`defaultTpl`
]]
问题是,这似乎不适用于模板变量 :( 它甚至说它只使用文档中的资源字段.....这真是太糟糕了,因为我不知道要不然.根据我有限的知识,你也许可以创建一个sn-p或其他东西,但我不知道。
有没有人能优雅地解决这个问题?
再次总结一下我想做什么:
-通过模板变量为我的文章容器中的博客帖子分配“帖子类型”。
-使用模板变量值根据该值设置特定的 tpl。
非常感谢任何帮助。谢谢
编辑:好的,我在论坛上得到了回复,并遇到了一个“解决方案”。
您可以使用 css 完成此操作。在 tpl 中,您可以执行以下操作:
<article class="[[+tv.post-type]]">....</article>
这会将在电视中选择的帖子类型作为实际使用的元素类输出,然后您可以使用 css 根据电视为输出提供不同的外观。它实际上是如此简单,我有点尴尬,我以前没有看到它。在我的情况下,它 100% 解决了我的问题,但是如果你需要 chasnge html,我猜测需要涉及 javascript 或使用 php 的其他方法。把它留在这里以防有人需要!
【问题讨论】:
标签: php content-management-system modx-revolution getresource