Software >> Redaxo


Ähnliche Artikel


Ich habe ein kleines REDAXO Modul erstellt welches zu einem Artikel "Ähnliche Artikel" ausgibt.

Zu diesem Modul wird eine neue Spalte in der Tabelle "rex_article"  benötigt. Diese erstellen wir wie im Bild angezeigt, über das Backend unter "Meta Infos".

Nun sind wir in der Lage zu jedem Artikel "Tags" zu vergeben um den Artikel zu Kategorisieren. Mehrere "Tags" können wir mit "," (Kommata) separieren.

Um das ganze auszuwerten, erstellen wir ein neues Modul mit dem nachfolgenden Code.

<div class="aehnliche_article">
<h3>Ähnliche Artikel</h3>
<ul>
<?php


$tagEnv 
rex_request("tag",string);

// Nur auswerten wenn es ein Artikel ist, und wir uns nicht im Backend befinden
if ($REX['ARTICLE'] && $REX['ARTICLE']->getValue('art_tags') <> "") {        
  
// Auslesen der Tags des aktuelles Artikels
  
$tag $REX['ARTICLE']->getValue('art_tags');

  
// Spliten der Tags und für jeden einzelnen anfragen ob es dazugehoerige Artikel gibt.
  
$sqlRef = new rex_sql();
  
$i 0;
  
$tagArray preg_split("/,/",$tag);
  
$size sizeof($tagArray);
  foreach (
$tagArray as $key) {
    
$i++;
    
$articleTag .= " art_tags like '%$key%'";
    if (
$i $size)
      
$articleTag .= " or";
  }

  
$sqlRef->setQuery("select id, name, art_description from rex_article where status = 1 and $articleTag order by rand() limit 5");

  foreach(
$sqlRef->getArray() as $value) {
    print 
'<li><a href="'.rex_getUrl($value["id"]).'">'.$value["name"].'</a><br/><div class="description">'.$value["art_description"].'</div></li>';  
  }
} else {
echo 
"Keine ähnlichen Artikel vorhanden";        
}
?>
</ul>
</div>


<a name="tags">&nbsp;</a>
<div class="tags_auflistung">
<?php
if ($REX['ARTICLE']) {
  
$tag $REX['ARTICLE']->getValue('art_tags');     
  
$tagArray preg_split("/,/",$tag);

  echo 
'Tags: <span class="tags">';
  foreach (
$tagArray as $key) {
    print 
'<a href="?tag='.$key.'#tags">'.$key.'</a> &nbsp;';
  }
  echo 
'</span><br/>';

  echo 
'Erstellt: '.date("d.m.y",$this->getValue("createdate")).'';


  
// Ausgeben aller Artikel welche zu dem ausgewaehlten tag gehoeren
  
if ($tagEnv) {
    
$sqlRef = new rex_sql();
    
$sqlRef->setQuery("select id, name from rex_article where status = 1 and art_tags like '%".htmlspecialchars($tagEnv)."%'");

    print 
'<br/><ul>';
    foreach(
$sqlRef->getArray() as $value) {
      print 
'<li><a href="'.rex_getUrl($value["id"]).'">'.$value["name"].'</a></li>';
    }
    print 
'</ul>';
  }
}
?>
</div>

Zu guter Letzt muss man lediglich dieses Modul in die Artikel hinzufügen. Fertig!

Ähnliche Artikel

  • Coin Bezahlsystem
    Ich erstelle derzeit aus Interesse ein Coin Bezahlsystem Addon für Redaxo. Dieses System bietet die Möglichkeiten Produkte unterschiedlicher Art (aber Digitaler Form) zu Verwalten.
  • PHP5 Problem unter Apache2
  • Tag Cloud
    Basierend auf mein Redaxo Modul "Ähnliche Artikel", habe ich ein Template zum ausgeben einer Tag Cloud erstellt.
  • Ähnliche Artikel
    Ich habe ein kleines REDAXO Modul erstellt welches zu einem Artikel "Ähnliche Artikel" ausgibt.
  • PHP5 Memcache Testen
 
Tags: redaxo   module   php  
Erstellt: 22.07.10


Kommentare

Noch keine Kommentare für diesen Eintrag vorhanden

Bitte Melden Sie sich an um ein Kommentar zu schreiben

comment_rank Kommentar-AddOn für RedaxoCMS von franz007