Zum Inhalt springen

Eigenen Marker in tt_products Template ansprechen

Erstellt am 22. August 2006 · 8 Antworten · letzte Antwort am 1. Juli 2008

Tags: Templates & Layouts, Frage

boomi ·

Ich versuche einen selbst definierten Marker (###KATEGORIE###) in der tt_products extension anzusprechen, was auch wunderbar funktioniert, jedoch wird nicht der Inhalt zurückgegeben (z.B. ErsteKategorie) sondern das Object (TEXT)!

Auszug aus dem standard-html-template von tt_products

<!-- ###ITEM_SEARCH### begin
	Subpart for the search-form
	-->
    <div class="tt_products_item_search">
    	<form method="post" action="###FORM_URL###">
			<table cellspacing="2" cellpadding="0">
			  <tr>
				<td>Produktkategorie ###KATEGORIE### durchsuchen: </td>
				<td> <input size="30" maxlength="50" type="text" id="swords" name="swords" value="###SWORDS###" class="suchtext" /></td>
				<td><input type="image" src="fileadmin/images/struktur/go.jpg" name="Suchen" value="Search" alt="Suchen" /></td>
			  </tr>
			</table>
		
        </form>
    </div>
<!-- ###ITEM_SEARCH### end -->

Hiermit spreche ich den Marker erfolgreich an

plugin.tt_products.templateFile = fileadmin/products/vorlage_prod_css.html
plugin.tt_products.marks.KATEGORIE = TEXT
plugin.tt_products.marks.KATEGORIE.value= ErsteKategorie

Und die Ausgabe sieht dann wie folgt aus:

<form method="post" action="index.php?id=16&L=0&tx_ttproducts_pi1[backPID]=16">

			<table cellspacing="2" cellpadding="0">
			  <tr>
				<td>Produktkategorie TEXT durchsuchen: </td>
				<td> <input size="30" maxlength="50" type="text" id="swords" name="swords" value="" class="suchtext" /></td>
				<td><input type="image" src="fileadmin/images/struktur/go.jpg" name="Suchen" value="Search" alt="Suchen" /></td>
			  </tr>
			</table>

Was habe ich beim Ansprechen des Markers falsch gemacht?
Vielen Dank für die Hilfe

b.​kraus ·

Also Quellcode steht

foreach ($this->conf['marks.'] as $key => $value)	{
	$globalMarkerArray['###'.$key.'###'] = $value;
}

Schätze mal, es reicht wenn du schreibst

plugin.tt_products.marks.KATEGORIE = ErsteKategorie
boomi ·

das ist schlecht -> wollte eigentlich einen dynamischen inhalt einfügen (title).

danke für die hilfe

b.​kraus ·

Wie beschränkst du die Suche?

Wenn du für jede Kategorie eine eigene Seite machst, könntest du ja jeweils ein TS-Template anlegen, in welche du die Kategorie schreibst. Oder du definierst den Seiten- oder Untertitel als Kategoriename und passt den Wert mit TS an.

boomi ·

wäre auch eine möglichkeit, ich möchte nur die Seite so dynamisch wie möglich gestalten, daher ist praktischer wenn man "deinen" code einfach ändert 😉

if (is_array($this->conf['marks.']))	{
	 foreach ($this->conf['marks.'] as $key => $value)	{
		$globalMarkerArray['###'.$key.'###'] = $this->cObj->cObjGetSingle($this->conf['marks.'][$key],$this->conf['marks.'][$key.'.']);
			}
		}
b.​kraus ·

Klingt auch gut. Um die BC zu erhalten, sollte man vielleicht noch eine Abfrage

if (isset($this->conf['marks.'][$key.'.'])) {
    ...
} else {
    $globalMarkerArray['###'.$key.'###'] = $value;
}

einfügen.

Am Besten, du schickst diesen Vorschlag an Franz Holzinger, den Maintainer von tt_products.

typoDAU ·

hallo zusammen,

bin gerade an genau dem gleichen problem #787472 und habe mal eure vorschläge getestet.
boomi, dein snippet führt zu folgendem resultat:

Fatal error: Call to a member function cObjGetSingle() on a non-object in /var/www/typo/typo3conf/ext/tt_products/marker/class.tx_ttproducts_marker.php on line ...

b.kraus, deine modifizierung bewirkt, dass der marker überhaupt nicht angesprochen wird.

😢

typoDAU ·

da fehlt ja auch noch was...
nur wo ein objekt definiert ist, kann auch eines referenziert werden:

global $TSFE;
$this->cObj = $TSFE->cObj;

die fehlermeldung ist damit behoben. tun tut's aber trotzdem nicht 🙁