Textpattern CMS support forum
You are not logged in. Register | Login | Help
- Topics: Active | Unanswered
#1 2006-09-02 15:17:58
- ede
- Member
- Registered: 2006-05-02
- Posts: 39
[de-de] Wieder einmal custom_field
Hallo,
ich weiß es geht hier wieder um Tags in Tags, aber ich bekomme es alleine nicht hin.
Ich würde gerne die Möglichkeit haben jedem Artikel eine individuelle Infobox zuzuweisen und zar auf diese Weise:
-Artikel erstellen mit dem Text für die Infobox (id merke ich mir),
-“Hauptartikel” erstellen und hier in einem vorbereitetem customfield Namens “infobox_id” die id des Infoboxartikels eintragen.
Nur wie bekomme ich das Teil zu Gesicht?
Dies hier:
<txp:php>
global $thisarticle;
echo article_custom(array('form' => 'infobox', 'id' => $thisarticle['infobox_id']));
</txp:php>
funktioniert nicht (es werden alle Artikel gezeigt)
[bearbeitet, um den Code besser lesbar zu machen]
Last edited by Skubidu (2006-09-02 16:28:49)
Offline
Re: [de-de] Wieder einmal custom_field
Versuch mal anstelle von $thisarticle['infobox_id'] folgende Konstruktion:
<txp:php>
global $thisarticle, $prefs;
echo article_custom(array('form' => 'infobox', 'id' => $thisarticle[$prefs['custom_1_set']));
</txp:php>
Wobei die Nummer der tatsächlichen Nummer Deines benutzerdefinierten Feldes entsprechen muss.
Last edited by Skubidu (2006-09-02 16:36:29)
Offline
#3 2006-09-03 07:46:14
- alexandra
- Member

- From: Cologne, Germany
- Registered: 2004-04-02
- Posts: 1,370
Re: [de-de] Wieder einmal custom_field
Hallo ede,
wenn es mit Skubidus code für dich klappt, würdest du einen kurzen Artikel darüber für den deutschen TXP Blog schreiben? Das wäre super :) gib Bescheid…Danke
Last edited by alexandra (2006-09-03 07:46:33)
Offline
#4 2006-09-04 06:55:18
- ede
- Member
- Registered: 2006-05-02
- Posts: 39
Re: [de-de] Wieder einmal custom_field
guten morgen,
erstmal besten dank für den ansatz. ich muss aber nochmal nachfragen, wie du das mit “custom_1_set” meinst.
damit ich das customfield beim einstellen des artikels angezeigt bekomme, muss ich dieses ja erstmal definieren/benennen. wie müsste der name den lauten, wenn ich bei deinem code bleibe? ich habe es so verstanden, dass der name “infobox_id” beibehalten werden kann und wenn dies bei mir z.b. das 2te customfiled wäre, setzte ich “custom_2_set” in den code ein – dies funktioniert aber leider nicht.
an alexandra: wenn alles funktioniert, kann ich gerne einen artikel schreiben. ich hoffe nur, dass ich die sache nicht “programmiertechnisch” erklären muss, da ich php nicht beherrsche.
Last edited by ede (2006-09-04 06:58:52)
Offline
Re: [de-de] Wieder einmal custom_field
Die Bezeichnung “custom_1_set” ist unabhängig von dem von Dir gewählten Titel. Wenn Du im Adminbereich das erste benutzerdefiniertes Feld anlegst, kann Du es nennen, wie Du willst, intern wird es als “custom_1_set” geführt. Das zweite Feld heißt dann “custom_2_set” usf.
Wenn Du Deine Feld “infobox_id” als oberstes, erstes benutzerdefiniertes Feld angelegt hast, kannst Du den Code direkt so übernehmen, nur wenn Du noch weitere Felder definiert hättest müsstest Du gegebenenfalls die Nummer anpassen.
Der von Dir gewählte Name, ist wie gesagt egal und Du kannst ihn problemlos so lassen, wie Du ihn hast.
Offline
Re: [de-de] Wieder einmal custom_field
dies funktioniert aber leider nicht.
Was für eine Ausgabe erhältst Du denn genau? Wird denn der richtige Bausteine verwendet?
Nachtrag: Wenn der richtige Baustein verwendet wird, kann es sein, dass in dem Umfeld, wo Du den Code benutzt $thisarticle gar nicht mit Inhalt gefüllt ist, und es deshalb nicht funktioniert.
Last edited by Skubidu (2006-09-04 07:49:52)
Offline
Re: [de-de] Wieder einmal custom_field
Versuch mal folgendes:
<txp:php>
global $pretext;
$custom_id = fetch('custom_1','textpattern','id',$pretext['id'],$debug='');
echo article_custom(array('form' => 'infobox', 'id' => $custom_id));
</txp:php>
Offline
#8 2006-09-04 08:18:00
- ede
- Member
- Registered: 2006-05-02
- Posts: 39
Re: [de-de] Wieder einmal custom_field
super!
das funktioniert. einziges manko ist jetzt noch, dass bei den artikeln, welche keinen eintrag im customfiled “infobox_id” erhalten haben (also keine infobox zugeordnet bekommen haben), alle eingestellten artikel als infobox (mit korrektem baustein) abgebildet werden.
habs mal ohne erfolg mit if_custom_field versucht:
<code>
<txp:if_custom_field name=“infobox_id”>
<txp:php>
global $pretext;
$custom_id = fetch(‘custom_2’,‘textpattern’,‘id’,$pretext[‘id’],$debug=’‘);
echo article_custom(array(‘form’ => ‘infobox’, ‘id’ => $custom_id));
</txp:php>
</txp:if_custom_field>
</code>
Offline
Re: [de-de] Wieder einmal custom_field
Du verwendest die benutzerdefinierten Felder in einer Seitenvorlage, da diese aber an einen Artikel gebunden sind, stehen dort die Informationen nicht zur Verfügung. Probiers mal mit dem hier:
<txp:php>
global $pretext;
$custom_id = fetch('custom_2','textpattern','id',$pretext['id'],$debug='');
if($custom_id) {
echo article_custom(array('form' => 'infobox', 'id' => $custom_id));
}
</txp:php>
Offline
#10 2006-09-04 08:34:50
- ede
- Member
- Registered: 2006-05-02
- Posts: 39
Re: [de-de] Wieder einmal custom_field
vielen dank, das funktioniert einwandfrei!
(auch wenn ich nicht wirklich verstehe warum)
das mit dem artikel schreiben probiere ich trotzdem (vielleicht kann die technische erklärung ja noch jemand verfeinern)
Last edited by ede (2006-09-04 08:38:22)
Offline
Re: [de-de] Wieder einmal custom_field
(auch wenn ich nicht wirklich verstehe warum)
Benutzerdefinierte Felder werden zusammen mit den direkten Artikelinhalten abgespeichert. Ihr Inhalt ist deshalb nur dann abrufbar, wenn ein Artikel ausgegeben wird. Dies ist nur innerhalb eines Bausteins des Typ “article” der Fall, wenn er über <txp:article /> oder <txp:article_custom /> ausgegeben wird. Nur dort machen also die Tags <txp:custom_field /> und <txp:if_custom_field>...</...> Sinn, da sie außerhalb eines Artikelbausteins über keinerlei Informationen verfügen.
Mein Code holt sich die Infos Deines benutzerdefinierten Feldes, in dem er anhand der global verfügbaren Artikel-ID eine Datenbankabfrage durchführt. Deshalb muss die Wenn-Dann-Bedingung auch innerhalb dieses Codes durchgeführt werden, denn <txp:if_custom_field>...</...> verfügt nachwievor nicht über die nötigen Infos – deshalb ja der PHP-Code.
Offline
#12 2006-09-04 11:22:08
- ede
- Member
- Registered: 2006-05-02
- Posts: 39
Re: [de-de] Wieder einmal custom_field
… einen hab’ ich noch:
alles funktioniert wie gewünscht, sobald man einen konkreten artikel angewählt hat(z.b. meineSeite.de/sektionsname/5/artikelname).
wenn ich jedoch eine sektion habe, welche erstmal nur mit einer art starttext beginnt (z.b. meineSeite.de/sektionsname/), wird die infobox_id, die diesem starttext zugeordnet wurde wohl nicht “übermittelt”.
kann man das script dahingehend noch ausbauen?
Last edited by ede (2006-09-04 11:25:44)
Offline