TYPO3扩展和模板问题

时间:2013-07-27 04:02:33

标签: php typo3

我正在阅读TYPO3分机。
这是模板文件:

<!-- ###LIST_LATEST### begin -->
<div class="latest-wrapper">
    <ul class="listing latest">
        <li><h1>###LIST_HEADER###</h1></li>
        <!-- ###LOOP### --><!-- ###ITEM### --><li>
            <span class="category">###CATEGORY###</span><span class="company">###COMPANY_NAME###</span><span class="location">###LOCATION###, ###STATE### ###ZIP###</span>
        </li><!-- ###ITEM### --><!-- ###LOOP### -->
        <li class="more">###MORE###</li>
    </ul>
</div>
<!-- ###LIST_LATEST### end -->

class.tx_jcjob_pi1.php中,将内容放入模板文件时,似乎有两种方法:

一个。对于###MORE###,请使用以下方法:

$markerArray['###MORE###'] = $this->cObj->getTypoLink($this->pi_getLL('text_link_more'), $this->conf['searchID'], array('tx_ajaxsearch_pi1[keyword]' => ''));
$content = $this->cObj->substituteMarkerArray($template, $markerArray);

湾对于<!-- ###LOOP### -->,请使用以下方法:

$template = $this->cObj->substituteSubpart($template, '###LOOP###', $loopContent);  var_dump($template);

所以我的问题是:

  1. ###MORE###<!-- ###LOOP### -->之间有什么区别?

  2. substituteMarkerArraysubstituteSubpart有什么区别?

1 个答案:

答案 0 :(得分:3)

您要求TYPO3中两个基本模板工具之间的区别:

  1. 标记(###MORE###)和
  2. 子部分(<!-- ###LOOP### -->
  3. 两者都是要用动态内容替换的占位符。

    标记表示单数出现。字符###MORE###将被函数substituteMarker()substituteMarkerArray()替换为您在PHP代码中定义的任何值。

    子部分总是成对出现;它有一个开始和结束标记。它们包含范围的代码,其中可以替换更多值。在您的情况下,您在模板中找到的两个<!-- ###LOOP### -->字符串之间的所有内容都可以由函数substituteSubpart()处理。通常,当您从查询中循环多个结果时,这将用于列表视图。在每个子部分元素中,您可以在PHP代码中递归替换标记或子部分。

    This blog post可能会让您更深入地了解这些原则。