Go to main content

Textpattern CMS support forum

You are not logged in. Register | Login | Help

#1 2009-11-30 00:24:22

GugUser
Member
From: Quito (Ecuador)
Registered: 2007-12-16
Posts: 1,477

[de-de] [erledigt] Wo Variablen speichern?

In einem Baustein innerhalb mehrerer if-Abfragen benötige ich mehrmals denselben Code-Schnippsel, welchen ich deswegen in einer Variablen als Konstante definiert habe.

Diese Variable ist aber nicht innerhalb des gesamten Bausteins verfügbar, nur innerhalb derselbe if-Abfrage, so dass ich die Variablendefinition mehrmals in den je entsprechenden if-Abfragen einsetzen muss. Das sollte eigentlich nicht so sein.

An welchen Ort gehört eine solche Variable (Konstante) damit sie global benutzt werden kann?

Im Textbook heisst es, entweder in einem eigenen Baustein oder zu Beginn der Seitenvorlage. Das mit dem eigenen Baustein funktioniert nicht und oben in den Seitenvorlagen gibt keinen Sinn, weil es so viele Seitenvorlagen sind, dass ich den Wert auch direkt in den Code einsetzen kann und weniger Code produziere.

Last edited by GugUser (2009-11-30 21:36:50)

Offline

#2 2009-11-30 06:08:02

wet
Developer Emeritus
From: Schoerfling, Austria
Registered: 2005-06-06
Posts: 3,357
Website GitHub Mastodon

Re: [de-de] [erledigt] Wo Variablen speichern?

Dann speichere sie in einem Baustein, denn du in jeder Seitenvorlage verwendest. Meist hat man ja einen, der die ganzen Headerdaten, CSS-Verweise etc. setzt.

Offline

#3 2009-11-30 12:08:39

GugUser
Member
From: Quito (Ecuador)
Registered: 2007-12-16
Posts: 1,477

Re: [de-de] [erledigt] Wo Variablen speichern?

wet

Es ist wohl besser, hier konkret zu teigen, um was es geht. Der folgende Kode, welcher sich in einem Baustein befindet, funktioniert. Die Variablen-Definition ist mit *** bezeichnet und wiederholt sich zwei Mal, damit der Baustein funktioniert.

<txp:if_individual_article>
	<txp:article_custom section="kurse" limit="10">
		<txp:if_first_article><ul></txp:if_first_article>
			***<txp:variable name="nav-text" value='<txp:if_custom_field name="Navigationstext"><txp:custom_field name="Navigationstext" /><txp:else /><txp:etz_striptags><txp:upm_textile><txp:title /></txp:upm_textile></txp:etz_striptags></txp:if_custom_field>' />
			<li<txp:if_article_id> class="aktuell"><txp:variable name="nav-text" /><txp:else />><a href='<txp:permlink />'><txp:variable name="nav-text" /></a></txp:if_article_id></li>
		<txp:if_last_article></ul></txp:if_last_article>
	</txp:article_custom>
<txp:else />
	<txp:article_custom section="kurse" limit="10">
		<txp:if_first_article><ul></txp:if_first_article>
			***<txp:variable name="nav-text" value='<txp:if_custom_field name="Navigationstext"><txp:custom_field name="Navigationstext" /><txp:else /><txp:etz_striptags><txp:upm_textile><txp:title /></txp:upm_textile></txp:etz_striptags></txp:if_custom_field>' />
			<li><a href='<txp:permlink />'><txp:variable name="nav-text" /></a></li>
		<txp:if_last_article></ul></txp:if_last_article>
	</txp:article_custom>
</txp:if_individual_article>

Ich hatte die ***Variablen-Definition vorher am Anfang des Bausteines, aber dann wurden die Werte für die Artikellistenansicht nicht übernommen.

Wie erwähnt, der Kode funktioniert. Ich fände es aber eleganter, *** nur einmal hinschreiben zu müssen …

Offline

#4 2009-11-30 12:41:12

wet
Developer Emeritus
From: Schoerfling, Austria
Registered: 2005-06-06
Posts: 3,357
Website GitHub Mastodon

Re: [de-de] [erledigt] Wo Variablen speichern?

Da führt in dieser Tag-Anordnung kein Weg daran vorbei, weil die Variable aus den Inhalten eine Artikels bestimmt wird, der erst in dem article_custom-Block bekannt ist.

Lässt sich die if_individual_article-Entscheidung weiter nach innen verlegen und die article_custom-Schleife aussen herum legen? Etwa so (ungetestet):

<txp:article_custom section="kurse" limit="10">
	***<txp:variable name="nav-text" value='<txp:if_custom_field name="Navigationstext"><txp:custom_field name="Navigationstext" /><txp:else /><txp:etz_striptags><txp:upm_textile><txp:title /></txp:upm_textile></txp:etz_striptags></txp:if_custom_field>' />
	[...]
	<txp:if_individual_article>
		<li<txp:if_article_id> class="aktuell"><txp:variable name="nav-text" /><txp:else />><a href='<txp:permlink />'><txp:variable name="nav-text" /></a></txp:if_article_id></li>
	<txp:else />
		<li><a href='<txp:permlink />'><txp:variable name="nav-text" /></a></li>
	</txp:if_individual_article>
	[...]
</txp:article_custom>

Offline

#5 2009-11-30 13:10:00

GugUser
Member
From: Quito (Ecuador)
Registered: 2007-12-16
Posts: 1,477

Re: [de-de] [erledigt] Wo Variablen speichern?

wet

Das wäre eine hübsche Lösung, ganz nach meinem Sinn, weil der Kode viel kürzer ist. Ich hab’s sofort umgesetzt. Leider wird die Abfrage nach dem aktuellen Artikel ignoriert. Ich versteh überhaupt nicht warum.

Dieses “aktuell” ist essentiell, weil es bestimmt, dass ein Untermenü offen bleibt. Hier zu sehen (ist noch in Entwicklung).

Nachtrag: Es geht um das Untermenü von “Spezialkurse”, wo Artikel aufgelistet werden.

Last edited by GugUser (2009-11-30 13:12:44)

Offline

#6 2009-11-30 13:32:03

merz1
Member
From: Hamburg
Registered: 2006-05-04
Posts: 994
Website

Re: [de-de] [erledigt] Wo Variablen speichern?

[Edit: Hatte die Kommentare hier drüber noch nicht gesehen.]

@GugUser Diese drei tags erschlagen eigentlich alle Wünsche nach Variablen:

  • output_form ist der klassische Lego-Baustein für festgelegte variable Ausgaben.
  • variable
  • yield – Speziell yield ist ein magischer Zaubercode, um innerhalb der Ausgabe ein und derselben Form verschiedene zusätzliche Ausgaben zu erzeugen. Eine Art rückwärts in die feste Formausgabe injizierte Variable.

Das mit dem eigenen Baustein funktioniert nicht…

Wenn ein einfaches output_form evtl. nicht alle gewünschten Ausgaben erzeugt, dann hilft ein doppelter Aufruf: Form1 ruft Form2 auf. Das ist z.B. bei Textpattern tags notwendig, die für ‘Artikel’ reserviert sind und nicht direkt in Seitenvorlagen aufgerufen werden können.

Man möge mich verbessern; solche Aussagen sind schwer einfach zu treffen, aber evtl. hilft der Hinweis ja bereits.

Last edited by merz1 (2009-11-30 13:33:55)


Get all online mentions of Textpattern via OPML subscription: TXP Info Sources: Textpattern RSS feeds as dynamic OPML

Offline

#7 2009-11-30 21:36:16

GugUser
Member
From: Quito (Ecuador)
Registered: 2007-12-16
Posts: 1,477

Re: [de-de] [erledigt] Wo Variablen speichern?

Ich find’s immer wieder neu spannend, wie sich auf einmal neue, vorher nicht gedachte Lösungen bieten. Was ich mir einer Variablen lösen wollte, im Wissen, dass ich eigentlich eine Konstante benötige, geht ja ganz einfach mit einem weiteren Baustein, ohne den benötigten Text gleichzeitig in eine Variable zu versorgen. Das mir das nicht von Anfang an klar war!

Diese Lösung wurde mir mit Markus Beitrag schlagartig bewusst.

So umgesetzt funktioniert das gut und der Kode ist eher noch etwas kürzer.

Danke an alle die hier mitdachten und -schrieben.

Offline

#8 2009-12-01 11:10:39

merz1
Member
From: Hamburg
Registered: 2006-05-04
Posts: 994
Website

Re: [de-de] [erledigt] Wo Variablen speichern?

Lass uns nicht dumm sterben und erkläre und zeige bitte Deine Lösung inkl. Code. Die Kinder unserer Kinder werden dafür noch dankbar sein :)


Get all online mentions of Textpattern via OPML subscription: TXP Info Sources: Textpattern RSS feeds as dynamic OPML

Offline

#9 2009-12-01 13:04:17

GugUser
Member
From: Quito (Ecuador)
Registered: 2007-12-16
Posts: 1,477

Re: [de-de] [erledigt] Wo Variablen speichern?

merz1

In der Hoffnung das Leben gehe noch ein Stückchen weiter, hier der Kode, auch wenn er praktisch identisch ist wie anfangs. Einzige Änderung: Statt der Variablen wird nun ein Baustein eingebunden. Ist so simpel, das ich mich wundere, nicht vorher daran gedacht zu haben. Weil, nun ist es die gewünschte Konstante …

Baustein “nav-text”

<txp:if_custom_field name="Navigationstext"><txp:custom_field name="Navigationstext" /><txp:else /><txp:etz_striptags><txp:upm_textile><txp:title /></txp:upm_textile></txp:etz_striptags></txp:if_custom_field>

Baustein “nav-sektionsname”

<txp:if_individual_article>
	<txp:article_custom section="kurse" limit="10">
		<txp:if_first_article><ul></txp:if_first_article>
			<li<txp:if_article_id> class="aktuell"><txp:output_form form="nav-text" /><txp:else />><a href='<txp:permlink />'><txp:output_form form="nav-text" /></a></txp:if_article_id></li>
		<txp:if_last_article></ul></txp:if_last_article>
	</txp:article_custom>
<txp:else />
	<txp:article_custom section="kurse" limit="10">
		<txp:if_first_article><ul></txp:if_first_article>
			<li><a href='<txp:permlink />'><txp:output_form form="nav-text" /></a></li>
		<txp:if_last_article></ul></txp:if_last_article>
	</txp:article_custom>
</txp:if_individual_article>

Gerne hätte ich noch die von wet vorgeschlagenen Änderungen integriert, weil diese mich theoretisch überzeugen, aber, in der Praxis funktionierten die entsprechenden Veränderungen nicht vollständig.

Das mehrfache Wiederholen von <ul> stört etwas. Ich könnte zwar <ul> und </ul> um den Bausteinaufruf von “nav-sektionsname” setzen. Im Falle, wenn die Sektion aber keine Artikel hat (was im gegebenen Fall vorkommen könnte), stünden sie dann leer im Quelltext.

Das benutzerdefinierte Feld “Navigationstext” hat folgende Funktion: Falls der Artikeltitel als Eintrag in der Menüliste zu lang sein sollte, kann in “Navigationstext” eine Alternative angegeben werden.

Nun wünsche ich den Kindern und Kindeskindern ein langes Leben und hoffe, Obiges funktioniere auch noch mit TxP-Version 8.3 ;-) …

Last edited by GugUser (2009-12-01 15:14:33)

Offline

#10 2009-12-01 14:54:14

merz1
Member
From: Hamburg
Registered: 2006-05-04
Posts: 994
Website

Re: [de-de] [erledigt] Wo Variablen speichern?

Na, dann hast Du das doch wirklich sehr einfach und voll im Textpatternsinne gelöst. Ich dachte/befürchtete schon, Du hättest Dir etwas wahnsinnig kompliziertes einfallen lassen.


Get all online mentions of Textpattern via OPML subscription: TXP Info Sources: Textpattern RSS feeds as dynamic OPML

Offline

Board footer

Powered by FluxBB