Zum Inhalt springen

typolink : dynamischer Titel / Alttext

Erstellt am 13. Januar 2007 · 6 Antworten · letzte Antwort am 28. Juni 2009

Tags: Links, Frage

automatix ·

Hallo Forum!

Ein scheinbar (!) kleines Problem...

Frage: Wie kann man dem typolink-Titel/Alttext Dynamik verleihen?

Ziel: "Sprechender" dynamischer Titel, der z.B. aus dem Titel/Desc etc. der Zielseite generiert wird.

Lösungsansatz: Laut TSref kann auf die Eigenschaft title die Function stdWrap angewandt werden. Also habe ich folgendes versucht:

typolink.title = TEXT
typolink.title.value = MyTitle

Leider funktioniert der Code nicht. (Oder liegts an der Syntax?)

Hat vielleicht jemand eine Idee, wie man das Problem löst?

Danke

steffenk ·

einfache Zuweisung wäre

typolink.title = MyTitle

dynamisch wäre das

typolink {
	parameter = 7
	title.cObject=TEXT
	title.cObject.field=title
}
automatix ·

Prima, vieln Dank!

Eine Frage noch: "parameter = 7" -- wofür steht die 7 hier?

// Nachtrag

Pardon, ich hab mich geirrt und voreilig das Thema auf "gelöst" gesetzt. Die vorgeschlagene Variante funktioniert bei mir leider nicht...

Da der Code:

tt_content.text {
    10 = TEXT
    10.field = bodytext
    10.wrap = |
    10.parseFunc {
        makelinks = 1
        makelinks.http.keep = path
        makelinks.http.extTarget = _blank
        makelinks.mailto.keep = path
        tags {
            link = TEXT
            link {
                current = 1
                
                typolink.wrap = |
                typolink.parameter.data = parameters : allParams
                typolink.ATagParams = class=link_A
                
                typolink.target = {$cLinkTagTarget}
                typolink.target.if.value.data = typolink.target
                typolink.target.if.isFalse.value.data
                typolink.target = _top

                typolink.extTarget = {$cLinkTagTarget}
                typolink.extTarget.if.value.data = typolink.target
                typolink.extTarget.if.isFalse.value.data
                typolink.extTarget = _blank
                
                /*
                typolink.title.cObject=COA
                typolink.title.cObject.10=TEXT
                typolink.title.cObject.10.value=[Link] 
                typolink.title.cObject.20=TEXT
                typolink.title.cObject.20.field=title
                */
                
                parameter = 7
                typolink.title.cObject = TEXT
                typolink.title.cObject.field = title
            }
        }
    }
}

Was mache ich falsch?

automatix ·
typolink.title.cObject=TEXT
typolink.title.cObject.field=uid

Wenn man anstelle von title uid schreibt, wird (unabhängig von der jeweiligen uid der Zielseite) folgendes HTML generiert:

title="5"

Wie kann man das erklären?

steffenk ·

das parameter war nur ein Beispiel für ein Link auf Seite 7

Wie ich seh hats bei Dir ja auch funktioniert, das entscheidene ist einfach, das Du das cObject brauchst, um ein Objekt daraus zu machen.

uid ist die ID der aktuellen Seite, title eben der Titel.
Du hast ja nur die Daten der aktuellen Seite und nicht die der Zielseite. Wenns um interne Linksgeht, kannst Du sie auch aus der DB holen.

automatix ·

Hallo!

Tut mir leid, aber ich verstehe es nicht... (Typisch, wenn Anfänger an die Feinhaiten ran wollen. 😉 )

steffenk schrieb

Wie ich seh hats bei Dir ja auch funktioniert,

Nö, leider nicht. Selbst da, als es "funktioniert" hatte, wurde title="5" auf der Seite mit uid 9 angezeigt.

steffenk schrieb

das entscheidene ist einfach, das Du das cObject brauchst, um ein Objekt daraus zu machen.

uid ist die ID der aktuellen Seite, title eben der Titel. Du hast ja nur die Daten der aktuellen Seite und nicht die der Zielseite.

Ja, das verstehe ich. Die Frage ist nur, wie (s. Code unten) man an die uid bzw. den title (oder sonst ein Feld) ran kommt.

steffenk schrieb

Wenns um interne Linksgeht, kannst Du sie auch aus der DB holen.

Genau, und das versuche ich die Ganze Zeit, bis jetzt ohne Erfolg.

OK, versuchen wir mal das Problem Schrittweise zu lösen:
1. uid/title/alias etc. der hard gecodeten Seite bekommen
2. uid/title/alias etc. der aktuellen Seite bekommen
3. uid/title/alias etc. der Zielseite "aus der DB holen"

Schritt 1. (Code: Zeilen 23-25)

lib.parseFunc {
        makelinks = 1
        makelinks.http.keep = path
        makelinks.http.extTarget = _blank
        makelinks.mailto.keep = path
}
lib.parseFunc.tags.link {
                current = 1
                
                typolink.target = {$cLinkTagTarget}
                typolink.target.if.value.data = typolink.target
                typolink.target.if.isFalse.value.data
                typolink.target = _top

                typolink.extTarget = {$cLinkTagTarget}
                typolink.extTarget.if.value.data = typolink.target
                typolink.extTarget.if.isFalse.value.data
                typolink.extTarget = _blank
                
                typolink.wrap = |
                typolink.parameter.data = parameters : allParams
                typolink.title = statischer-Titel
                typolink.parameter = 24
                typolink.title.cObject=TEXT
                typolink.title.cObject.field=title
                typolink.ATagParams = class=link_A
            }
        }
    }
}
lib.parseFunc_RTE < lib.parseFunc

Was ist hier falsch?

Avalarion ·

Wie hole ich die uid und pid eines verlinken Elementes?

Ich brauche das quasi für:

<a href="index.php?id=7" rev="7">

Gruß,

Bastian