Zum Inhalt springen

Rechte Spalte dauerhaft anzeigen

Erstellt am 10. Oktober 2007 · 11 Antworten · letzte Antwort am 14. Oktober 2007

Tags: Frage

hoellix ·

Hallo,
ich möchte gerne, dass der Inhalt meiner rechten Spalte immer angezeigt wird, egal welche Seite ich im Menü aufrufe.

Dazu habe ich mir folgendes überlegt:

# Rechte Spalte immer mit dem Inhalt aus Seite ID=29 befüllen
page.10.marks.spalte_rechts = CONTENT
page.10.marks.spalte_rechts {
                                table = tt_content
                                select.pidInList = 29
                                select.where = colPos = 2
                                select.oderBy = sorting
                              }

Leider ohne Erfolg. Vielleicht kann mir jemand weiterhelfen!?

hoellix ·

Da ist ein Inhalt. Aber ich weiß nicht, ob es die Spalte 2 ist. Hab es ja mit TV gemacht und das field heißt spalte_rechts. Und dieses habe ich auf der Seite mit der ID 29 befüllt und wird auch dargestellt.

Habe aber auch versucht andere Werte (1-4) statt 2 einzugeben. Jeder Wert brachte keinen erfolg. 🙁

karlchen ·

ich stand vor kurzem auch vor dem Problem, und habe es so gelöst

geh in die XML deiner spalte_Rechts

dort solltest du eine

<oldStyleColumnNumber type="integer">0</oldStyleColumnNumber>

finden, in meinem Fall war zwischen dem Tag eine 1 oder oder eine 0,
hier habe ich nun die 3 eingetragen.

In der alten Anordnung von Typo3 gab es ja 4 Spalten
Links(1) | Normal(0) | Rechts(2) | Rand(3),
hier hat man dann, wie in deiner select Abfrage, nach "colPos", die Abfrage für die Datenbank zusammengebaut.

Wenn man jetzt in TV für das Content Element die <oldStyleColumnNumber> setzt, wird diese beim erstellen eines Inhaltselements mit in die Datenbank geschrieben. (nach dem Setzen nicht speichern und Cache löschen vergessen)

Nun musst du noch zusätzlichen TYPOSCRIPT Code in der XML Struktur von deiner spalte_ rechts hinzufügen.

Im Original sollte da folgendes stehen, (wenn du es als Content Element gemappt hast.)

...
<eType>ce</eType>
					<TypoScript><![CDATA[
	10= RECORDS
	10.source.current=1
	10.tables = tt_content
	10.wrap = <!--TYPO3SEARCH_begin--> | <!--TYPO3SEARCH_end-->
                    ]]></TypoScript>
	<oldStyleColumnNumber type="integer">3</oldStyleColumnNumber>
...

das änderst du ab zu

...
<eType>ce</eType>
					<TypoScript><![CDATA[
5 = CONTENT
	5.table = tt_content
  	5.select.orderBy = sorting
  	5.select.where = colPos=3
  	5.select.pidInList = hier die PID der Seite die den rechten Inhalten liefern soll      
  	5.stdWrap.if.value = hier die PID der Seite die den rechten Inhalten liefern soll      
  	5.stdWrap.if.equals.data = page:uid
  	5.stdWrap.if.negate = 1

	10= RECORDS
	10.source.current=1
	10.tables = tt_content
	10.wrap = <!--TYPO3SEARCH_begin--> | <!--TYPO3SEARCH_end-->
                    ]]></TypoScript>
<oldStyleColumnNumber type="integer">3</oldStyleColumnNumber>
...

Nun wird zweimal ein Content Element in die Spalte eingefügt. (5= CONTENT plus 10= RECORDS).
Das hat den Vorteil, das ich auf jeder Seite zusätzlich noch weiteren Inhalt in die Rechte Spalte schreiben kann, die dann auch nur für diese Seite gültig ist.

        5.stdWrap.if.value = hier ...
  	5.stdWrap.if.equals.data = page:uid
  	5.stdWrap.if.negate = 1

Wenn deine ID 29 zum beispiel die Startseite ist, verhindert die If Abfrage das auf der Seite der inhalt der spalte_rechts doppelt erscheint.

Ich hoffe ich habe mich verständlich aus gedrückt und man kann mir folgen 😉

Da ich selbst noch neu bin in TV, kann ich nicht sagen ob das die beste Lösung ist, jedoch funktioniert sie bei mir.

P.S. dein MARKER

page.10.marks.spalte_rechts

bringt dir im Fall von TemplaVoila nichts, weil hier keine Marker genutzt werden.

Karlchen

hoellix ·

Hey, danke für deine ausführliche Antwort. Ich hoffe, ich komme heute Abend dazu es auszuprobieren! Hört sich auf jeden Fall prima an.

Beim nochmaligen Durchlesen fällt mir gleich nicht eine Frage ein - Anfängerfrage - Wo kann ich mein XML ändern? Ich weiß wie ich es mir ansehen kann. Leider jedoch nicht wo ich es bearbeiten kann,

hoellix ·

zu früh gefreut.

Inzwischen steht bei mir in der rechten Spalte alles doppelt und dreifach, da ich inzwischen einige Datensätze gelöscht und neu hinzugefügt habe.

Auch Datensätze die ich inzwischen gelöscht habe werden noch angezeigt (Cache habe ich gelöscht).
Wie bekomme ich alles wieder leer? Und wo liegt mein Fehler?

guckst du hier: http://www.hsg-gensungen-felsberg.de/hsg/

so sieht mein TS aus:

			<eType>ce</eType>
                                        <TypoScript><![CDATA[
5 = CONTENT
        5.table = tt_content
        5.select.orderBy = sorting
        5.select.where = colPos=3
        5.select.pidInList = 33
        5.stdWrap.if.value = 33
        5.stdWrap.if.equals.data = 33
        5.stdWrap.if.negate = 1

        10= RECORDS
        10.source.current=1
        10.tables = tt_content
        10.wrap = <!--TYPO3SEARCH_begin--> | <!--TYPO3SEARCH_end-->
                    ]]></TypoScript>
<oldStyleColumnNumber type="integer">3</oldStyleColumnNumber>
cope ·

Huhu,

erweitwere doch einfach deine select-Anweisung

select.andWhere = hidden=0 and deleted=0

LG
Cope

karlchen ·

hier hat sich auch noch ein kleiner fehler bei dir eingeschlichen,

5.stdWrap.if.value = 33
5.stdWrap.if.equals.data = 33
5.stdWrap.if.negate = 1

In Zeile 2 soll mit page:uid, die aktuelle SeitenID abgefragt werden, und wenn diese ID dann mit der in value vorgegebenen übereinstimmt wird ein TRUE zurückgegeben, dann kommt allerdings eine umkehrung des Ergbenisses, also FALSE.
Wenn das Ergebniss FALSE ist, wird der komplette Part "5" NICHT ausgegeben und das sollte eigentlich nur auf der Seite passieren, wo die "original" spalte_rechts liegt.

Zudem Bau mal noch den Tipp von cope ein (danke, werde ich mal auch gleich machen 🙂 )

Hoffe dann funktioniert es 😉

Karlchen

hoellix ·

1.
select.andWhere = hidden=0 and deleted=0

damit funktioniert es auch nicht wirklich. Aber ich habe Festgestellt, dass man im Menüpunkt Liste die Datensätze löschen kann, die Menüpunkt Seite bereits nicht mehr angezeigt werden. Damit bin ich eigentlich schon zufrieden. Euch sei nochmal gedankt.

karlchen ·

du hast recht,

select.andWhere = hidden=0 and deleted=0

bringt nichts.
Wenn man ein Inhaltselement über das TemplaVoila PageModul löscht, wird lediglich eine Verknüpfung des Datenbank Inhalts und der Flexform gelöscht.
Der Datensatz liegt weiterhin unverändert in der DB, da hilft im Moment wohl nur die Datensätze "von Hand" zu löschen.
Dafür gibt es den Tab "Nicht verwendete Elemente", dort kann man alle nicht verknüpften Elemente auf einmal löschen.

karlchen