Textpattern CMS support forum
You are not logged in. Register | Login | Help
- Topics: Active | Unanswered
Re: [de-de] Wieder einmal custom_field
Da ich nicht weiß wie Dein Gesamtlayout aussieht, einen generellen Tipp:
Du könntest die ganze Mühe mit dem PHP-Skript umgehen, indem Du sowohl Deinen Artikelbereich als auch die Seitenleiste mit der Infobox in einem Artikelbaustein zusammenführst. In Deiner Seitenvorlage gäbe es dann letztendlich nur das HTML-Gerüst was davor und danach noch nötig ist – Text und Seitenleiste würdest Du dann mit <txp:article form="textundinfobox" /> aufrufen. Verschiedene Layouts für Start- und Artikelseiten, könnest Du dann mittels <txp:if_individual_article>...</...> oder <txp:if_article_list>...</...> lösen.
Vorteil an dieser Lösung: Du hättest keine Probleme auf Deinen Sektionsstartseiten, da mit dem einen Artikel auf der Startseite ja auch die Infobox aufgerufen würde.
Last edited by Skubidu (2006-09-05 08:52:19)
Offline
#17 2006-09-05 09:39:01
- ede
- Member
- Registered: 2006-05-02
- Posts: 39
Re: [de-de] Wieder einmal custom_field
besten dank,
werde mal versuchen es über bausteine zu lösen.
ansonsten frage ich die boxen auf den startseiten über sektionen und/oder kategorien ab.
(habe gerade eine ähnliche antwort versehentlich über “melden” versendet – weiß garnicht wo das nun landet)
Offline
#18 2006-09-06 08:14:46
- ede
- Member
- Registered: 2006-05-02
- Posts: 39
Re: [de-de] Wieder einmal custom_field
ich würde gerne nochmal auf die möglichkeit nach status“sticky” zu filtern zurückkommen.
dem Artikel eine herausfilterbaren Status zuweisen (z. B. sticky), damit Du mittels PHP beispielsweise auf Sektionsstartseiten immer nach dem einzigen fixierten Artikel der Sektion suchen kannst, um die Infobox auszugeben
wie fragt mam denn so einen status ab?
Last edited by ede (2006-09-06 08:15:37)
Offline
Re: [de-de] Wieder einmal custom_field
wie fragt mam denn so einen status ab?
Naja, man könnte das dann wieder mittels PHP machen.
Wo liegt denn genau Dein Problem, dass dies nötig wird – soweit ich Dein Seitenkonzept bisher verstanden habe, solltest Du mit einem geschickten Einsatz von Seitenvorlagen und Bausteinen zum gewünschten Ziel kommen. Allerdings mit einen ausgiebigen Einsatz von Conditionals.
Hast Du nen Link oder Code-Beispiele um das Problem nachzuvollziehen?
Offline
#20 2006-09-06 10:01:28
- ede
- Member
- Registered: 2006-05-02
- Posts: 39
Re: [de-de] Wieder einmal custom_field
ich glaube, dass es mit einem “großen” baustein, in dem alles steckt, irgendwann nicht mehr klappt.
die seiten werden wohl z.t. recht verschieden aussehen.
mein ansatz war jetzt der:
<!--CONTENT-->
<div id="contentcenter">
<txp:if_article_list>
<txp:article form="standartseite" limit="1" status="sticky" />
</txp:if_article_list>
<txp:if_individual_article>
<txp:article form="newsdetail" />
</txp:if_individual_article>
</div>
<!--CONTENTENDE-->
<!--SIDEBAR-->
<div id="contentright">
<txp:if_article_list>
<txp:output_form form="infobox_code_sticky" />
</txp:if_article_list>
<txp:if_individual_article>
<txp:output_form form="infobox_code" />
</txp:if_individual_article>
</div>
<!--SIDEBARENDE-->
wobei im baustein “infox_code” dein php-code steckt und in “infobox_code_sticky” der neue/abgeänderte code
[Bearbeitet wegen Codeanzeige: Noch einmal für alle der Hinweis, dass Ihr Code-Blöcke mittels Textile und bc.. (zwei Punkte!) auszeichnen könnt. Wenn ihr danach normal weiterschreiben wollt, müsst den Block-Code mittels einer Leerzeile und p. wieder aufheben. Siehe FAQ
Last edited by Skubidu (2006-09-06 10:41:56)
Offline
Re: [de-de] Wieder einmal custom_field
Bei dem Ansatz müsstest Du für deine infobox_code_sticky auf jeden Fall wieder mit PHP zu Werke gehen, weil Du den Baustein über output_form integrierst und sonst ja die Artikelinfomationen nicht abrufbar wären.
Ich würde Dir folgenden Vorschlag machen:
Seitenvorlage
<txp:if_article_list>
<txp:if_section name="sektion1">
<txp:article form="standardseite1" limit="1" status="sticky" />
</txp:if_section>
<txp:if_section name="sektion2">
<txp:article form="standardseite2" limit="1" status="sticky" />
</txp:if_section>
<txp:if_section name="sektion3">
<txp:article form="standardseite3" limit="1" status="sticky" />
</txp:if_section>
</txp:if_article_list>
<txp:if_individual_article>
<txp:if_section name="sektion1">
<txp:article form="newsdetail1" />
</txp:if_section>
<txp:if_section name="sektion2">
<txp:article form="newsdetail2" />
</txp:if_section>
<txp:if_section name="sektion3">
<txp:article form="newsdetail3" />
</txp:if_section>
</txp:if_individual_article>
Für den Baustein standardseite1 (für alle anderen in dem entsprechend variierten Layout):
<div id="contentcenter">
... Code wie der Artikel auf der Sektionsstartseite aussehen soll ...
</div>
<div id="contentright">
<txp:php>
global $thisarticle;
echo article_custom(array('form' => 'infobox', 'id' => $thisarticle['infobox_id'));
</txp:php>
<div>
Für den Baustein newsdetail1 (für alle anderen in dem entsprechend variierten Layout) dann das gleiche wie für standardseite1 mit entsprechend variiertem Layout. Oder – noch besser – den selben Baustein verwenden und Unterschiede mit Conditionals einfügen.
Offline
#22 2006-09-06 10:47:20
- ede
- Member
- Registered: 2006-05-02
- Posts: 39
Re: [de-de] Wieder einmal custom_field
so habe ich das ja noch nie gesehen.
damit benötigt man ja für das komplette web nur eine seitenvorlage.
finde ich sehr gut, ich müsste allerdings noch an ein paar anderen stellen (z.b. subnavigation) sektionen abfragen.
wie sieht es bei so vielen conditionals denn dann mit den ladezeiten aus/gibt es irgendwelche zu erwartenden nachteile?
Offline
Re: [de-de] Wieder einmal custom_field
Also ich habe bei meinen Seiten bisher keine Ladeprobleme bzw. -Verzögerzungen feststellen können. Die meisten Conditionals fragen Werte globalen Variablen ab, so dass keine weiteren Datenbankabfragen nötig sind (jemand mit tiefergehenden Programmierverständnis als ich, möge mich an dieser Stelle korrigieren). Solch eine zusätzliche Datenbankabfrage wird allerdings bei jedem Aufruf des PHP-Codes nötig, den Du in Deinem bisherigen Code hast ($custom_id = fetch('custom_2','textpattern','id',$pretext['id'],$debug='');). Ich glaube zwar nicht, das man es groß messen kann, aber ich denke, dass die Variante mit den Conditionals tendenziell schneller ist.
Last edited by Skubidu (2006-09-06 11:08:51)
Offline
#24 2006-09-06 11:26:40
- ede
- Member
- Registered: 2006-05-02
- Posts: 39
Re: [de-de] Wieder einmal custom_field
ok, danke.
habe das jetzt mal so nachgebaut. es fehlt nur die abfrage, ob überhaupt eine infobox zugewiesen wurde (ansonsten werden wieder alle artikel zusätzlich als infobox dargestellt).
das hattest du für mich in einem der vorherigen schritten mit diesem “fetch” gelöst.
kann ich das so wieder einbauen, oder räts du mir eher davon ab?
Offline
Re: [de-de] Wieder einmal custom_field
Mit der Funktion fetch() habe ich die ID der jeweiligen Artikels geladen.
Da Du Dich jetzt innerhalb eines Artikelbausteins bewegst, kannst Du wieder <txp:if_custom_field>...</...> verwenden, um abzufragen, ob ein Eintrag im benutzerdefinierten Feld vorliegt.
Offline
#26 2006-09-06 11:44:28
- ede
- Member
- Registered: 2006-05-02
- Posts: 39
Re: [de-de] Wieder einmal custom_field
das hatte ich auch schon probiert. es funktioniert nur leider nicht. bei den artikeln, die keine infobox bekommen sollen, werden alle artikel angezeigt.
<div id="contentright">
<txp:if_custom_field name="infobox_id">
<txp:php>
global $thisarticle;
echo article_custom(array('form' => 'infobox', 'id' => $thisarticle['infobox_id']));
</txp:php>
</ txp:if_custom_field>
<div>
Offline
#27 2006-09-06 11:46:37
- ede
- Member
- Registered: 2006-05-02
- Posts: 39
Re: [de-de] Wieder einmal custom_field
entschuldigung!
ein space im schließenden if_custom_field tag war schuld.
Offline
Re: [de-de] Wieder einmal custom_field
Okee :)
—-
Dann versuch es wie folgt:
<txp:php>
global $thisarticle;
if($thisarticle['infobox_id']) {
echo article_custom(array('form' => 'infobox', 'id' => $thisarticle['infobox_id']));
}
</txp:php>
Last edited by Skubidu (2006-09-06 11:47:52)
Offline