Stylemotion.de Forum » apexx » Konzepte & Codeschnipsel
Gewählte News bei ähnlichen News ausblenden
Seiten (3): 1 2 3 »  
Autor Beitrag
 
Christian Scheb
Stylemotion.de (Entwickler)
Gewählte News bei ähnlichen News ausblenden
problemstellung:
die funktion NEWS_SIMILAR() gibt news-meldungen aus, die zu einer liste von schlüsselwörter passen. meistens kommt diese funktion in der news-detailansicht zum einsatz mit der unangenehmen nebenwirkung, dass die news, die man gerade ansieht, ebenfalls in der liste aufgeführt wird.

lösung:
der folgende trick funktioniert nur in der news-detailansicht!

zunächst wird die funktion NEWS_SIMILAR() in der detailansicht der news-meldungen platziert (templates/default/news/details.html). man möchte 5 ähnliche news ausgegeben haben, man ließt daher eine news mehr aus, nämlich 6. der funktion müssen außerdem die schlüsselwörter der aktuellen news übergeben werden, die sich in der variable KEYWORDS befinden:

Code:
1{NEWS_SIMILAR(TAG_IDS, 6)}


nun listet die funktion 6 ähnliche news auf, unter denen sich wohlmöglich die aktuell ausgewählte news befindet. um nur die gewünschte zahl von 5 news anzuzeigen und die aktuelle news auszuschließen verwendet man zwei tricks:

1) mit einem counter zählt man wie viele news bereits ausgegeben wurden und bricht die auflistung nach der 5. news ab.
2) man vergleich die IDs der news mit der variable SERVER_REQUEST_ID. wenn die IDs gleich sind handelt es sich um die news, die man nicht anzeigen möchte.

im template, das die funktion NEWS_SIMILAR() verwendet (standardmäßig templates/default/news/functions/similar.html), sollte dann folgender code stehen:

Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
{list NEWS}

{* prüfe ob die IDs gleich sind. falls ja, überspringe diese news *}
{if NEWS.ID==SERVER_REQUEST_ID}{continue}{/if}

HIER DIE AUSGABE DER NEWS-MELDUNG

{* zähle wie viele news ausgegeben wurden *}
{++COUNTER}

{* auflistung beenden, wenn 5 news erreicht *}
{if COUNTER==5}{break}{/if}

{/list}


der selbe trick funktioniert auch bei artikeln/downloads/etc. allerdings auch nur in der jeweiligen detailansicht.
Christian Scheb ist offline  
 
bigfraggle
Kunde (Support beendet)
Hm, ich brauche für die weiteren News eine Überschrift a la "Weitere News zum Thema". Allerdings soll die natürlich nur angezeigt werden, wenn auch weitere News vorhanden sind.

Dachte erst, man könnte sowas wie

Code:
1
2
3
{if NEWS}<b>Weitere News zum Thema:</b><br />
{list NEWS}...{/list}
{/if}


nutzen, aber das geht natürlich nicht.

Hat hier jemand Lösungsvorschläge?
bigfraggle ist offline  
 
Christian Scheb
Stylemotion.de (Entwickler)
Das geht nicht, weil im Zweifelsfall immer die News selbst in der Liste ist und somit {if NEWS} immer zutrifft. Um herauszufinden, ob abgesehen von der News selbst eine weitere News in der Liste ist, muss man die Liste abarbeiten und dabei in einem Counter zählen, ob eine News potentiell ausgegeben wird. Das kann man z.B. so machen:

Code:
1{list NEWS}{if NEWS.ID!=SERVER_REQUEST_ID}{++NEWS_EXISTS}{break}{/if}{/list}


Wenn die Variable NEWS_EXISTS anschließend gesetzt ist, wird eine News angezeigt, wenn nicht eben nicht. Nochmal alles zusammen:

Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
{* prüfe, ob eine News angezeigt werden wird *}
{list NEWS}{if NEWS.ID!=SERVER_REQUEST_ID}{++NEWS_EXISTS}{break}{/if}{/list}

{* wenn es eine News gibt, Überschrift ausgeben und Auflistung beginnen *}
{if NEWS_EXISTS}
<p>Weitere News zu diesem Thema:</p>

{list NEWS}

{* prüfe ob die IDs gleich sind. falls ja, überspringe diese news *}
{if NEWS.ID==SERVER_REQUEST_ID}{continue}{/if}

HIER DIE AUSGABE DER NEWS-MELDUNG

{* zähle wie viele news ausgegeben wurden *}
{++COUNTER}

{* auflistung beenden, wenn 5 news erreicht *}
{if COUNTER==5}{break}{/if}

{/list}

{/if}
Christian Scheb ist offline  
 
marcor
Kunde (Support beendet)
Bei mir funktioniert das irgendwie gar nicht. Selbst wenn ich den Code

Code:
1{NEWS_SIMILAR(KEYWORDS, 6)}


in die detail-Ansicht einbaue, erscheint nichts?
marcor ist offline  
 
Christian Scheb
Stylemotion.de (Entwickler)
Der Code lautet seit Version 1.6 anders, und zwar (oben aktualisiert):
Code:
1{NEWS_SIMILAR(TAG_IDS, 6)}

Zudem müssen die News mit Tags ausgestattet werden, da NEWS_SIMILAR News mit den selben Tags ausgibt. Wenn keine Tags gesetzt sind, wird logischerweise auch nichts ausgegeben.
Christian Scheb ist offline  
 
bigfraggle
Kunde (Support beendet)
Danke, klappt. :)

@all: Wer keine Lust auf Tags hat, kann natürlich auch andere News zum verknüpften Produkt auf diese Art und Weise ausgeben.

Code:
1{PRODUCT_NEWS(PRODUCT_ID,6)}


Der entsprechende Code kommt dann lediglich in die templates/default/news/functions/productnews.html hinein...
bigfraggle ist offline  
 
dave1980
Kunde (Support beendet)
Kann man das zusätzlich noch auf die aktuell aufgerufe CATID der News-ID beschränken.

Gruß
dave1980 ist offline  
 
Christian Scheb
Stylemotion.de (Entwickler)
Man kann beim Aufruf der Template-Funktion eine CATID als Parameter angeben, dann werden von vorne herein nur News aus dieser CATID ausgelesen.
Christian Scheb ist offline  
 
dave1980
Kunde (Support beendet)
Geht das mittlerweile auch in der Index-Auflistung? Ich würde gerne unter der News-Zusammenfassung, die Meldungen 2-4- unten anstellen lassen?

Gruß David
dave1980 ist offline  
 
Christian Scheb
Stylemotion.de (Entwickler)
Sorry, aber diese Frage verstehe ich nicht. Geht es etwas genauer?
Christian Scheb ist offline  
Seiten (3): 1 2 3 »  
 
Suche Optionen
» Erweiterte Suche
Druckansicht Druckansicht