Zum Inhalt springen

table of content auf jeder seite

Erstellt am 6. Mai 2007 · 8 Antworten · letzte Antwort am 7. Mai 2007

Tags: Inhaltselemente, Frage

Blackgentoo ·

Hallo, ich möchte für meine Seite realisieren, dass auf jeder Seite ein table of content Menü erstellt wird, was zu den einzelnen überschriften linkt. Nur ich weiß garnicht, wie ich das am besten anfange. Hat vllt jemand von euch eine Ahnung wie man so etwas realisieren kann? So im Stil von den Wikipedia Inhaltsverzeichnissen...

cope ·

Hallo!

recht einfach ginge es so:

#------------------------------------------------------
# Template fuer ein Inhaltsverzeichnis (wenn man es braucht....)

temp.contentnav = CONTENT
temp.contentnav {
  table = tt_content
  select {
    pidInList = this
    orderBy = sorting
    where = colPos=0
  }
  renderObj = TEXT
  renderObj {
    field = header 
    wrap = <br />
    typolink.parameter.field = pid
    typolink.section.field = uid
  }
}

bei mehrsprachigen Seiten natürlich die select Eigenschaft noch modifizieren.

Gruß
Cope

Blackgentoo ·

hm, das funktioniert soweit schon ganz gut. was ich noch für ein problem damit habe ist, dass ich auch elemente in die Seite einfüge, die nur bilder enthalten. Solche Elemente haben dann ja auch nen header feld, nur die wollt ich eigentl nicht verlinken, kann man die auch noch ausbauen?

Blackgentoo ·

hm, ich denke ich müsste sowas machen wie, nur einfügen wenn der ctype text ist, und auch nur wenn daten drin stehen.. bin leider noch etwas neu in typo und beherrsche typoskritp noch nicht so gut, aber mit son paar if abfragen denk ich kann das doch gehen oder?

cope ·

Hi

müsste auch einfach mit andWhere gehen.
Ich hab spasseshalber hidden/deleted dazu genommen.
mit dem CType lagst Du schon gut mein ich. Deshalb != 'image'. So kommen Überschriften von "Nur Bild" Elementen nicht in die Liste.

temp.contentnav = CONTENT
temp.contentnav {
  table = tt_content
  select {
    pidInList = this
    orderBy = sorting
    where = colPos=0
    andWhere = CType != 'image' #<----
    andWhere = hidden = 0
    andWhere = deleted = 0
  }
  renderObj = TEXT
  renderObj {
    field = header 
    wrap = <br />
    typolink.parameter.field = pid
    typolink.section.field = uid
  }
}

LG
Cope

Blackgentoo ·

hm, jo klingt logisch. nur leider funktioniert dein typo code bei mir nicht. er übernimmt trotzdem noch die header von den bildern... versteh ich nicht

cope ·

Hallo nochmal,

kann auch nicht klappen.

Ich habs nur skizziert und das dooferweise nicht geschrieben... sorry

select {
    pidInList = this
    orderBy = sorting
    where = colPos=0 AND NOT deleted AND not hidden
    andWhere = CType IN ('text','textpic')
  }

Es gibt ja zig Möglichkeiten, deshalb hatte ich im letzten Post != genommen, was es ja nicht gibt (eher <>). Und lass die andWhere hinterher weg, weil die nat. das andWhere von vorher überschreiben. Wie gesagt, es war nur ne Skizze...

Hier hab ich es mal mit dem SQL IN probiert. Wenn Du alles ausser Bildüberschriften haben willst, kannst Du auch

andWhere = CType <> 'image'

versuchen.

In Summe also

temp.contentnav = CONTENT
temp.contentnav {
  table = tt_content
  select {
    pidInList = this
    orderBy = sorting
    where = colPos=0 AND NOT deleted AND not hidden
    languageField = sys_language_uid
    #andWhere = CType IN ('text','textpic')
    andWhere = CType <> 'image'
  }
  renderObj = TEXT
  renderObj {
    field = header 
    wrap = <br />
    required=1
    typolink.parameter.field = pid
    typolink.section.field = uid
  }
}

Gruß
Cope

cope ·

Klasse!

ich lern auch jeden Tag hier was Neues...

Axo, wenn alles klappt, Häckchen für "Thema erledigt" nicht vergessen 😃

LG
Cope