Textpattern CMS support forum
You are not logged in. Register | Login | Help
- Topics: Active | Unanswered
#1 2012-06-13 06:40:18
- oelauge
- Member
- Registered: 2010-03-17
- Posts: 24
[de-de] (erledigt) Artikelliste und Artikel in einem Layout
Hallo zusammen,
ich möchte gerne auf einer Seite, einfach in zwei separaten aufgeteilt Spalten, sowohl eine Artikelliste und den später ausgesuchten ganzen Artikel mit Kommentaren sehen.
Da die Liste und der Artikel selbst mit dem gleichen Tag (article / article_custom) gesteuert werden, habe ich den Effekt, dass nach Wahl eines Artikels beide Spalten den einzelnen Artikel samt Kommentaren zeigen.
Meine Frage lautet daher:
1. Gibt es in den bekannten Tags eine heimliche Option, um den Sprung von Liste zur Einzelansicht zu unterbinden, damit ich in jedem Fall in der einen Spalte die Liste und in der anderen Spalte den ausgesuchten ganzen Artikeltext samt Kommentaren sehen kann?
2. Oder gibt es evtl. andere Artikel-Tags, mit der solch eine Steuerung möglich ist?
Leider konnte ich im Forum noch in den Fokus etwas dazu finden.
Vielen Dank im Voraus und
Grüße
Oelauge
Last edited by oelauge (2012-06-18 21:13:46)
Offline
Re: [de-de] (erledigt) Artikelliste und Artikel in einem Layout
Das ist eigentlich ganz normal & üblich (Weblogartikel mit Artikel der letzten Artikel im Seitenmenü).
Also einmal ‘article’- und einmal ‘article custom’-Tag. Funktioniert wunderbar.
Falls es ‘“nur” die letzten Artikel sein sollen, geht auch das ‘recent articles’-Tag.
Mit dem entsprechenden Bausteinen lassen sich beide Seiten (Artikel und Liste) wunderbar anpassen.
Viele Grüße
Torsten
Offline
#3 2012-06-13 12:49:35
- GugUser
- Member
- From: Quito (Ecuador)
- Registered: 2007-12-16
- Posts: 1,473
Re: [de-de] (erledigt) Artikelliste und Artikel in einem Layout
Für diesen Zweck gibt es mehrere Lösungen. Entweder if_article_list oder if_individual_article, beide mit <txp:else />
oder innerhalb des article-Tags zwei form-Typen, form=""
und listform=""
.
Last edited by GugUser (2012-06-13 12:49:53)
Offline
#4 2012-06-14 20:50:10
- oelauge
- Member
- Registered: 2010-03-17
- Posts: 24
Re: [de-de] (erledigt) Artikelliste und Artikel in einem Layout
Zwischenstand:
Vielen Dank für die Tips.
Es funktioniert fast. Und eigentlich ist das Problem gelöst, aber irgend wie ergeben sich neue Probleme.
Mit den Tags if_article_list und article_custom konnte ich genau das erreichen, was ich eigentlich wollte. Wird ein Artikel ausgewählt, wird in der Zielspalte der gesamte Artikel samt Kommentaren angezeigt. Die Artikel-Liste zeigt weiterhin eine Liste. Hier wäre ich nun fertig.
Leider funktioniert das Beibehalten der Liste nur mit dem Tag article_custom. Der bekannte Effekt ist, dass Navigationen zu älteren oder neueren Artikeln nicht mehr funktioniert. Leider wird auch keine Absprungmarke aus der Artikelliste mit genommen, wenn der Übergang zum “individuellen” Artikel gemacht wird. Gnadenlos wird die Liste beginnend beim ersten Artikel aufgebaut, unabhängig davon ob der 16. Artikel ausgewählt wurde oder nicht. Zum Verständnis, ich lasse immer nur fünf Artikel in der Liste anzeigen. Dann blättere ich also in die Vergangenheit und lande entsprechend auf der dritten Seite. Mit dem Absprung zum ganzen Artikel hoffte ich, dass weiterhin die dritte Artikelseite stehen bleibt. Dem ist leider nicht so.
Da mein Navigationsprinzip aktuell nicht gebaut werden kann, versuche ich es weiter. Die Hoffnung habe ich noch nicht aufgegeben. Ich erhebe allerdings wenig Hoffnung, weil ich das feste Prinzip in Textpattern von Liste zum Artikel wohl nicht ganz so umgehen kann.
Vielleicht hat noch der Eine oder Andere einen Tip.
Offline
Re: [de-de] (erledigt) Artikelliste und Artikel in einem Layout
Wenn ich Dich richtig verstanden habe, entspricht das Demo-setup eigentlich ziemlich genau deinem gewünschten Setup ggf. mit eine Änderungen (siehe Ende dieses Kommentars).
Der Tag txp:article
reagiert grundsätzlich immer auf dem Kontext, was vom URL vorgegeben wird. Du kannst mit dem Attribut form
eine txp-Form angeben der im Einzelartikel-ansicht verwendet wird und mit listform
ein Form für die Listenansicht. Das heißt
- je nach dem welche Sektion / Kategorie / Datum / Autor im URL steht, wird eine entsprechend gefilterte Liste angezeigt.
- typischerweise werden 10 Artikel auf eine Listenseite angezeigt, mit
txp:newer
/txp:older
werden Links zu den nächsten / vorherigen 10 Artikel erzeugt und txp:article reagiert selbstständig darauf, wenn einpg
im URL steht. - wenn einen einzelnen Artikel im URL steht, wird dies allein angezeigt. Mit
txp:next
undtxp:prev
kann man (chronologisch) von Artikel zu Artikel blättern ohne erst zu der Liste zurückkehren zu müssen.
Der Tag txp:article_custom
dagegen macht genau das was drauf steht – eine custom-Ausgabe. Es hat null Kontextgefühl und muss mit explizit genannte Parameter bestückt werden. Diese Umstand lässt sich nutzen für deine Artikelliste, der im jeden Fall immer angezeigt wird, ganz gleich was in der URL steht.
So gesehen ist txp:article
der bessere Tag für deine Hauptspalte mit der Artikelanzeige und txp:article_custom
der Tag für deine Artikelliste in der Nebenspalte.
Falls Du beim Aufruf der Sektion ohne einzelne Artikel nur eine einzige Artikel sehen möchtest, und zwar das neueste, stelle form
und listform
so ein, dass die beide deine txp-form für den Einzelansicht verwendet und nutze zusätzlich den Attribute limit="1"
:
<txp:article form="deine-single-article-form" listform="deine-single-article-form" limit="1" />
TXP Builders – finely-crafted code, design and txp
Offline
#6 2012-06-15 20:35:51
- oelauge
- Member
- Registered: 2010-03-17
- Posts: 24
Re: [de-de] (erledigt) Artikelliste und Artikel in einem Layout
Danke Jakob für die ausführliche Beschreibung.
jakob schrieb:
Wenn ich Dich richtig verstanden habe, entspricht das Demo-setup eigentlich ziemlich genau deinem gewünschten Setup ggf. mit eine Änderungen (siehe Ende dieses Kommentars).
Leider nein. Einfach beschrieben (ich versuche es zumindest), habe ich nur zwei Spalten. In der ersten die Artikel-Liste, in der zweiten der später ausgewählte einzelne Artikel samt Kommentarfunktionen “auf der gleichen Seite”.
Der Tag
txp:article
reagiert grundsätzlich immer auf dem Kontext, was vom URL vorgegeben wird. Du kannst mit dem Attributform
eine txp-Form angeben der im Einzelartikel-ansicht verwendet wird und mitlistform
ein Form für die Listenansicht.
Der Tag
txp:article_custom
dagegen macht genau das was drauf steht – eine custom-Ausgabe. Es hat null Kontextgefühl und muss mit explizit genannte Parameter bestückt werden. Diese Umstand lässt sich nutzen für deine Artikelliste, der im jeden Fall immer angezeigt wird, ganz gleich was in der URL steht.
So gesehen ist
txp:article
der bessere Tag für deine Hauptspalte mit der Artikelanzeige undtxp:article_custom
der Tag für deine Artikelliste in der Nebenspalte.
So genau konnte ich es auch umsetzen. Nur wie geschrieben, geht jede Benutzerfreundlichkeit flöten:
1. txp:article_custom
beginnt immer die Liste mit dem ersten Artikel (sofern man natürlich nicht hart einen Offset angibt). Eine Liste gebildet aus txp:article
, wie sie zuvor “beim Absprung” aussah wird schlicht weg unterschlagen. Geht auch nicht anders, denn einen dynamischen Hinweis zwischen der Listenseite vom Absprung für txp:article_custom
gibt es nicht, um gezielt die gleiche Artikel-Seitenliste aufzubauen, wie sie beim Absprung aussah.
2. Mit txp:article_custom
gibt es keine Artikel-Navigation mittels txp:newer / txp:older
.
Ich vermute mal ganz stark, dass ich hier an die harte Mechanik zwischen Artikel-Liste und einzelnen Artikel nicht vorbei komme.
Bedingt, dass ich beide Steuerungen, also eine schöne Listenansicht (eigentlich mit txp:article
) und eine Einzelne-Artikel-Ansicht (ebenfalls mit txp:article
) “zur gleichen Zeit in einer Seite” nutzen möchte, gibt es hier einen technischen Widerspruch bei TP.
Trotzdem vielen Dank, ich gebe auf :-(
Offline
Re: [de-de] (erledigt) Artikelliste und Artikel in einem Layout
Ich glaube ich hab’s jetzt verstanden: du willst dass deine Artikelliste sich vor- und zurückblättern lässt während Du gleichzeitig eine einzelne Artikel samt Kommentare in der anderer Liste anzeigst.
Demnach versuchst Du sozusagen zwei Kontexte gleichzeitig zu verfolgen und das packt der von Haus aus gegebene Url-Struktur nicht: man kann entweder durch eine Liste blättern oder eine einzelne Artikel anzeigen. Beides gleichzeitig geht nicht (mit standardmitteln).
Ein paar Varianten fallen mir dazu ein:
- Die volle Artikelliste zu laden, ggf. in Blöcken, und dann mittels Javascript die Paging nachbauen, ähnlich wie eine Slider der 5 Elemente enthält. Nachteil: beim Laden eine neue Seite erinnert es sich nicht wo man gerade war und fängt von vorn an.
- Die Artikelliste-Funktionalität zu bauen und der Inhalt der einzelne Artikel per javascript/ajax in der DIV andere Spalten laden. Nachteil: es ist in der URL nicht ersichtlich, bzw. erscheint als #article-url-title.
- Manuelle Paging für die Artikelliste nachzubauen mit Hilfe eine URL-variabel, der für die offset verwendet werden kann damit @txp:article_custom an der richtige Stelle startet.
Für diese letzte Variante bräuchtest Du adi_gps um deine urlvar auszulesen und adi_calc um die richtige URLs für die “older/newer”-Links zu berechnen. Beides gingen aber auch recht einfach mit ein bisschen php. Siehe dieses txptip und vor allem das erste Kommentar von Aaron (ähnliches auch hier zu finden). Mit diese Ansatz bringst Du txp:article_custom newer/older Navigation bei während gleichzeitig txp:article auf der Kontext der URL reagieren kann.
TXP Builders – finely-crafted code, design and txp
Offline
#8 2012-06-18 21:07:59
- oelauge
- Member
- Registered: 2010-03-17
- Posts: 24
Re: [de-de] (erledigt) Artikelliste und Artikel in einem Layout
jakob schrieb:
Ich glaube ich hab’s jetzt verstanden: du willst dass deine Artikelliste sich vor- und zurückblättern lässt während Du gleichzeitig eine einzelne Artikel samt Kommentare in der anderer Liste anzeigst.
Richtig, der zuletzt gewählte Artikel soll stehen bleiben, während in der Artikel-Liste geblättert werden darf.
Demnach versuchst Du sozusagen zwei Kontexte gleichzeitig zu verfolgen und das packt der von Haus aus gegebene Url-Struktur nicht: man kann entweder durch eine Liste blättern oder eine einzelne Artikel anzeigen. Beides gleichzeitig geht nicht (mit standardmitteln).
Hierbei bin ich genau stecken geblieben, bis zum Zeitpunkt, wo ich auf Deinen Tip gestoßen bin:
Ein paar Varianten fallen mir dazu ein: # Manuelle Paging für die Artikelliste nachzubauen mit Hilfe eine URL-variabel, der für die offset verwendet werden kann damit @txp:article_custom an der richtige Stelle startet.
Für diese letzte Variante bräuchtest Du adi_gps um deine urlvar auszulesen und adi_calc um die richtige URLs für die “older/newer”-Links zu berechnen. Beides gingen aber auch recht einfach mit ein bisschen php. Siehe dieses txptip und vor allem das erste Kommentar von Aaron (ähnliches auch hier zu finden). Mit diese Ansatz bringst Du txp:article_custom newer/older Navigation bei während gleichzeitig txp:article auf der Kontext der URL reagieren kann.
Ich habe mich für die PHP-Lösung entschieden, da ich so wenig Plugins einsetzen möchte wie nur möglich. Obwohl die Plugin-Lösung hinter dem txtip seinen Charme hat und auch die Einzige unter den Lösungen ist, die funktionierte.
Die Aaronsche PHP-Lösung wurde mehrfach kopiert; wie geschrieben habe ich diese genommen und um die kleine Korrektur von jayrope ergänzt.
Dabei heraus gekommen ist die “Pagination”—Lösung für txp:article_custom
, die ebenfalls individuell für die Navigation um Div— (wie in diesem Beispiel) oder Listen-Elemente eingesetzt werden kann. Vielen Dank an Jakob.
<txp:php>
// Initial setup
global $variable;
$variable["article-limit"] = 4; // Set to whatever you want
$variable["article-count"] = 0;
if(isset($_GET["page"])) { $variable["page"] = $_GET["page"]; }
else { $variable["page"] = 1; }
$variable["offset"] = ($variable["page"]-1)*$variable["article-limit"];
</txp:php>
<txp:article_custom limit="9999" status="4">
<txp:php>
// Count the articles
global $variable;
$variable["article-count"]++;
</txp:php>
</txp:article_custom>
<txp:php>
// Determine the page count
global $variable;
$variable["page-count"] = ceil($variable["article-count"] / $variable["article-limit"]);
</txp:php>
<txp:article_custom listform="artikel_liste" pgonly="0" status="4" limit='<txp:variable name="article-limit" />' offset='<txp:variable name="offset" />' />
<txp:php>
// Output pagination
global $variable;
if ($variable["article-limit"] <= $variable["article-count"])
{
echo '<div id="article_nav">';
if(($variable["page"]+1) <= $variable["page-count"])
{
echo "<div class=\"older\"><a href=\"?page=". ($variable["page"]+1) ."\">← Ältere Sachen</a></div>";
if($variable["page"]-1)
{
echo "<div class=\"newer\"><a href=\"?page=". ($variable["page"]-1) ."\">Neuere Sachen →</a></div>";
}
}
if(($variable["page"]) == $variable["page-count"])
{
echo "<div class=\"newer\"><a href=\"?page=". ($variable["page"]-1) ."\">Neuere Sachen →</a></div>";
}
echo '</div>';
}
</txp:php>
Offline