Textpattern CMS support forum
You are not logged in. Register | Login | Help
- Topics: Active | Unanswered
Re: [de-de] Wieder einmal custom_field
Wie weißt Du denn der Sektion dieses Starttext zu? Mittels sticky?
Offline
#14 2006-09-05 06:40:04
- ede
- Member
- Registered: 2006-05-02
- Posts: 39
Re: [de-de] Wieder einmal custom_field
Eigentlich war das der Plan, jedoch dachte ich auch schon, dass es damit zusammenhängen könnte.
Habe es auch mit einem “Liveartikel” versucht – es wird trotzdem keine Box gezeigt.
Offline
Re: [de-de] Wieder einmal custom_field
So wie das Skript derzeit ist, kann dort nichts angezeigt werden, da auf jeder Startseite (der Webseite oder der Sektion) eine Artikelliste zu erwarten ist und kein einzelner Artikel. Dementsprechend steht Dir auch nicht so einfach eine Artikel-ID zur Verfügung, denn welche sollte dies schon sein, wenn eine Liste ja aus mehreren Artikel besteht. Auch wenn Du auf den Sektions-Startseiten nur einen einzigen Startartikel hast, handelt es sich für TXP immer noch um eine Listenansicht. Um Deine Infobox zu diesem einen besonderen Artikel zu bekommen, muss Du entweder mit <txp:if_section name="xyz">...</...> arbeiten, und die Artikel-ID von Hand fest in den Quelltext schreiben. Oder – wenn Du eine flexible Lösung brauchst – muss Du 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.
Offline
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