WBCE CMS – Way Better Content Editing.
You are not logged in.
Moin!
Ich möchte gerne am Ende eines Newsbeitrags eine Liste von News dartstellen, die den gleichen Keyword (Tag) haben.
So was wie:
"Andere News zu diesem Thema"
Da die einzelne Newsbeitrage unterschiedliche Tags haben lönnen ist es nicht möglich im Vorfeld beim "News with Images anywhere" die Tags fest zu definieren.
Hier muss man also irgendwie dynamisch aggieren.
Wie kann ich diesen Parameter (Tags) aus dem Newsbeitrag einlesen und dem Droplet Anywhere übergeben?
Oder gibt es eine andere Lösung "Andere News zu diesem Thema" zu erstellen?
Offline
Ich suche weiter nach einer Lösung Liste mit verwandten NWI-Beiträgen zu erstellen.
Bei den Topics war das schon ingriert, da konnte man jedem Topic andere zuweisen...
Die Tags werden beim NWI-Beitrag ausgelesen, wenn ihm welche zugewiesen sind. Und das NWI-Modul generiert schon einen Link zu Liste mit den anderen Beiträgen, die die gleichen Tags haben. Man muss noch daraug klicken...
Der moderne User macht das meistens nicht, er will (er erwartet sogar), dass ihm gleich so eine Liste präsentiert wird, wo er dann nach Überschriften und Shorts enrscheidet, on er weiter guckt oder nicht...
Hat jemand vielleicht einen Tipp für mich, wie ich es lösen könnte?
Offline
Mach einen Feature Request auf GitHub auf. Vielleicht nimmt sich jemand dessen an. Wenn es dringend ist, könnte ein Auftrag gegen Bezahlung helfen.
Ich habe eine Amazon-Wishlist. Oder spende an das Projekt.
Ich kann, wenn ich will, aber wer will, dass ich muss, kann mich mal
Online
Das Ansinnen ist ja nicht völlig abwegig.
Theoretisch ließe sich das ja ganz einfach mit NWI Anywhere-Droplet abbilden - man müsste dafür nur an die Tags ohne Formatierung herankommen, aber das gelingt mir aus unerfindlichen Gründen nicht.
Ich habe in der view.php die Schleife, die die Tags zieht, ergänzt
foreach ($tags as $i => $tag) {
$tagListArray[] = $tag['tag'];
$tags[$i] = "<span class=\"mod_nwi_tag\" id=\"mod_nwi_tag_".POST_ID."_".$i."\""
. (!empty($tag['tag_color']) ? " style=\"background-color:".$tag['tag_color']."\"" : "" ) .">"
. "<a href=\"".$wb->page_link(PAGE_ID)."?tags=".$tag['tag']."\">".$tag['tag']."</a></span>";
if(!isset($page_keywords[$tag['tag']])) {
$page_keywords[] = htmlspecialchars($tag['tag'], ENT_QUOTES | ENT_HTML401);
}
}
$tagList = implode(',',$tagListArray);
und unten nach
'TAGS' => implode(" ", $tags),
eingefügt
'TAGLIST' => $tagList,
und in der functions.php.inc in der function mod_nwi_replacements() auch nach
'TAGS', // tags
eingefügt
'TAGLIST', // tags without formatting
Aber wenn ich dann in den Seiteneinstellungen analog zu [TAGS] den vermeintlichen Platzhalter [TAGLIST] ergänze, wird dieser stumpf als Text ausgegeben - also nur "[TAGLIST]" statt z.B. "Obst,Gemüse".
Müssen die Platzhalter noch irgendwo anders "angemeldet" werden?
Edit: Ansatz war doch richtig, war nur an fehlenden Umbrüchen gescheitert, die beim Speichern entstanden waren, sodass der zusätzliche Platzhalter in der functions.php als Kommentar behandelt wurde.
Mit der oben genannten Erweiterung kann man dann in der Nachrichten-Fußzeile oder wo auch immer das (gem. Anleitung zuvor anzulegende) Droplet getNewsItems aufrufen, und
[[getNewsItems?tags='[TAGLIST]']]
gibt dann die Links zurück. (Weitere Parameter sind möglich, siehe a.a.O. Beachte die Hochkommata um [TAGSLIST].)
Das klappt allerdings nur mit Tags ohne Umlaute. Um auch deren Verwendung zu ermöglichen, ist dann noch eine Anpassung in der news_img_anywhere/include.php erforderlich - nach Zeile 231
$tags[$i] = $database->escapeString($t);
einfügen:
$tags[$i] = str_replace(array('ä','ö','ü','Ä','Ö','Ü','ß'),array('ä','ö','ü','Ä','Ö','Ü','ß'),$tags[$i]);
Das fängt jetzt nur die deutschen Umlaute und ß ab, weitere Sonderzeichen in den Arrays (als HTML-Entität und in Klarschrift) einfügen.
Bitte. Danke. Gern geschehen.
Last edited by florian (25.05.2024 16:13:23)
Sorgen sind wie Nudeln: man macht sich meist zu viele.
Offline
Hallo Florian,
vielen Dank für die Funktion!
Sie ist wirklich sehr hilfreich. Und so eine Funktion fehlte bis jetzt.
Ich habe selbst versucht das zu lösen, bin aber an meine Wissensgrenze angekommen.
Nochmal vielen Dank dafür!
Offline
Ich teste die Funktion weiter und habe ein Manco festgestellt:
wenn ein NWI-Beitrag kein Tag hat, erscheint bei seinem Aufruf weißer Bildschirm und beim Errorlog viewer steht:
[Warning] /modules/news_img/view.php:[98] from /framework/frontend.functions.php:[485] block_contents "Undefined variable $tagListArray"
[Exception] There was an unknown exception: implode(): Argument #1 ($pieces) must be of type array, string given in line (98) of /modules/news_img/view.php
Offline
Ja, stimmt. Da war wohl bei meinen verzweifelten Versuchen eine Variablendefinition auf der Strecke geblieben.
Füge in der view.php, nach Zeile 75
$page_keywords = array();
ein:
$tagListArray = array();
Damit dann bei Beiträgen ohne Tags der NWI-anywhere-Aufruf nicht dazu führt, dass alle News ausgegeben werden, ergänze im Code des Droplets getNewsItems als erste Zeile noch
if (isset($tags) && $tags=='\'\'') { return; }
Sorgen sind wie Nudeln: man macht sich meist zu viele.
Offline
Hallo Florian,
es funktioniert.
Beim Errorlog viewer gibt es nach dem Aufruf von Droplett aber gleich zwei solche Warnungen:
[Warning] /modules/droplets/droplets.php:[73] from /modules/droplets/opf_filter_droplets.php:[70] evalDroplets "Undefined array key 1"
[Warning] /modules/droplets/droplets.php:[73] from /modules/droplets/opf_filter_droplets.php:[70] evalDroplets "Undefined array key 1"
Offline
Seltsam, kann ich hier nicht reproduzieren.
Wie sieht dein Dropletcode aus, und wie lautet der vollständige Aufruf?
Sorgen sind wie Nudeln: man macht sich meist zu viele.
Offline
Beim Rumexperimentieren habe ich im Dropletaufruf die doppelte Eingabe von tags übersehen...
Schei...e!
Jetzt läuft alles korrekt.
Vielen Dank für diese sinnvolle Erweiterung !
Offline
Eine kleine Frage noch:
für das Droplet sind eigene Templates vorgesehen (in modules/news_img_anywhere/templates)
Und bei Templates sind Bedingungen wie "IF" möglich.
Ich möchte eine Bedingung einfügen:
"wenn mehr als 1 NWI-Beitrag vorhanden ist"
Wie definiere ich eine solche Bedingung im Tempate?
Last edited by kleo (27.05.2024 22:42:28)
Offline
{% if newsItems | length > 1 %}
<p>Lesen Sie folgende Beiträge zum selben Thema</p>
{% else %}
<p>Lesen Sie folgenden Beitrag zum selben Thema</p>
{% endif %}
Sorgen sind wie Nudeln: man macht sich meist zu viele.
Offline
Danke sehr!
Offline