Bludit CMS

Bludit CMS Workbench - Codeschnipsel, um das eigene Bludit CMS anzupassen



Bludit, verwandte Beiträge I

Teil 1 - Mit nur wenigen Handgriffen zeigen Sie verwandte Beiträge unter Ihrem Post an. Dank der excellente Dokumentation des Bludit-Projektes fast ein Kinderspiel.

Wie im Internet oft vom Leser erwartet und mittlerweile zum Quasistandard geworden, erscheinen unterhalb eines Beitrags ähnliche Beiträge. Gesteuert werden kann dieser Mechanismus über die geniale Erfindung der Schlagwörter (Tags). In der wirklich excellenten Dokumentation (https://docs.bludit.com/en/dev-snippets/tags) des CMS Bludit findet man dazu zwei wesentliche Codeschnipsel, die theoretisch ineinander geschachtelt werden können - doch Achtung, es gibt ein kleines Problem damit.

001  <?php
002   // Tag key
003 $tagKey = 'example';
004
005  // The tag is an Tag-Object
006  $tag = getTag($tagKey);
007
008  // Print the tag name
009  echo 'Tag name: ' . $tag->name();
010
011  // Print the pages title related to the tag "example"
012  foreach ($tag->pages() as $pageKey) {
013   $page = new Page($pageKey);
014  echo $page->title();
015  }
016 ?>

Beiträge mit dem Tag "example" anzeigen (erstes Codeschnipsel aus der Doku)

Das oben gezeigte Codesegment liest alle Seiten (Posts) in denen das Schlagwort "example" gesetzt wurde. Das ist schon mal die halbe Miete. Sie müssen jetzt nur noch realisieren, das das feste Schlagwort "example" durch das tatsächliche Schlagwort des aktuell angezeigten Beitrags ersetzt wird. Dafür kommt das folgende Codeschnipse aus der hervorragenden Bludit-Doku ins Spiel.

001  <?php
002  $returnsArray = true;
003
004    $items = $page->tags($returnsArray);
005
006    foreach ($items as $tagKey=>$tagName) {
007    echo $tagName;
008 }
009 ?>

Tag(s) des aktuellen Beitrags lesen (zweites Codebeispiel aus der Doku)

Die Zeile 003 des ersten und die Zeile 007 des zweiten Codeschnipsels sind also die Verbindungsstellen, um beide Scripte miteinander zu verbinden. Diese beiden Scripte habe ich zum folgenden Codeschnipsel zusammengefügt.

001  <?php
002 $returnsArray = true;
003    $items = $page->tags($returnsArray);
004    foreach ($items as $tagKey=>$tagName) {
005    //echo $tagName;
006         
007    $tagKey = strtolower($tagName);
008      //$tagKey = 'example';
009      $tag = getTag($tagKey);
010      echo '<p>Schlagwort: ' . $tag->name().'</p>';
011      foreach ($tag->pages() as $pageKey) {
012      $page = new Page($pageKey);
013        echo '<p><img src='.$page->coverImage().' style="width: 120px; float: left; margin-right: 15px;">';
014        echo '<h3>'.$page->title().'</h3>';
015        echo $page->description();
016        echo '<a href='.$page->permalink().'> mehr...</a></p>';
017    }      
018  }    
019 ?>

Der Match aus beiden Codeschnipseln

Aber es gibt hier ein kleines undokumentiertes Problem auf das ich selbst erst nach einigen Analysen gestoßen bin. Das simple übertragen in Zeile 007 ala $tagKey = $stagName funktioniert nicht, bzw. das Script arbeitet etwas unzuverlässig. Die Ursache ist, das $tagKey die Schlagwörter zwingend als LowerCase benötigt. Es reicht also aus den Return-Wert aus $tagName zuvor mit strtolower() in Kleinbuchstaben umzuwandeln - dann klappts auch mit dem Nachbarn.

Das Beispiel zeigt bei Einbindung in das Script page.php des Theme, unterhalb des Posts alle verwandten Beiträge in denen ebenfalls die Schlagwörter gesetzt wurden.

Optional: Das Script zeigt allerdings auch den aktuell angezeigten Post mit an, dies können Sie durch eine einfache if-Abfrage umgehen, dadurch zeigt das Script alle Beiträge die nicht der aktuell angezeigte sind - Ihr wißt was ich meine.

Das Codeschnipsel funktioniert nur sinnvoll, wenn jeder Beitrag nur ein Schlagwort besitzt. Tauchen mehrere Schlagworte in einem Beitrag auf, die auch mehrfach in einem anderen Beitrag enthalten sind, werden diese auch mehrfach angezeigt. Das Codesegment sollte daher noch um einen Filter (Sort) erweitert werden, welcher doppelte Nennungen entfernt. Dies zeige ich im folgenden Beitrag.

Und im übrigen, sind Punkte und Leerzeichen in Tags verboten und können zu Problemen führen! Auch gleichnamige Beiträge müssen vermieden werden, da sie als doppelt gewertet werden.

Wählen Sie Schlagworte mit bedacht und überfrachten Sie den Beitrag nicht mit unsinnigen Tags, die teilweise überhaupt nicht im Text vorkommen. Zwei bis drei Schlagworte reichen schon aus.

Auch interessant, die Webseite des Bludit-Entwicklers Diego Najar: https://varlogdiego.com/




Empfehlungen


Bludit 3.8.1 Anpassungen

Dieser Beitrag zeigt Ihnen meine persönlichen Anpassungen an der Startseite (home.php), der Seitenanzeige (page.php) und dem Footer (footer.php)


page.php - Meta Info aktivieren

Aktivieren Sie den Anleser für die Posts mit dem folgenden kleinen Codeschnipsel für die page.php des ausgewählten Theme.


Eigenes Bludit Theme

So steuern Sie die Templatevorgabe in Beiträgen mit dem CMS Bludit. Sie können den Tamplatenamen bei der Erstellung von Beiträgen angeben.


Bludit, verwandte Beiträge II

Teil 2 - In diesem Beitrag zeige ich Ihnen das vollständige Coding, wie das CMS Bludit anhand von Tags verwandte Beiträge anlisten kann.


page.php - Schlagwörter

Dieser Beitrag zeigt Ihnen wie Sie die Schlagwörter von Beiträge aktivieren können, in Themes die keine Seitenleiste haben.


Schlagwörter in Bludit Alternative

In Themes wie "Alternative" wird keine Seitenleiste unterstützt, folglich funktioniert das Plugin Schlagwörter nicht. Sie können die Schlagwörter dennoch unter einem Post aktivieren.


Untergeordnete Posts

Strukturieren Sie Beiträge indem Sie ihnen einen führenden Beitrag zuordnen. Dies können Sie im PHP-Coding abfragen, es ist ganz einfach.




Es wurden noch keine Kommentare verfasst, sei der erste!

About

Tipps. Tricks, Snippets, Hacks und Codings zum CMS Bludit, Automad, WordPress, Joomla, GetSimple, Typesetter, Nibbleblog oder den angesagten Template Engines wie Smarty.


Impressum - Datenschutz - Copyright - RSS - Kontakt

Leser heute

122