Typoscript if / else最佳实践

时间:2013-01-15 10:00:19

标签: xpath typo3 typoscript

还有我和这个Typoscript ......

可能是Project常量中定义的companyId,如果有XML应该过滤到它。

[$plugin.xml_path.companyId = '']
  plugin.xml_xpath.conf.xpath.path   = /jobs/job/company
[else]
  plugin.xml_xpath.conf.xpath.path   = /jobs/job/company[@id={$plugin.xml_path.companyId}]
[global]

只要定义了ID,此代码就可以工作,如果没有定义,我只得到一个带有标记的输出。

公司有大约10家儿童公司,只能展示与他们相关的工作。但是在Mothercompany的页面上(没有给出ID常量),应列出所有工作。每份工作都与一家儿童公司有关。

我已经阅读了stdWrap.ifEmpty,但我不知道这对我的情况有何帮助?

有人能指出我正确的方向吗?

2 个答案:

答案 0 :(得分:0)

您不需要if,您可以在小型XPath表达式中完成所有操作。

/jobs/job/company[@id={$plugin.xml_path.companyId} or @id="" or not(@id)]

说明:

  1. @id={$plugin.xml_path.companyId}查找ID匹配
  2. 的公司
  3. @id=""查找ID为空的公司
  4. not(@id)寻找没有身份证明的公司
  5. 我不确定2和3,所以我把两者都包括在内。随意删除。


    更新为更具体的问题:

    这也很容易做到。

    /jobs/job/company[{$plugin.xml_path.companyId}="" or @id={$plugin.xml_path.companyId}]
    

答案 1 :(得分:0)

请尝试下面的错别字:

plugin.xml_xpath.conf.xpath.path   = /jobs/job/company[@id={$plugin.xml_path.companyId}]
[globalVar = LIT: {$plugin.xml_xpath.conf.xpath.path} = ]
plugin.xml_xpath.conf.xpath.path   = /jobs/job/company
[end]

如果“plugin.xml_xpath.conf.xpath.path”为空,则路径将替换为“/ jobs / job / company”。