操作字段:内容元素的标题(旧:如何用选择结果替换标题中的字符?)

时间:2014-05-06 15:05:05

标签: typoscript

我正在使用tx_news扩展名。当在页面上使用插件并且设置包含特定字符的标题时,我想用现有的新闻文章的数量替换该字符。 例如,编辑器维护there are # articles for your selected category,用户应该看到there are 8 articles for your selected category。我希望你能得到,我想要完成的任务。

我的TypoScript:

lib.anzahlNews = CONTENT
lib.anzahlNews { 
  table = tx_news_domain_model_news
  select {
    selectFields = COUNT(title) AS anzahl
    pidInList = 23
    where = archive = 0
  }  
  renderObj = COA
  renderObj.wrap = <span class="item_count"> | </span>
  renderObj {
    10 = TEXT
    10.field = anzahl
  }
}
lib.stdheader {
    # some ohter unrelated stuff I'm doing


    stdWrap {
        # clear old datawrap
        dataWrap >

        innerWrap.cObject = COA
        innerWrap.cObject {
            5 = TEXT
            5.value = <header class="csc-header

            10 = TEXT
            10 {
                value = news-headline
                noTrimWrap = | ||
                if {
                    value = news_pi1
                    equals.field = list_type
                }
            }

            15 = TEXT
            15.value = ">

            20 = TEXT
            20 {
                value = | foo # bar
                stdWrap.replacement {
                    10 {
                        search.char = 35
                        replace < lib.anzahlNews
                    }
                }
                if {
                    value = news_pi1
                    equals.field = list_type
                }
            }

            25 = TEXT
            25.value = </header>
        }
    }
}

所以我在这里有两个问题:

  1. 我无法从内容元素中获取数字。
  2. 仅替换#foo之间的bar。 (foo CONTENT bar中的结果。)但实际标题(管道)中的哈希值根本没有替换。
  3. 提前抱歉,因为我只是TypoScript的初学者。

    有人可以告诉我我错在哪里并告诉我方向吗? 非常感谢你。


    // edit(2014-05-07 14:09):

    我发现,replace只期待字符串 - 因此我在结果中看到“ CONTENT ”。 我现在尝试使用stdWrap.split拆分#标题字段的内容,然后从我的lib.anzahlNews添加内容,如下所示:

    20 = TEXT
    20 {
        value = | foo # bar
        stdWrap {
            split {
                token.char = 35
    
                # rendering of content
                cObjNum = 1 || 2
                1.current = 1
                1.wrap = |
                1.append < lib.anzahlNews
                2.current = 1
                2.wrap = |
            }
            if {
                value = news_pi1
                equals.field = list_type
            }
        }
    }
    

    到目前为止,这是有效的,因为它解决了我第一个获得所需价值的问题。但第二个问题仍然存在,标题字段的实际内容根本没有触及。

    我需要操纵header-field本身的值。我怎么能做到这一点?

1 个答案:

答案 0 :(得分:0)

根据tsref replacement附带一个stdWrap。所以你可能想试试这个:

....20 = TEXT
....20 {
     replacement {
          10 {
               search.char = 35
               replace.cObject < lib.anzahlNews
          }
     }
}

但由于上述内容并未替换标题文字中的#,请尝试将您的第二次尝试应用于h2标题:

lib.char_replace {
         token.char = 35
         cObjNum = |*||*| 1 || 2
         1.current = 1
         2 < .1
}

lib.stdheader.10.2.split < lib.char_replace
lib.stdheader.10.2.split.1.append < lib.anzahlNews

也许你可以通过以下方式获得所有头条新闻:

lib.stdheader.10.setCurrent.split < lib.char_replace
lib.stdheader.10.setCurrent.split.1.append < lib.anzahlNews