[GELÖST]Newsmodul: Articleid für das Paging mitgeben

Hilfe zu Modulen und Tags
markus0711
Forum Members
Forum Members
Posts: 45
Joined: Thu Jun 10, 2010 7:11 am

[GELÖST]Newsmodul: Articleid für das Paging mitgeben

Post by markus0711 »

Hallo,

ich habe im Newsmodul nach 3 Einträgen das Paging der News gesetzt {news number='3' ...}.

Wenn ich nun aus dem Newsmodul über den Link "[weiterlesen...]" in die Detailansicht des Artikels gehe und von dort aus über das Paging eine Seite weiter oder auf die letzte Seite der Newsartikel springen möchte, erhalte ich im Content die Meldung "Artikel nicht gefunden".

Das liegt soweit ich das verstanden habe daran, dass in den vom CMS generierten Links {nextpage} und {lastpage} die articleid des gerade angezeigten Artikles nicht gesetzt wird.

Wie kann ich die articleid setzen, dass beim Paging der gerade angesehene Artikel erscheint und nicht die Meldung "Artikel nicht gefunden"?

Vielen Dank im Voraus für Eure Hilfe,

Markus
Last edited by markus0711 on Thu Sep 16, 2010 11:46 am, edited 1 time in total.
NaN

Re: Newsmodul: Articleid für das Paging mitgeben

Post by NaN »

Ich verstehe leider nur Bahnhof.
Was hat denn das Paging in der Detailansicht zu suchen?
cyberman

Re: Newsmodul: Articleid für das Paging mitgeben

Post by cyberman »

Normalerweise ist das Paging nur für die Zusammenfassungsansicht gedacht und wird daher (vermutlich) im Detail-Modus nicht funktionieren.

Nur ist mir noch nicht ganz klar, was du mit dem Paging willst - soll das "Next" auf die nächste Zusammenfassungsseite oder auf den nächsten Artikel verweisen?

PS: Die jeweils verfügbaren Smarty-Variablen kannst du dir mit dem Tag {get_template_vars} ausgeben lassen.
markus0711
Forum Members
Forum Members
Posts: 45
Joined: Thu Jun 10, 2010 7:11 am

Re: Newsmodul: Articleid für das Paging mitgeben

Post by markus0711 »

Sorry, da habe ich mich wohl nicht verständlich ausgedrückt.
cyberman wrote: Normalerweise ist das Paging nur für die Zusammenfassungsansicht gedacht und wird daher (vermutlich) im Detail-Modus nicht funktionieren.

Nur ist mir noch nicht ganz klar, was du mit dem Paging willst - soll das "Next" auf die nächste Zusammenfassungsseite oder auf den nächsten Artikel verweisen?
Ich will aus der Detailansicht eines Newsartikles über das Paging der Zusammenfassungsansicht auf die nächste oder letzte Seite der Zusammenfassung gehen. Das sind die "> >>" Zeichen in der Zusammenfassungsansicht.
Es wird dann die entsprechende Seite der Zusammenfassung angezeigt. Im Content, der davor mit der Detailansicht gefüllt war, erscheint nun "Artikel nicht gefunden".
Ich möchte aber, dass die Detailansicht des Newsartikels stehen bleibt.
Dazu müßte wohl die articleid mit übergeben werden.
cyberman wrote: PS: Die jeweils verfügbaren Smarty-Variablen kannst du dir mit dem Tag {get_template_vars} ausgeben lassen.
Die articleid  ist über {get_template_vars} nicht zu kriegen. Oder ich hab sie übersehen.

Probierts mal aus unter www.bite.de
Last edited by markus0711 on Thu Sep 09, 2010 11:20 am, edited 1 time in total.
NaN

Re: Newsmodul: Articleid für das Paging mitgeben

Post by NaN »

Ah, jetzt verstehe ich.
Die Article ID wirst Du im Zusammenfassungstemplate auch nicht finden.
Dort gibt es ja auch keinen Article.
Oder gibts die etwa auch nicht im Detailtemplate?
Wo hast Du denn {get_template_vars} ausprobiert?

Dein Template ist etwas seltsam aufgebaut.
Die Spalte rechts hat die id="left", aber float:right und kommt vor der linken Spalte.
Das macht das ganze schwierig.
Versuch mal den Inhalt (also id="main") vor die rechte Spalte zu setzen und mit float:left zu versehen. Dann kommt der Inhalt (die Detailansicht) vor der Zusammenfassung. Eventuell kannst Du dann im Zusammenfassungstemplate auf die Article ID aus der Detailansicht zugreifen. (Sofern sie überhaupt irgendwo in irgendeinem Template vorhanden ist.)
markus0711
Forum Members
Forum Members
Posts: 45
Joined: Thu Jun 10, 2010 7:11 am

Re: Newsmodul: Articleid für das Paging mitgeben

Post by markus0711 »

NaN wrote:
Ah, jetzt verstehe ich.
Die Article ID wirst Du im Zusammenfassungstemplate auch nicht finden.
Dort gibt es ja auch keinen Article.
Oder gibts die etwa auch nicht im Detailtemplate?
Wo hast Du denn {get_template_vars} ausprobiert?
Schon im Detailtemplate, habe die Article ID beim durchlaufen von $entry auch gefunden!!
NaN wrote: Dein Template ist etwas seltsam aufgebaut.
Die Spalte rechts hat die id="left", aber float:right und kommt vor der linken Spalte.
Das macht das ganze schwierig.
Versuch mal den Inhalt (also id="main") vor die rechte Spalte zu setzen und mit float:left zu versehen. Dann kommt der Inhalt (die Detailansicht) vor der Zusammenfassung. Eventuell kannst Du dann im Zusammenfassungstemplate auf die Article ID aus der Detailansicht zugreifen. (Sofern sie überhaupt irgendwo in irgendeinem Template vorhanden ist.)
Kann ich bereits ohne diesen Umbau die Article ID ins Zusammenfassungstemplate bringen bzw.
Wie greife ich aus dem Zusammenfassungstemplate auf die Article ID zu?
Last edited by markus0711 on Thu Sep 09, 2010 1:12 pm, edited 1 time in total.
NaN

Re: Newsmodul: Articleid für das Paging mitgeben

Post by NaN »

Die Funktionen werden der Reihe nach abgearbeitet.
D.h. wenn das Zusammenfassungstemplate vor dem Detailtemplate steht, existiert im Zusammenfassungstemplate noch nichts, was mit den Details zu hat. Die werden ja erst danach verarbeitet.

Umgekehrt allerdings schon.

Dann könntest Du auf die gleiche Weise wie Du auf die article ID im Detailtemplate zugreifst diese auch im Zusammenfassungstemplate nutzen.
Einziges Problem ist, dass im Zusammenfassungstemplate die Variable {$entry} wieder überschrieben wird.
Entweder Du änderst das Zusammenfassungstemplate so ab, dass in der {foreach} Schleife eine andere Variable verwendet wird:

Code: Select all


{foreach from=$items item=entry2}

   {$entry2->titlelink}

{/foreach}

Oder Du erstellst mit Hilfe von {assign} im Detailtemplate eine neue Variable, die nur die Artikel ID enthält:

Code: Select all


{assign var="article_id" value="$entry->id"}

Dann solltest Du diese im Zusammenfassungstemplate mit

Code: Select all


{$article_id}

verwenden können.

Eine andere Möglichkeit wäre {$smarty.get} zu verwenden.
Ist aber nicht so dynamisch. Sollte in Deinem Falle aber ausreichen.
D.h. ohne Umbau könntest Du im Zusammenfassungstemplate so an die Article ID herankommen:

Code: Select all


{$smarty.get.cntnt01articleid}

Ich weiß allerdings nicht inwiefern Dir die Artikel ID wirklich weiterhilft, da die Paginierungslinks im Zusammenfasungstemplate ja nicht direkt drin stehen.
Dort steht ja nur {$prevpage}. Da ist also keine Adresse an die Du diese Artikel ID dranhängen könntest.
markus0711
Forum Members
Forum Members
Posts: 45
Joined: Thu Jun 10, 2010 7:11 am

Re: Newsmodul: Articleid für das Paging mitgeben

Post by markus0711 »

NaN wrote: Ich weiß allerdings nicht inwiefern Dir die Artikel ID wirklich weiterhilft, da die Paginierungslinks im Zusammenfasungstemplate ja nicht direkt drin stehen.
Dort steht ja nur {$prevpage}. Da ist also keine Adresse an die Du diese Artikel ID dranhängen könntest.
Danke erstmal für die Hilfe, ich versuch mal, das einzubauen.
Allerdings sehe ich auch die Problematik auf mich zu kommen wie du es in deinem letzten Satz beschrieben hast.
Hast du vielleicht einen anderen Lösungsansatz?
NaN

Re: Newsmodul: Articleid für das Paging mitgeben

Post by NaN »

Ein anderer Lösungsansatz wäre, das Modul zu hacken und dafür zu sorgen, dass die Artikel ID automatisch mit in die Links eingebaut wird.

Du könntest aber auch mit einem regulärem Suchmuster im Summary-Template die Link-Addresse manipulieren.
Z.B. so:

Code: Select all


{if isset($smarty.get.cntnt01articleid)}

   {$prevpage|regex_replace:"/href=['\"]([^'\"]*)['\"]/":"href=\"\\1&cntnt01articleid=`$smarty.get.cntnt01articleid`\""}

{/if}

markus0711
Forum Members
Forum Members
Posts: 45
Joined: Thu Jun 10, 2010 7:11 am

Re: Newsmodul: Articleid für das Paging mitgeben

Post by markus0711 »

Habe den Code von dir eingebaut.
Folgender Link wird z.B. generiert in $nextpage:

.../cmsms/index.php?mact=News,mee334,default,1&mee334number=3&mee334detailpage=news&mee334moretext=weiterlesen...&mee334category=General&mee334pagenumber=2&mee334returnid=75&page=75&cntnt01articleid=11

Trotz der Article ID kommt bei Klick auf den Link im Content das bekannte "Artikel nicht gefunden".

Die dynamisch erzeugten Links im Zusammenfassungstemplate zu den Artikeln sehen dagegen so aus:

.../cmsms/index.php?mact=News,cntnt01,detail,0&cntnt01articleid=10&cntnt01origid=75&cntnt01returnid=75&cntnt01returnid=75

Ich müsste wohl da wohl einen Mix finden?

Und was bedeutet im ersten Link "mee334" und im zweiten "cntnt01"?

Kann denn das so schwer sein? ???
Last edited by markus0711 on Fri Sep 10, 2010 8:58 am, edited 1 time in total.
NaN

Re: Newsmodul: Articleid für das Paging mitgeben

Post by NaN »

mee334 und cntnt01 sind IDs.
Die erste ist eine zufallsgenerierte ID. Die zweite sagt dem CMS, dass hier jetzt die Ausgabe des Moduls im Inhalt erfolgen soll. Aber irgendwie scheint das noch nicht ganz so zu klappen wie ich das dachte. Du versuchst im Prinzip mit einer Modulinstanz die Ausgabe von zwei verschiedenen Instanzen zu steuern. Das geht aber leider nicht. Zumindest nicht so einfach. Denn das Modul in der rechten Spalte achtet nur auf Parameter mit der ID me334. Das cntnt01 geht da völlig unter, weil es derzeit kein Modul gibt, das auf diese ID reagiert. Aber schonmal schön zu sehen, dass das mit dem regex_replace fuktioniert ;D

Mit diesen IDs werden die einzelnen Instanzen eines Moduls identifiziert.
Man kann ja ein und dassselbe Modul mehrmals im Template verwenden.
Damit das CMS weiß, zu welchem Modul die jeweiligen Parameter bzw. die jeweilige Ausgabe gehört, benötigt es diese IDs.

Wie sieht denn das Seiten-Template aus?
Steht dort an der Stelle wo die details ausgegeben werden nur {content}?
Dort müsste ein weiteres Modul stehen, welches dann den cntnt01 Parameter verarbeitet...

Folgeder Ansatz: Prüfe im Template, ob die Artikel ID vorhanden ist.
Wenn ja, dann rufe das News Modul mit action="details" und aticleid="article ID" auf. Wenn nicht, nur den Inhalt.
Bsp.:

Code: Select all


{content assign="content"}
{if isset($smarty.get.cntnt01articleid)}
   {news action="details" articleid="$smarty.get.cntnt01articleid"}
{else}
   {$content}
{/if}

Wenn man die Seite aufruft, wird der Inhalt angezeigt.
Wählt man einen News-Artikel wird der News-Artikel im Inhalt angezeigt.
Wenn man jetzt aber die manipulierten Vor- und Zurück-Links anwählt, wird ja die Variable cntnt01articleid mit übergeben. Jetzt wird nicht mehr der Inhalt angzeigt, sondern das News-Modul mit der Aktion "Zeige mir die Details von dem Artikel mit folgender id ... ".
Somit sollte es funktionieren.
Last edited by NaN on Fri Sep 10, 2010 10:27 am, edited 1 time in total.
markus0711
Forum Members
Forum Members
Posts: 45
Joined: Thu Jun 10, 2010 7:11 am

Re: Newsmodul: Articleid für das Paging mitgeben

Post by markus0711 »

NaN wrote:
An dieser Stelle

  {news action="details" articleid="$smarty.get.cntnt01articleid"}


kommt der Fehler:

string(126) "Smarty error: [in tpl_body:24 line 105]: syntax error: $smarty. is an unknown reference (Smarty_Compiler.class.php, line 2129)"

Ich habe deshalb mal die articleid im Aufruf hart gesetzt.
Dann gibt es zwar keinen Fehler mehr, aber der Artikel erscheint nicht sondern wieder " Artikel nicht gefunden".
Mir scheint, dass die If Abfrage gar nicht ausgeführt wird sondern bereits vorher ein Abbruch erfolgt.
Last edited by markus0711 on Fri Sep 10, 2010 11:16 am, edited 1 time in total.
NaN

Re: Newsmodul: Articleid für das Paging mitgeben

Post by NaN »

Nee, der Fehler sind die Anführungszeichen ;)
(das passiert mir immer wieder... ::) )

Versuchs mal so :

Code: Select all


{news action="details" articleid=$smarty.get.cntnt01articleid}

Dass die IF-Abfrage nicht ausgeführt wird, liegt daran, dass in Deinen Vor-Zurück-Links die Artikel ID nicht mehr angegeben ist. Du musst hier die Artikel ID noch dranhängen.
Last edited by NaN on Fri Sep 10, 2010 11:57 am, edited 1 time in total.
markus0711
Forum Members
Forum Members
Posts: 45
Joined: Thu Jun 10, 2010 7:11 am

Re: Newsmodul: Articleid für das Paging mitgeben

Post by markus0711 »

OK, der Fehler ist weg.

Im Vor/ Zurück Link des Paging ist die Article ID vorhanden, z.B.:

.../cmsms/index.php?mact=News,mee334,default,1&mee334number=3&mee334detailpage=news&mee334moretext=weiterlesen...&mee334category=General&mee334pagenumber=1&mee334returnid=75&mee334returnid=75&page=75&cntnt01articleid=2

Trotzdem kommt "Artikel nicht gefunden".
NaN

Re: Newsmodul: Articleid für das Paging mitgeben

Post by NaN »

Hm, dann bin ich mit meinem Latein so langsam am Ende.
Hab auf Deine verlinkte Seite geschaut, und da ist die articleid nicht im Link.

Versuch mal das im Template {$smarty.get|print_r}

Damit sollten alle übergebenen Variablen aufgelistet werden.
Da muss doch irgendwann die articleid mit auftauchen.

(Bei Änderungen am Template ab und zu mal den Zwischenspeicher löschen)
Post Reply

Return to “Module und Tags”