【问题标题】:ModX revo 2.2x: How to use a TV value to set tpl?ModX revo 2.2x:如何使用 TV 值来设置 tpl?
【发布时间】: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


    【解决方案1】:

    詹姆斯是对的。

    [[pdoResources?
       &includeTVs=`blogPostType`
       &tplCondition=`tv.blogPostType`
       &conditionalTpls=`{"1":"tplA","2":"tplB","3":"tplC"}`
       &tpl=`defaultTpl`
    ]]
    

    【讨论】:

      【解决方案2】:

      条件模板似乎适用于 pdoResources(pdoTools 的一部分)。 (我必须在 tplCondition 中的电视前面加上“tv.”,但在其他电视中则不行)

      【讨论】:

        【解决方案3】:

        如果您需要对 html 进行重大更改,如果您有一个不错的标记,您仍然可以使用 css 解决它。但是,如果这还不够,我将通过使用一个 tpl 进行 getresources 调用来解决它,并让该 tpl 处理切换。如果你可以让你的电视输出这个值来表示在每种情况下应该使用的 tpl 的名称,你的 tpl 只需要这个: [[$[[+tv.yourtv]]]] 您的电视将首先被评估,然后将其作为一个块进行处理。这样你就不需要讨厌的开关或 if 子句了。

        这是假设您想要完全不同的 tpl,而不只是需要更改标准 tpl 的一小部分,在这种情况下您仍然可以使用此技术!

        【讨论】:

        • 是的,这也是一种有效的技术。谢谢你的添加。将来我必须记住你的,因为正如你所说,它适用于所有场景。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-05-05
        • 2012-06-01
        • 1970-01-01
        相关资源
        最近更新 更多