Zum Inhalt springen

Mein erstes Testprojekt

Erstellt am 28. Juli 2009 · 13 Antworten · letzte Antwort am 4. August 2009

Tags: Templates & Layouts, Frage

heinetz ·

Hallo Forum,

ich habe gerade mal wieder etwas Zeit, mich meinem Testprojekt zu widmen. Darin versuche ich ein von mir vor einiger Zeit umgesetzte Website nochmal mit TemplaVoila umzusetzen. Da ich die Seite mit php-includes schon einigermassen modular aufgebaut habe, ist es eine gute Übung für mich die Umsetzung zu adaptieren.

Die Seite steht grundsätzlich. Dazu habe ich mit diesem Tutorial meine Vorlagen umgesetzt.

- Das Hauptmenu habe ich hinbekommen, indem ich, wie in dem Beispiel folgenden (abgewandelten) Code in das Feld Konfiguration meines Haupttemplates eingetragen habe:

#Erstellt die Hauptnavi und packt sie in eine lib 
lib.menu = HMENU 
lib.menu{ 
         entrylevel = 1 
         1 = TMENU 
         1.NO = 1 
         1.NO.linkWrap = <div><li> | </li></div> 

         1.ACT < .NO
         1.ACT = 1
         1.ACT.linkWrap = <div class="highlite" id="menu_highlite"><li> | </li></div> 
}

..., beim Mapping ein Element Menu vom Type TypoScript Object Path erzeugt und dort den Object path lib.menu eingetragen habe.

- das Servicemenu ging auch relativ einfach, indem ich die Seitenstruktur um einen Sysordner 'Servicemenu' erweitert habe, und darin die Serviceseiten angelegt habe. Für das Servicemenu habe ich, wie für das menu wie folgt, eine lib im Template angelegt:

#Servicemenü
lib.serviceMenu = HMENU
lib.serviceMenu{
                special = directory
                special.value = 172
                1 = TMENU
                1.NO.linkWrap = <li>|</li>
}

Beim Mapping habe ich ein neues Element ServiceMenu
gemapped und hier lib.serviceMenu als Objectpath eingetragen.

Aber jetzt komme ich nicht weiter ;( Wie löst man
am besten folgende Aufgabe:

Meine Seitenstruktur sieht in etwa so aus:

0.0 Home (http://example.org)
1.0 Bereich A (http://example.org/bereich_a)
1.1 Unterseite A1 (http://example.org/bereich_a/unterseite_a1)
1.2 Unterseite A2 (http://example.org/bereich_a/unterseite_a2)
2.0 Bereich B (http://example.org/bereich_b)
2.1 Unterseite B1 (http://example.org/bereich_a/unterseite_b1)
2.2 Unterseite B2 (http://example.org/bereich_a/unterseite_b2)

usw.

Auf sämtlichen Seiten (ausser dem Homepage) soll
ein Untermenü des aktuellen Bereichs angezeigt werden. Also z.B. auf den Seiten 1.0,1.1 und 1.2 bestehend aus Links auf die Seiten 1.1 und 1.2
Ich habe erstmal versucht, das lib.menu wie folgt zu adaptieren:

#Erstellt die Subnavi und packt sie in eine lib 
lib.sumenu = HMENU 
lib.submenu{ 
         entrylevel = 2 
         2 = TMENU 
         2.NO = 1 
         2.NO.linkWrap = <div><li> | </li></div> 

         2.ACT < .NO
         2.ACT = 1
         2.ACT.linkWrap = <div class="highlite" id="menu_highlite"><li> | </li></div> 
}

und wie die anderen Menus zu mappen. Das ging schonmal nicht.

Warum nicht ?

Da aber dieses Untermenu aus mehr bestehen soll,
als nur einer Textliste, löst der Ansatz eh nicht die Aufgabe. So soll es am Ende aussehen:

html --------------------------------------
<a href="1.1"><img alt="" /></a>
Teasertext 1.1 <a href="1.1">weiter ...</a>
<a href="1.1"><img alt="" /></a>
Teasertext 1.1 <a href="1.1">weiter ...</a>
-------------------------------------------

Wie macht man soetwas am besten ?

danke für Tipps und

beste gruesse,
heinetz

heinetz ·

Hallo Forum,

ich habe etwas zum Subenu gefunden und ausprobiert:

#Erstellt die Subnavi und packt sie in eine lib 
lib.submenu = HMENU 
lib.submenu{ 
            entrylevel = 1
            special = directory
            special.value.data = field:uid
            1 = TMENU 
            1.NO = 1 
            1.NO.linkWrap = <div><li> | </li></div>         
}

Das stellt mir ein einfaches Text-Untermenü dar. Soweit sogut. Das Untermenü
besteht aber immer aus den Unterseiten der gerade aufgerufenen Seite. Das
heisst, dass es auf z.B.

der Seite 1.0 aus 1.1, 1.2 und 1.3 besteht, was richtig ist
der Seite 0.0 aus 1.0, 2.0 und 3.0 dafür aber, was nicht richtig ist
der Seite 1.1 aus garnichts besteht, was auch nicht richtig ist

gewollt war auf der Seite:

0.0 aus garnichts dafür aber
der Seite 1.1 aus 1.1, 1.2 und 1.3 besteht.

Geht sowas ?

beste gruesse,
heinetz

heinetz ·

Hallo Forum,

es ist nicht so, dass ich nicht erstmal selbst probiert hätte, bevor
ich ewig lange Texte hier hineinstelle 😉

... aber den Fehler 'entrylevel' != entryLevel habe ich jetzt erst gefunden ;(

dennoch, eigentlich will ich ja kein Text-Unter-Menü, sondern wissen
wie man eine Aufgabe, wie die beschriebene sinnvoll löst.

beste gruesse,
heinetz

sunixzs ·

Öhm, nimms mir nicht übel - genau verstanden habe ich die Texte gerade nicht - daher poste ich mal Standard-Navigationen, wie ich sie verwende. Vielleicht kannst Du Dir da was rausziehen.

Dann sehe ich, dass Du wohl Bilder in die Navigationspunkte packen möchtest. Falls das einfach nur kleine Pfeile sind oder ähnliches, die sich wiederholen, dann geht das gut mit CSS:

#naviMain li a {
background: transparent url(../images/bgNaviMain.gif) right center no-repeat;
margin-right: 10px;
padding-right: 9px;
}

#naviMain li a.act,
#naviMain li a:hover {
background: transparent url(../images/bgNaviMainRO.gif) right center no-repeat;
}

Bilder direkt um den Link zu wrappen ginge natürlich auch, dann ist das Bild aber nicht mehr Bestandteil des Links. Wenn man unterschiedliche Bilder haben möchte, gestaltet sich das mMn schwierig, da man die Navigationspunkte eigentlich nur durchzählen kann - wenn sich dann in der Navigation etwas ändert, passen die Bilder nicht mehr zu den Links. (btw. ein Workaround über CSS-Eingebundene Bilder aus "Seite -> Resourcen -> Dateien" fände ich mal interessant. Ein Ansatz könnte "stdWrap.cObject" sein.)

Dann ist mit aufgefallen, dass du einmal "lib.sumenu" und einmal "lib.submenu" schreibst. Vielleicht liegt da der Hund begraben.

Ich laber schon wieder zuviel ;-)

Hier die TS-Beispiele:

Drei Ebenen in drei verschiedenen Marker (z. B. drei nebeneinander liegende Felder mit den einzelnen Ebenen):

# Ebene 1
temp.10 = HMENU
temp.10.entryLevel = 0
temp.10.1 = TMENU
temp.10.1 {
	wrap = <div id="naviMain"><ul>|</ul></div>
	
	NO {
		ATagTitle.field = subtitle // abstract
		allWrap = <li class="first">|</li> |*| <li class="middle">|</li> |*| <li class="last">|</li>
		stdWrap.htmlSpecialChars = 1
	}
	ACT = 1
	ACT {
		ATagTitle.field = subtitle // abstract
		allWrap = <li class="first">|</li> |*| <li class="middle">|</li> |*| <li class="last">|</li>
		ATagParams = class="act"
		stdWrap.htmlSpecialChars = 1
	}
}

page.10.marks.NAVIMAIN < temp.10

# Ebene 2
temp.15 = HMENU
temp.15.entryLevel = 1
temp.15.1 = TMENU
temp.15.1 {
	wrap = <div id="naviMain2"><ul>|</ul></div>
	
	NO {
		ATagTitle.field = subtitle // abstract
		allWrap = <li class="first">|</li> |*| <li class="middle">|</li> |*| <li class="last">|</li>
		stdWrap.htmlSpecialChars = 1
	}
	ACT = 1
	ACT {
		ATagTitle.field = subtitle // abstract
		allWrap = <li class="first">|</li> |*| <li class="middle">|</li> |*| <li class="last">|</li>
		ATagParams = class="act"
		stdWrap.htmlSpecialChars = 1
	}
}


page.10.marks.NAVIMAIN2 < temp.15

# Ebene 3
temp.25 = HMENU
temp.25.entryLevel = 2
temp.25.1 = TMENU
temp.25.1 {
	wrap = <div id="naviMain3"><ul>|</ul></div>
	
	NO {
		ATagTitle.field = subtitle // abstract
		allWrap = <li class="first">|</li> |*| <li class="middle">|</li> |*| <li class="last">|</li>
		stdWrap.htmlSpecialChars = 1
	}
	ACT = 1
	ACT {
		ATagTitle.field = subtitle // abstract
		allWrap = <li class="first">|</li> |*| <li class="middle">|</li> |*| <li class="last">|</li>
		ATagParams = class="act"
		stdWrap.htmlSpecialChars = 1
	}
}

page.10.marks.NAVIMAIN3 < temp.25

Erste Ebene in einem Marker und viele weitere Ebenen in einem anderen Marker (z. B. Hauptnavi oben und alle weiteren Punkte am linken Rand):

# Ebene 1
temp.10 = HMENU
temp.10.entryLevel = 0
temp.10.1 = TMENU
temp.10.1 {
	wrap = <div id="naviMain"><ul>|</ul></div>
	
	NO {
		ATagTitle.field = subtitle // abstract
		allWrap (
			<li class="first">|</li> |*| 
			<li class="middle">|</li> |*| 
			<li class="last">|</li>
		)
		stdWrap.htmlSpecialChars = 1
	}
	ACT < .NO
	ACT = 1
	ACT {
		ATagParams = class="act"
	}
}

page.10.marks.NAVI_MAIN < temp.10



temp.15 = HMENU
temp.15.entryLevel = 1
temp.15.1 = TMENU
temp.15.1 {
	wrap = <div id="naviMain2"><ul>|</ul></div>
	NO = 1
	NO {
		wrapItemAndSub (
			<li class="first">|</li> |*| 
			<li class="middle">|</li> |*| 
			<li class="last">|</li>
		)
		stdWrap.htmlSpecialChars = 1
		ATagTitle.field = subtitle
	}
	
	IFSUB = 1
	IFSUB {
		wrapItemAndSub (
			<li class="first sub">|</li> |*| 
			<li class="middle sub">|</li> |*| 
			<li class="last sub">|</li>
		)
		stdWrap.htmlSpecialChars = 1
		ATagTitle.field = subtitle
	}
	
	ACTIFSUB = 1
	ACTIFSUB {
		wrapItemAndSub (
			<li class="first sub">|</li> |*| 
			<li class="middle sub">|</li> |*| 
			<li class="last sub">|</li>
		)
		stdWrap.htmlSpecialChars = 1
		ATagTitle.field = subtitle
		ATagParams = class="act"
	}
	
	ACT = 1
	ACT {
		wrapItemAndSub (
			<li class="first act">|</li> |*| 
			<li class="middle act">|</li> |*| 
			<li class="last act">|</li>
		)
		stdWrap.htmlSpecialChars = 1
		ATagTitle.field = subtitle
		ATagParams = class="act"
	}
}

temp.15.2 < .temp.15.1
temp.15.2.wrap = <ul>|</ul>
temp.15.3 < .temp.15.2
temp.15.4 < .temp.15.3

page.10.marks.NAVI_MAIN2 < temp.15

Hier noch ein Beispiel für eine Navigation in Form einer Pulldown-Liste (<select><option>..):

# Shortcut-Menu
shortcut = COA
shortcut {
	10 = HMENU
	10 {
		special = directory
		special.value = 1,10,9
		
		wrap (
			<div id="shortcut">
				<h3>Schnellzugriff</h3>
				<form id ="level1" action="index.php" method="get" enctype="multipart/formdata">
					<select name="id" onChange="submit();">|</select>
					<noscript><input type="image" 
						class="submit" 
						src="fileadmin/images/btnSearch.gif" 
						value="suchen" 
						title="Gehe zur Seite" 
						name="shortcutBtn" 
						onmouseover="this.src='fileadmin/images/btnSearchRO.gif'" 
						onmouseout="this.src='fileadmin/images/btnSearch.gif'" /></noscript>
				</form></div>
		)

		1 = TMENU 
		1 { 
			expAll = 1
			NO = 1 
			ACT = 1 
			CUR = 1
			wrap =  <ul>|</ul> 
			NO { 
				doNotLinkIt = 1
				stdWrap.cObject = COA
				stdWrap.cObject {
					20 = TEXT
					20.value = <option value="
					30 = TEXT
					30.dataWrap = {field:uid}">
					40 = TEXT
					40.field = nav_title // title
					50 = TEXT
					50.value = </option>
				}
			} 
			ACT < .NO 
			ACT {
				stdWrap.cObject {
					30.dataWrap = {field:uid}" selected="selected" class="act">
				}
			}
			CUR < .NO 
			CUR {
				stdWrap.cObject {
					30.dataWrap = {field:uid}" selected="selected" class="cur">
				}
			}
		} 
		2 < .1 
		2 {
			NO.stdWrap.cObject.40.wrap = -&nbsp;|
			ACT.stdWrap.cObject.40.wrap = -&nbsp;|
			CUR.stdWrap.cObject.40.wrap = -&nbsp;|
		}
		3 < .2
		3 {
			NO.stdWrap.cObject.40.wrap = - -&nbsp;|
			ACT.stdWrap.cObject.40.wrap = - -&nbsp;|
			CUR.stdWrap.cObject.40.wrap = - -&nbsp;|
		}
		4 < .3
		4 {
			NO.stdWrap.cObject.40.wrap = - - -&nbsp;|
			ACT.stdWrap.cObject.40.wrap = - - -&nbsp;|
			CUR.stdWrap.cObject.40.wrap = - - -&nbsp;|
		}
	}
}

page.10.marks.SHORTCUT < shortcut
Michaelh74 ·

Wie schon gesagt, geht z.B. per CSS oder imgBefore oder imgAfter kuck mal in die TSREF zu HMENU, da steht diese Option auch drin. Damit kannst Du sowas wie nen Page-Teaser machen. Das Bild kannst Du z.B. aus den Seiten - Ressources / Dateien ziehen.

Gruß
Michael

heinetz ·

Hallo Forum,

schonmal danke für eure Tipps, aber ich denke, mir fehlt vielmehr das grundsätzliche Verständnis, wie meine Anforderung in Typo3 sinnvoll
umgesetzt wird.

ich habe mekin Testprojekt nun mal auf einen Webserver installiert.
damit man bei der Diskussion nicht aneinander vorbeiredet. Zu finden
unter:

http://typo3.digitale.mehrwerte.net/

Das ist eine frische Installation. Die Zugänge sind unverändert.

Ich habe das nicht gemacht, um Code zu schnorren und will schon alles
selbst machen. Es ist halt nur einfacher, über etwas konkretes zu reden,
als theoretisch aneinander vorbeizureden.

Wenn sich das jemand ansehen mag:
---------------------------------
Auf der (Bereichsober-)Seite 'Bereich A' und den darunterliegenden Seiten habe ich das Element 'Kontext' mit HTML befüllt. Dieses HTML ist das Quasi-Menü:
Von hier aus sind die Unterseiten des 'Bereich A' verlinkt.

In Anbetracht der Tatsache, dass ein CMS den Sinn hat, einem Redakteur ohne
HTML-Kenntnisse ein Werkzeug in die Hand zu geben, mit dem er Inhalte der
Site so verändern kann, dass die vorgegebenen inhaltliche Logik und das Design
gewart werden, muss das natürlich anders gehen, als ich's nun gemacht habe.

Das ist die Logik:

  • Ein Bereich (also eine Seite auf 2. Ebene) ist über das Haupstmenü automatisch erreichbar. (Das steht ja soweit)

  • Eine Seite dirrekt unterhalb dieses Bereichs soll über das (ich nenne es mal) 'Teasermenü' ereichbar sein.

  • Dieses Teasermenü soll auf der Oberseite und allen Unterseiten an der Stelle Kontext eingebunden werden (ohne Typo3 ist es ein php:include) das Element 'Kontext' ausfüllen.

  • Zu jeder Seite auf 2. Ebene MUSS es einen Eintrag bestehend aus HL Bild und Text geben, der im Teasermenü erscheint.

Ich denke (bitte berichtigt mich), um die Logik abzubilden, müsste einer
Seite in zweiter Ebene fest ein Bild, ein Teasertext und eine Teaserheadline
zugeordnet werden, die dann an dieser Stelle eingeblendet werden.

Wie macht man das am besten ?

danke und gruss,
heinetz

[/list]

heinetz ·

Und eine ganz grundsätzliche Frage hinterher:

was darf/was sieht ein Redakteur letztendlich ?

ich habe schon gesehen, dass ich als admin neue Benutzer anlegen und denen ganz differenziert Rechte vergeben kann. Es geht mir erstmal garnicht darum, wie man das macht, sondern vielmehr, wie dieser Rechte im Normalfall gesetzt werden, d.h. welche Module für den Redakteur gedacht sind und welche nicht.

danke für Tipps und

beste gruesse,
heinetz

Michaelh74 ·

Sehe ich das so richtig - von der Struktur her:

Bereich A
|- HL 1
|- HL 2
|- HL 3

Bereich B
|- HL 1
|- HL 2
|- HL 3

Und wenn man auf einen Bereich geht, soll die HLs rechts als Teaser wie in Deinem Beispiel angezeigt werden?

Falls, ja ist das ein normales Menü mit dem entryLevel = 1.

Was die Rechte anbelangt. Das kommt immer darauf an wer damit arbeitet. Sind es DAUs dann immer so wenig Rechte wie gerade nötig sind.
Pflegen 3 in einer Firma nur rein Texte ein und einer, der sich technisch besser auskennt und geschult wurde verwaltet das System intern, kann dieser auch mal mehr Rechte bekommen.

Gruß
Michael

heinetz ·

Hallo Michael,

so sieht es aus:

Bereich A besteht aus den Seiten:

1.0 Bereich A (Oberseite, Erreichbar über das Hauptmenü)
1.1 Bereich A1 (Unterseite)
1.2 Bereich A2 (Unterseite)
1.3 Bereich A3 (Unterseite)

Die Seiten 1.1, 1.2 und 1.3 sollen aus dem (ich nenne es mal) Teasermenü erreichbar sein. Das Teasermenü ist auf den Seiten 1.0, 1.1, 1.2 und 1.3
sichtbar und sieht so aus:

--------------------------
Headline Teaser für A1
Grafik Teaser für A1 (verlinkt mit A1)
Teasertext für A1 ... mehr (verlinkt mit A1)

Headline Teaser für A2
Grafik Teaser für A2 (verlinkt mit A2)
Teasertext für A2 ... mehr (verlinkt mit A2)

Headline Teaser für A3
Grafik Teaser für A3
Teasertext für A3 ... mehr (verlinkt mit A3)
--------------------------

Das ist kein Menü in dem Sinne, das nur aus dem Seitentitel generiert wird,
somdern ein Block, der sich aus Elemeten (die je eines pro Unterseite)
zusammensetzt und als ganzes auf sämtlichen Unterseiten, sowie der Oberseite angezeigt wird.

Idealerweise sieht es so aus, dass auf der zu pflegenden Seite:

A) dieses Teasermenü angezeigt wird, aber nicht editierbar ist.
Es besteht aus je einem Teaser für eine Unterseite in dem
Bereich A( eine Unterseite = 1 Teaserelement, 3 Unterseiten
= 3 Teaserelemente).

A1) dieses Teasermenü angezeigt wird, aber nur der Teaser für die
Seite A1 editierbar ist. Es besteht aus je einem Teaser für
eine Unterseite in dem Bereich A. Im Fall einer Seite A1 also
mindestens aus dem Teaser für die Seite A1.

A2) dieses Teasermenü angezeigt wird, aber nur der Teaser für die
Seite A2 editierbar ist. Es besteht aus je einem Teaser für eine
Unterseite in dem Bereich A. Im Fall einer Seite A2 also mindestens
aus dem Teaser für die Seite A2. Wenn es ausserdem schon eine Seite
A1 gibt, besteht es mindestens aus zwei Teasern.

Das Menü mit entrylevel=1 habe ich mittlerweile schon hinbekommen. Ausserdem
habe ich herausgefunden, wie ich einen Block auf diesersen Seiten einbinden
kann.

Zu den Rechten/Unterschieden zwischen Admin und Redakteur:

Wenn ich mir die Seite als Admin mit dem Modul 'Anzeigen' ansehe,
sehe ich kleine Stift-Icons, die mich die Seite editieren lassen.
Diese Ansicht sieht aus, wie für einen Laien ohne Programmierkenntnisse
gemacht. Das entspricht der Idee eines CMS, daher gehe ich davon aus,
dass das bei Typo3 für Redakteure gedacht ist. Zwei Dinge bekomme ich
von hier aus nicht hin:

1) Neue Seiten anlegen (was tatsächlich bei de meisten kleineren Websites
keine Aufgabe für einen Redaktuer ist)

2) Inhaltselemente 'stapeln'. Beispiel: Ich habe als Admin ein Inhaltselement für Text angelegt. Diesen Text kann der Redakteur in dieser Ansicht editieren.
Nun möchte er aber unterhalb des Textes ein Bild und darunter wieder einen
Text stehen haben. Nun könnte ich ihm als Admin statt einem Element 'Text' drei
Elemete 'Text' 'Bild' 'Text' zur Verfügung stellen, deren Inhalte er dann editieren kann, aber ich möchte ihm eigentlich ermöglichen, dass er seine
Seite aus von mir vorgefertigten Elementen zusammensetzen kann.

Was ist dazu notwendig ?

Das Ansicht Seite(TV) ?

Die ist ja auch recht intuitiv bediehnbar, allerdings nicht mehr Wysiwyg.

Sorry für den ellenlangen Text, aber kürzer ging es nicht 😉

danke für's lesen und

beste gruesse,
heinetz

Michaelh74 ·

Also wenn ich das richtig verstehe, ist das was Du suchst genau ein Page-Teaser Menü. Title der Seite, Bild + Text.
Das gibt auch Extensions die das erledigen. Such mal nach pageteaser.
Oder es geht wie gesagt auch rein mit TypoScript.
Wie ein normales Text Menü. Dann + Bild aus Ressources und Text z.B. aus page description. Noch ein bisschen CSS und gut ist's.

Du kannst User auch direkt im FE editieren lassen. Dann musst Du für diese den Admin Panel entsprechend konfigurieren. Bei mir arbeiten aber fast alle Redakteure im Backend (außer jemand editiert nur ein paar Texte). Die meisten kommen damit gut und schnell nach einer kurzen Einführung klar.

Gruß
Michael

heinetz ·

Hallo Michael,

ich hatte ein paar Tage keine Zeit, mich mit T3 zu beschäftigen.

Danke erstmal für den Tipp mit den Extensions.

Ich möchte erstmal versuchen, das rein mit TypoScript zu machen und
Deinen Ansatz (Textmenu+'Bild aus Ressources'+z.B. Description)
nachvollziehen/umsetzen. Wenn ich's richtig verstanden habe:

- Der Teaser wird aus Teilen der Seite(n) dynamisch zusammengesetzt.
- Das ist zunächtmal ein TypoScript, wie für ein "entryLevel = 1" -Menü

lib.kontext = HMENU 
lib.kontext{ 
            entryLevel = 1 
            1 = TMENU 
            1.NO = 1 
            1.NO.linkWrap = <li>|</li> 
}

erzeugt folgenden HTML-Code:

<li><a href="index.php?id=179" onfocus="blurLink(this);">Bereich A1</a></li>
<li><a href="index.php?id=178" onfocus="blurLink(this);">Bereich A2</a></li>

... usw.

- Das soll um Inhalte der Seiten (Bild+Text) erweitert werden.

Ich benötige folgenden HTML-Code:

<h2>KONTEXT_HL_bereich_a1</h2>
<a class="teaser" href="index.php?id=179" title="KONTEXT_LINKTITLE_bereich_a1"><img src="../_content/images/kontext/KONTEXT_IMAGE_bereich_a1.jpg" alt=""></a>
<p>KONTEXT_TEASERTEXT_bereich_a1 <a class="teaser" href="index.php?id=179" title="KONTEXT_LINKTITLE_bereich_a1">mehr</a>
</p>

<h2>KONTEXT_HL_bereich_a2</h2>
<a class="teaser" href="index.php?id=178" title="KONTEXT_LINKTITLE_bereich_a2"><img src="../_content/images/kontext/KONTEXT_IMAGE_bereich_a2.jpg" alt=""></a>
<p>KONTEXT_TEASERTEXT_bereich_a2 <a class="teaser" href="index.php?id=178" title="KONTEXT_LINKTITLE_bereich_a2">mehr</a>
</p>

... usw.

Das bedeutet, dass von dem HMENU letztlich nur die Links gebraucht werden
und alle anderen angezeigten Elemente (KONTEXT_HL, KONTEXT_LINKTITLE, KONTEXT_IMAGE und KONTEXT_TEASERTEXT) Contentelemte der Seite sind.

Ich verstehe die Objekthierarchie noch nicht wirklich ;(

Wie schaffe ich es z.B., dass in dem Linktext nicht der Seitentitel steht,
sondern ein anderes Element der Seite ?

Ich habe mal folgendes probiert:

lib.kontext = RECORDS
lib.kontext {
             tables = tt_content
             source = tt_content_242
}

In 242 steht nun z.B. KONTEXT_TEASERTEXT_bereich_a2. Nur muss ich dazu ja die
242 kennen ;(

danke für Tipps und

beste gruesse,
heinetz

sunixzs ·

Hallo heinetz,

hier ein Ansatz, den du verfolgen könntest. (Ich habe leider zZ wenige Zeit das zum Problem anzupassen)

Ausschnitt aus dem TS der Navigation:

1 = TMENU
1 {
	#expAll = 1
	NO = 1
	ACT = 1
	CUR = 1
	wrap =  <ul>|</ul>
	NO {
		doNotLinkIt = 1
		stdWrap.cObject = COA
		stdWrap.cObject {
			20 = TEXT
			20.dataWrap = <li><a href="index.php?id="{field:uid}">
			25 = TEXT
			25.dataWrap = <img src="uploads/media/{field:media}" width="10" height="10" border="0" alt="" />
			30 = TEXT
			30.field = nav_title // title
			30 = TEXT
			40.value = </a></li>
		}
	}
}

Mit "doNotLinkIt = 1" wird das Erzeugen des Links abgeschaltet. Dann kann man sich den Link selber zusammen bauen mit "stdWrap.cObject = COA".

Viel Erfolg.

Edith sagt: "expAll" war fehl am Platz.

Edith Zwei sagt:

Das Media-Feld könnte man vllt. besser so auslesen:

1 = TMENU
1 {
	expAll = 1
	NO = 1
	ACT = 1
	CUR = 1
	wrap =  <ul>|</ul>
	NO {
		doNotLinkIt = 1
		stdWrap.cObject = COA
		stdWrap.cObject {
			20 = TEXT
			20.dataWrap = <li><a href="index.php?id="{field:uid}">
			25 = IMAGE
			25 {
					file = fileadmin/images/ecDefault.jpg
					file.maxW = 10
					file.import = uploads/media/     
					file.import.data = levelmedia:-1,slide 
					file.import.listNum = 0
					file.import.override.field = media
			}
			30 = TEXT
			30.field = nav_title // title
			30 = TEXT
			40.value = </a></li>
		}
	}
}
heinetz ·

Hallo sunixzs,

tausend Dank für das Codebesispiel !

ich denke, ich habe den Ansatz dem Grunde nach verstanden:

  • * Die individuelle Navigation wird als TMENU definiert. Das liefert die Logik, die richtigen Seiten 'irgendwie' aufzulisten.

    * mit 'doNotLinkIt = 1' schaltet man die Ausgabe beim Auflisten dann erstmal ab.

    * mit 'stdWrap.cObject = COA' baut man sich etwas eigenes zusammen und defnidert dann:

    * woraus es besteht: {field:media}, {field:uid}, nav_title // title

    Fragen dazu:
    ------------
    {field:uid} erscheint mir logisch, denn die gibt das Sytemn vor und wird
    vom Redakteur nicht editiert. Wo genau {field:media} defniert wird, kann
    ich mir nicht vorstellen, scheint aber auch ein fester Bestandteil der
    Seite mit der uid zu sein. Abweichend von dieser Notation ({field:xxx})
    fällt mir die Zeile 17 auf:

    30.field = nav_title // title

    Wie ist das zu verstehen?

    Meine Vermutung:

    'nav_title' klingt nach einem selbst vergebenen Namen. Möglicherweise ist
    das das Element, das als 'field_nav_title' gemapped wurde ? Wozu ich keine
    Idee habe ist, was wohl der andere Part ' // title' bewirkt. Oder ist das
    ein quasi Kommentar ?

    ich lege damit erstemal los.

    beste gruesse,
    heinetz

heinetz ·

Hallo sunixzs,

ich habe Deinen Ansatz verfolgt, eingesetzt und strk verkürzt:

lib.test {
          entryLevel = 1          
          1 = TMENU 
          1{
            NO = 1
            NO{
               doNotLinkIt = 1
               stdWrap.cObject = COA
               stdWrap.cObject {
                                10 = TEXT
                                10.field = nav_title // title 
                                10.wrap = <h2>|</h2>
                                20 = TEXT
                                20.dataWrap = <p>Den soll der Redakter eingeben können <a class="teaser" title="Den soll der Redakteur eingeben können" href="index.php?id={field:uid}">mehr</a></p>
                               }
              }
           }
        }

Zunächst mal lasse ich das Image aussen vor. Interessant sind wohl
die Zeilen #11 und #14.

#11 Hier wird der Title aus dem Seitenbaum verwendet

Es soll aber ein vom Redaktuer einzugebener Text, der nur hier angezeigt werden soll (in die meta description kann man den text nicht schreiben) angezeigt werden.

#14 ... und hier die vom System vergebene Seitenid

wird bei der Verwendung von RealUrl sicher Probleme machen, soll mich aber an der Stelle (noch) nicht interessieren

Wie löse ich die Aufgabe in Zeile #11 ?

danke für Tipps und

beste gruesse,
heinetz