[TYPO3-german] geschachtelte Templates ersetzen in Extension
Silke Capo
s.capo at digital-worx.de
Fri Mar 9 14:31:32 CET 2012
Hallo Listenteilnehmer,
ich habe gerade einen Knoten im Kopf, was verschachtelte Templates
angeht. Folgendes Template möchte ich gerne innerhalb einer Extension
ausgeben:
<!-- ###GROUPVIEW### begin-->
<!-- ###HEAD### begin-->
<p class="breadbrumb">###BREADCRUMB###bread</p>
<h1>###CAT###</h1>
<div class="subcategory-item">
<dl>
<!-- ###CATEGORIES### begin
list of subcategories
-->
<dt><a href="###LINK###">###IMG###</a></dt>
<dd>
<p><a href="###LINK###">###TEXT###</a></p>
<!-- ###DOWNLOADS### begin-->
<p><a class="download" href="###FILEPATH###">###FILENAME###</a></p>
<!-- ###DOWNLOADS### end-->
</dd>
<!-- ###CATEGORIES### end-->
</dl>
</div>
<!-- ###HEAD### end-->
<!-- ###GROUPVIEW### end-->
Downloads und Categories sind jeweils mehrere Unterelemente. Ich
scheitere nun daran, mehrere Downloadelemente in die Categories zu bekommen.
Habe mir
tslib_cObj Class Reference
sowie
http://wiki.typo3.org/Extension_Development,_using_HTML-Templates
angesehen.
Leider funktioniert dieser Teil bei mir nicht:
// Fill subpart marker
$subpartArray['###CONTENT###'] = $contentItem;
(bei mir: $markerCat['###DOWNLOADS###'] = $contentDown;)
da dieser zwar ###DOWNLOADS### ersetzt, aber eben zwei Mal im Kommentar
und der Inhalt des Supparts wird dann so ausgegeben wie er da steht.
Verwende ich substituteSubpart statt substituteMarkerArray, wird zuviel
außenherum mitgegeben.
Habe schon alle möglichen Kombinationen von substituteMarkerArray und
substituteSubpart ausprobiert.
sonst wäre mein Problem gelöst. Bei mir wird der Marker im Array nicht
ersetzt.
Hier Ausschnitte aus dem PHP-Code:
$template = $this->cObj->getSubpart($this->templateCode, '###GROUPVIEW###');
// Get subpart template
$subTemplate['template'] = $this->cObj->getSubpart($template,'###HEAD###');
$subTemplate['category'] =
$this->cObj->getSubpart($subTemplate['template'],'###CATEGORIES###');
$subTemplate['item'] =
$this->cObj->getSubpart($subTemplate['category'],'###DOWNLOADS###');
...
$markerArray['###BREADCRUMB###'] = $breadcrumb;
...
foreach ($subCat as $key => $value) {
$markerCat['###LINK###'] = $linksub;
$markerCat['###IMG###'] = $img;
$markerCat['###TEXT###'] = $value["name"];
...
$contentDown = "";
for ($i=0; $i < count($files); $i++) {
...
$markerDown['###FILEPATH###'] =$files[$i];
$markerDown['###FILENAME###'] = $names[$i];
$contentDown .=
$this->cObj->substituteMarkerArray($subTemplate['item'], $markerDown);
}
$markerCat['###DOWNLOADS###'] = $contentDown;
$contentCat .=
$this->cObj->substituteMarkerArray($subTemplate['category'],$markerCat);
}
$contentHead .=
$this->cObj->substituteMarkerArray($subTemplate['template'], $markerArray);
$contentHead .=
$this->cObj->substituteSubpart($subTemplate['template'],'###CATEGORIES###',$contentCat);
$content .=
$this->cObj->substituteSubpart($template,'###HEAD###',$contentHead);
So, dies war eine der unterschiedlichen Varianten, die ich versucht habe...
Diese Variante gibt das Template zwei Mal aus:
einmal mit CAT und BREADCRUMB ersetzt, die CAT-Liste mit unersetzten
Markern und nur einem Item.
Beim zweiten Mal sind CAT und BREADCRUMB nicht ersetzt, dafür wird die
CAT-Liste vollständig ausgegeben (5 Items). Hiebei sind alle Marker der
Liste ersetzt bis auf den Subpart DOWNLOAD, der wieder unersetzt
ausgegeben wird.
Kann mir vielleicht jemand helfen, den Knoten zu entwirren?
Vielen Dank schon mal im Voraus!
Silke
--
-------------------------------------
echolot digital worx GmbH
Schulze-Delitzsch-Str. 16
70565 Stuttgart
Tel. 0711 220 40 93 0
Fax. 0711 220 40 93 44
[name]@digital-worx.de
http://www.digital-worx.de
-------------------------------------
Geschaeftsfuehrer:
Sven Rahlfs
Mirko Ross
HRB 22 5281 Amtsgericht Stuttgart
USt.-Id. Nr.: DE218401190
-------------------------------------
Unseren Blog finden Sie unter:
http://think.digital-worx.de
More information about the TYPO3-german
mailing list