Zur neuen Version dieses Moduls: http://forum.contenido.org/viewtopic.php?f=89&t=36172
-----------------------------
Hallo zusammen,
hatte letztens ein Fachbuch in der Hand, bei dem verschiedene Kapitel mit Querverweisen zu anderen Kapiteln versehen waren. Das lässt sich natürlich nach dem bekannten "das könnte Sie auch interessieren"-Schema auf einer Website einbinden. Also hab ich mir das mal vorgenommen und es klappt.
Kurze Erklärung zum Prinzip:
Artikel A bekommt die Schlagworte "Auto" und "Gelände".
Artikel B bekommt die Schlagworte "Auto" und "Sportwagen".
Artikel C bekommt die Schlagworte "Motorrad" und "Gelände".
Durch diese Verschlagwortung bekommen alle Artikel in einer kleinen Box automatisch erzeugte Querverweise:
Artikel A ist per "Auto" mit Artikel B verlinkt und per "Gelände" mit Artikel C.
Artikel B ist per "Auto" nur mit Artikel A verlinkt.
Artikel C ist per "Gelände" mit Artikel A verlinkt.
In Screenshots sieht das so aus:
So lassen sich verwandte Artikel direkt verlinken und "Interessengruppen" bilden. Sobald ein Artikel neu in eine Schlagwortgruppe kommt, ist er automatisch bei allen verwandten Artikeln dabei. Es muss also keine "manuelle Verlinkung" vorgenommen werden. Gleiches gilt auch umgekehrt, wenn ein Artikel mal nicht mehr in einer Gruppe erscheinen soll.
Die Vergabe von Schlagworten wird in zwei Datenbanktabellen hinterlegt: eine für jedes Schlagwort mit den dazugehörigen Artikel-idarts, eine für jede idart mit den zugeordneten Schlagworten. Bei der Linkerzeugung werden diese beiden Tabellen abgeklappert und auch mit der con_art_lang abgeglichen ob der Artikel überhaupt online ist. Bei der Linkausgabe kann gewählt werden ob der im Reiter Eigenschaften hinterlegte Title oder die Headline angezeigt werden soll. Bei der Headline sind allerdings in der con_content teilweise reichlich Sonderzeichen mit % usw. vorhanden, die vor der Ausgabe per str_replace entfernt oder ersetzt werden. Klappt, aber da gibts evtl. noch einen besseren Weg?
EDIT 15.12.2011: Es gibt jetzt am Anfang des Outputs die Möglichkeit, ein Sortierkriterium anzugeben. "name" sortiert die Verknüpfungen nach Title oder Headline, "created" nach dem Erstellungsdatum des Artikels und "lastmodified" nach dem Zeitpunkt der letzten Änderung.
Über den Reiter Konfiguration lassen sich neue Schlagworte vergeben, löschen und ändern. Beim Löschen wird geprüft, ob irgend ein Artikel mit diesem Schlagwort versehen ist. Wenn ja, ist ein Löschen erst möglich, wenn bei allen Artikeln dieses Schlagwort nicht mehr zugeordnet ist (dabei wird eine Liste mit Links auf diese idarts ausgegeben um einem das Suchen abzunehmen).
Wenn ein Artikel einmal nicht nur offline gestellt sondern komplett gelöscht wird, wird diese idart zukünftig nicht mehr zum Einsatz kommen. Das Modul "erkennt" zwar, dass es diesen Artikel nicht mehr gibt da bei der Prüfung ob er online ist natürlich kein positives Ergebnis kommen kann. Also wird er nicht mehr verlinkt. In den beiden Tabellen ist diese idart aber noch vorhanden. Um sie rauszuwerfen und die Tabellen sauber zu halten, sollte von Zeit zu Zeit die Funktion "auf nicht vorhandene idarts prüfen" durchgeführt werden. Dadurch wird geschaut, ob die in der Tabelle für die Artikel vorhandenen idarts überhaupt noch in der con_art_lang vorkommen. Wenn nicht, Rauswurf in der Tabelle für die Schlagworte und die Artikel.
Die Zuordnung der Schlagworte erfolgt per Dropdownfeld, ebenso das Aufheben der Zuordnung. Im Backend siehts dafür so aus:
SQL zum Anlegen der Tabellen:
Code: Alles auswählen
CREATE TABLE `crosslinking_schlagworte` (
`id` INT( 255 ) NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`schlagwort` VARCHAR( 50 ) NOT NULL ,
`idart_schlagwort` TEXT
);
CREATE TABLE `crosslinking_artikel` (
`idart` INT( 11 ) NOT NULL PRIMARY KEY ,
`schlagworte` TEXT
);
Code: Alles auswählen
/***********************************************
* crosslinking Input
*
* Author : seamless-design Markus Hübner
* Copyright : seamless-design Markus Hübner
* Created : 2010-09-17
************************************************/
//error_reporting(E_ALL);
$tabelle="crosslinking_schlagworte";
$tabelle_artikel="crosslinking_artikel";
$url=$_SERVER['HTTP_HOST'];
/************** NEUES SCHLAGWORT, SCHLAGWORT LÖSCHEN **************/
echo '<strong>Schlagwort eintragen/ löschen:</strong><br/>';
echo '<table><tr>';
echo '<td><input name="sw" type="text" size="20"></input></td>';
echo '<td><input type="radio" name="sw_eintragen_loeschen" value="sw_eintragen"> eintragen<br/>';
echo '<input type="radio" name="sw_eintragen_loeschen" value="sw_loeschen"> löschen</td>';
echo '<td><input type="image" src="images/submit.gif"></td>';
echo '</tr></table>';
$abfrage = "SELECT schlagwort,idart_schlagwort FROM $tabelle";
$ergebnis = mysql_query($abfrage);
while($row = mysql_fetch_object($ergebnis)) $schlagwortarray[]=$row->schlagwort;
if($sw!="" AND $sw_eintragen_loeschen!="")
{
if(in_array($sw, $schlagwortarray)) $vorhanden="ja";
if($sw_eintragen_loeschen=="sw_eintragen")
{
if($vorhanden!="ja")
{
$eintrag="INSERT INTO $tabelle (schlagwort) VALUES ('$sw')";
$eintragen = mysql_query($eintrag);
if ($eintragen==true) {echo ' Eintrag von '.$sw.' erfolgreich.';} else echo ' Eintrag von '.$sw.' nicht erfolgreich.'; // Info ob Eintrag in DB erfolgte
}
else echo ' '.$sw.' ist bereits enthalten!';
}
if($sw_eintragen_loeschen=="sw_loeschen")
{
if($vorhanden=="ja")
{
$abfrage = "SELECT idart_schlagwort FROM $tabelle WHERE schlagwort='$sw'";
$ergebnis = mysql_query($abfrage);
while($row = mysql_fetch_object($ergebnis)) $idart_schlagworte_vorhanden=$row->idart_schlagwort;
if($idart_schlagworte_vorhanden!="")
{
echo 'Kein Löschen möglich, für '.$sw.' sind Verknüpfungen zu folgenden idart vorhanden:<br/>';
$avar = explode("#", $idart_schlagworte_vorhanden);
$len = count($avar);
for ($i=1; $i<$len; $i++)
{
echo '-> <a href="../cms/front_content.php?idart='.$avar[$i].'" target="_blank">'.$avar[$i].'</a><br/>';
}
$loeschen_verhindern="ja";
}
if($loeschen_verhindern!="ja")
{
$loeschung="DELETE FROM $tabelle WHERE schlagwort= '$sw'";
$loeschen = mysql_query($loeschung);
if ($loeschen==true) {echo ' Löschen von '.$sw.' erfolgreich.';} else echo ' Löschen von '.$sw.' nicht erfolgreich.'; // Info ob Löschen in DB erfolgte
}
}
else echo 'Löschen nicht möglich: '.$sw.' ist in der Liste der Schlagworte nicht enthalten!';
}
}//if($sw!="" AND $sw_eintragen_loeschen!="")
/*
echo '<br/>';
asort($schlagwortarray);
foreach ($schlagwortarray as $value) {
echo $value.'<br/>';
}
unset($value); // break the reference with the last element
*/
/************** SCHLAGWORT ÄNDERN **************/
echo '<hr>';
echo '<strong>Schlagwort ändern:</strong><br/>';
echo 'alt: <input name="sw_aendern_alt" type="text" size="20"></input> neu: <input name="sw_aendern_neu" type="text" size="20"></input> <input type="image" src="images/submit.gif">';
if($sw_aendern_alt!="" AND $sw_aendern_neu!="")
{
$abfrage = "SELECT schlagwort,idart_schlagwort FROM $tabelle WHERE schlagwort='$sw_aendern_alt'";
$ergebnis = mysql_query($abfrage);
while($row = mysql_fetch_object($ergebnis))
{
$schlagwort=$row->schlagwort;
$vorhandene_idart=$row->idart_schlagwort;
}
if($schlagwort=="") echo '<br/>Dieses Schlagwort ist nicht vorhanden.';
if($schlagwort!="")
{
echo '<br/>Schlagwort wird verwendet von folgenden Artikeln: '.$vorhandene_idart;
$aenderung_durchfuehren="UPDATE $tabelle SET schlagwort='$sw_aendern_neu' WHERE schlagwort='$sw_aendern_alt'";
$aendern = mysql_query($aenderung_durchfuehren);
if ($aendern==true) {echo '<br/>Ändern von '.$sw_aendern_alt.' in '.$sw_aendern_neu.' in Schlagworttabelle erfolgreich.';} else echo '<br/>Änderung von '.$sw_aendern_alt.' in '.$sw_aendern_neu.' in Schlagworttabelle nicht erfolgreich.'; // Info ob Zuordnung in DB erfolgte
}
/*Beginn Aufsplitten des idart-strings*/
//echo '<br/>';
$avar = explode("#", $vorhandene_idart);
$len = count($avar);
//echo '<br/>Anzahl Arrayelemente: '.$len.'<br/>';
for ($i=1; $i<$len; $i++)
{
// printf("<br>%d: %s<br>\n", $i, $avar[$i]);
// echo 'aktuelle idart: '.$avar[$i].'<br/>';
$abfrage = "SELECT schlagworte FROM $tabelle_artikel WHERE idart='$avar[$i]'";
$ergebnis = mysql_query($abfrage);
while($row = mysql_fetch_object($ergebnis)) $schlagworte_der_idart=$row->schlagworte;
// echo '<br/>Zugeordnete Schlagworte: '.$schlagworte_der_idart;
$schlagworte_der_idart_neu = str_replace($sw_aendern_alt,$sw_aendern_neu,$schlagworte_der_idart);
// echo '<br/>Neue Schlagworte: '.$schlagworte_der_idart_neu;
$aenderung_durchfuehren="UPDATE $tabelle_artikel SET schlagworte='$schlagworte_der_idart_neu' WHERE idart='$avar[$i]'";
$aendern = mysql_query($aenderung_durchfuehren);
if ($aendern==true) {echo '<br/>Ändern von '.$sw_aendern_alt.' in '.$sw_aendern_neu.' in Artikeltabelle erfolgreich.';} else echo '<br/>Änderung von '.$sw_aendern_alt.' in '.$sw_aendern_neu.' in Artikeltabelle nicht erfolgreich.'; // Info ob Zuordnung in DB erfolgte
/*Ende Aufsplitten des idart-strings*/
}
} // if($sw_aendern_alt!="" AND $sw_aendern_neu!="")
/************** ZUORDNUNG SCHLAGWORT **************/
echo '<hr>';
echo '<strong>Zuordnung eines Schlagworts:</strong><br/>';
$abfrage = "SELECT schlagwort, idart_schlagwort FROM $tabelle";
$ergebnis = mysql_query($abfrage);
$schlagwortarray=array("-- bitte wählen --");
while($row = mysql_fetch_object($ergebnis)) $schlagwortarray[]=$row->schlagwort;
asort($schlagwortarray);
echo '<table><tr>';
echo '<td><select name="sw_zuordnung">';
foreach ($schlagwortarray as $schlagwort) {
echo '<option value="'.$schlagwort.'">'.$schlagwort.'</option>';
}
unset($value); // break the reference with the last element
echo '</select></td>';
echo '<td><input type="radio" name="sw_zuordnung_durchfuehren_aufheben" value="sw_zuordnung_durchfuehren"> durchführen<br/>';
echo '<input type="radio" name="sw_zuordnung_durchfuehren_aufheben" value="sw_zuordnung_aufheben"> aufheben</td>';
echo '<td><input type="image" src="images/submit.gif"></td>';
echo '</tr></table>';
if($sw_zuordnung=="") echo '<br/>Kein Schlagwort ausgewählt.';
if($sw_zuordnung!="") echo '<br/>Schlagwort '.$sw_zuordnung.' ausgewählt.';
/*Beginn Zuordnung durchführen*/
if ($sw_zuordnung!="" AND $sw_zuordnung!="-- bitte wählen --" AND $sw_zuordnung_durchfuehren_aufheben=="sw_zuordnung_durchfuehren")
{
//echo '<br/>idart dieses artikels: '.$idart.'<br/>';
$ergebnis = mysql_query("SELECT schlagwort, idart_schlagwort FROM $tabelle WHERE schlagwort='$sw_zuordnung'");
while($row = mysql_fetch_object($ergebnis))
{
$vorhandene_idart=$row->idart_schlagwort;
}
//echo 'vorhandene_idart: '.$vorhandene_idart.'<br/>';
if(preg_match("/$idart/",$vorhandene_idart)) // prüfen, ob idart dem Schlagwort bereits zugeordnet wurde
{
echo '<br/>Das Schlagwort '.$sw_zuordnung.' ist diesem Artikel bereits zugeordnet!';
$abbruch_zuordnung="ja";
}
if($abbruch_zuordnung!="ja")
{
/*Beginn Eintrag in Tabelle Schlagworte*/
$vorhandene_idart_neu=$vorhandene_idart.'#'.$idart;
$zuordnung_durchfuehren="UPDATE $tabelle SET idart_schlagwort='$vorhandene_idart_neu' WHERE schlagwort='$sw_zuordnung'";
$zuordnen = mysql_query($zuordnung_durchfuehren);
if ($zuordnen==true) {echo '<br/>Zuordnung von '.$sw_zuordnung.' in Schlagworttabelle erfolgreich.';} else echo '<br/>Zuordnung von '.$sw_zuordnung.' in Schlagworttabelle nicht erfolgreich.'; // Info ob Zuordnung in DB erfolgte
/*Ende Eintrag in Tabelle Schlagworte*/
/*Beginn Eintrag in Tabelle Artikel*/
$ergebnis = mysql_query("SELECT idart, schlagworte FROM $tabelle_artikel WHERE idart='$idart'");
while($row = mysql_fetch_object($ergebnis))
{
$vorhandene_schlagworte=$row->schlagworte;
}
//echo '<br/>vorhandene schlagworte: ' .$vorhandene_schlagworte.'<br/>';
/*noch keine schlagworte vorhanden*/
if($vorhandene_schlagworte=="")
{
$schlagworte_neu='#'.$sw_zuordnung;
$zuordnung2_durchfuehren="INSERT INTO $tabelle_artikel(idart,schlagworte) VALUES ('$idart','$schlagworte_neu')";
$zuordnen2 = mysql_query($zuordnung2_durchfuehren);
if ($zuordnen2==true) {echo '<br/>Zuordnung von '.$sw_zuordnung.' in Artikeltabelle erfolgreich.';} else echo '<br/>Zuordnung von '.$sw_zuordnung.' in Artikeltabelle nicht erfolgreich.'; // Info ob Zuordnung in DB erfolgte
}
/*schon schlagworte vorhanden*/
if($vorhandene_schlagworte!="")
{
$schlagworte_neu=$vorhandene_schlagworte.'#'.$sw_zuordnung;
$zuordnung2_durchfuehren="UPDATE $tabelle_artikel SET schlagworte='$schlagworte_neu' WHERE idart='$idart'";
$zuordnen2 = mysql_query($zuordnung2_durchfuehren);
if ($zuordnen2==true) {echo '<br/>Zuordnung von '.$sw_zuordnung.' in Artikeltabelle erfolgreich.';} else echo '<br/>Zuordnung von '.$sw_zuordnung.' in Artikeltabelle nicht erfolgreich.'; // Info ob Zuordnung in DB erfolgte
}
/*Ende Eintrag in Tabelle Artikel*/
}// if($abbruch_zuordnung!="ja")
} // if ($sw_zuordnung!="" AND $sw_zuordnung_durchfuehren_aufheben=="sw_zuordnung_durchfuehren")
/*Ende Zuordnung durchführen*/
/*Beginn Zuordnung aufheben*/
if ($sw_zuordnung!="" AND $sw_zuordnung!="-- bitte wählen --" AND $sw_zuordnung_durchfuehren_aufheben=="sw_zuordnung_aufheben")
{
//echo '<br/>idart dieses artikels: '.$idart.'<br/>';
/*Beginn Aufheben in Tabelle Artikel*/
$ergebnis = mysql_query("SELECT idart, schlagworte FROM $tabelle_artikel WHERE idart='$idart'");
while($row = mysql_fetch_object($ergebnis))
{
$vorhandene_schlagworte=$row->schlagworte;
}
//echo 'vorhandene_schlagworte: '.$vorhandene_schlagworte.'<br/>';
$replace="";
$vorhandene_schlagworte_neu=str_replace("#".$sw_zuordnung, $replace, $vorhandene_schlagworte);
if($vorhandene_schlagworte_neu!="")
{
$aufheben_durchfuehren="UPDATE $tabelle_artikel SET schlagworte='$vorhandene_schlagworte_neu' WHERE idart='$idart'";
$aufheben = mysql_query($aufheben_durchfuehren);
if ($aufheben==true) {echo '<br/>Aufheben der Zuordnung von '.$sw_zuordnung.' in Artikeltabelle erfolgreich.';} else echo '<br/>Aufheben von '.$sw_zuordnung.' in Artikeltabelle nicht erfolgreich.'; // Info ob Zuordnung in DB erfolgte
}
else
{
$aufheben_durchfuehren="DELETE FROM $tabelle_artikel WHERE idart='$idart'";
$aufheben = mysql_query($aufheben_durchfuehren);
if ($aufheben==true) {echo '<br/>Aufheben der Zuordnung von '.$sw_zuordnung.' in Artikeltabelle erfolgreich.';} else echo '<br/>Aufheben von '.$sw_zuordnung.' in Artikeltabelle nicht erfolgreich.'; // Info ob Zuordnung in DB erfolgte
}
/*Ende Aufheben in Tabelle Artikel*/
/*Beginn Aufheben in Tabelle Schlagworte*/
$ergebnis = mysql_query("SELECT schlagwort,idart_schlagwort FROM $tabelle WHERE schlagwort='$sw_zuordnung'");
while($row = mysql_fetch_object($ergebnis))
{
$vorhandene_idart_schlagwort=$row->idart_schlagwort;
}
//echo '<br/>vorhandene_idart_schlagwort: '.$vorhandene_idart_schlagwort.'<br/>';
$replace="";
$vorhandene_idart_schlagwort_neu=str_replace("#".$idart, $replace, $vorhandene_idart_schlagwort);
$aufheben_durchfuehren="UPDATE $tabelle SET idart_schlagwort='$vorhandene_idart_schlagwort_neu' WHERE schlagwort='$sw_zuordnung'";
$aufheben = mysql_query($aufheben_durchfuehren);
if ($aufheben==true) {echo '<br/>Aufheben der Zuordnung von '.$sw_zuordnung.' in Schlagworttabelle erfolgreich.';} else echo '<br/>Aufheben von '.$sw_zuordnung.' in Schlagworttabelle nicht erfolgreich.'; // Info ob Zuordnung in DB erfolgte
/*Ende Aufheben in Tabelle Schlagworte*/
}
/************** DIESEM ARTIKEL ZUGEORDNETE SCHLAGWORTE **************/
echo '<hr>';
echo '<strong>Diesem Artikel zugeordnete Schlagworte:</strong><br/>';
$abfrage = "SELECT idart, schlagworte FROM $tabelle_artikel WHERE idart=$idart";
$ergebnis = mysql_query($abfrage);
$schlagwortarray="";
while($row = mysql_fetch_object($ergebnis)) $schlagworte=$row->schlagworte;
//echo $schlagworte;
$schlagwortarray = explode('#',$schlagworte);
asort($schlagwortarray);
foreach($schlagwortarray as $schlagwort) echo $schlagwort.' # ';
/************** IDART CHECK **************/
echo '<hr>';
echo '<strong>Auf nicht vorhandene idarts prüfen:</strong><br/>';
echo 'Prüfung durchführen? ';
echo '<input type="radio" name="idart_check_durchfuehren" value="ja"> ja ';
echo '<input type="radio" name="idart_check_durchfuehren" value="nein" checked="checked"> nein ';
echo '<input type="image" src="images/submit.gif">';
if ($idart_check_durchfuehren=="ja")
{
echo '<br/>Mit Schlagworten versehene idarts:';
$abfrage = "SELECT idart FROM $tabelle_artikel";
$ergebnis = mysql_query($abfrage);
while($row = mysql_fetch_object($ergebnis))
{
$zu_loeschende_idart=$row->idart;
echo '<br/>'.$zu_loeschende_idart;
$einlesen = mysql_query("SELECT idart FROM con_art_lang WHERE idart='$row->idart'");
if(mysql_num_rows($einlesen)==1) {echo " - vorhanden"; $vorhanden="ja";}
else {echo " - nicht vorhanden"; $vorhanden="nein";}
if ($vorhanden=="nein")
{
$loeschung="DELETE FROM $tabelle_artikel WHERE idart= '$row->idart'";
$loeschen = mysql_query($loeschung);
if ($loeschen==true) {echo ' - Löschen von idart '.$row->idart.' in Artikeltabelle erfolgreich.';} else echo ' - Löschen von idart '.$row->idart.' in Artikeltabelle nicht erfolgreich.'; // Info ob Löschen in DB erfolgte
echo '<hr>';
/*Beginn Entfernen in Tabelle Schlagworte*/
$ergebnis2 = mysql_query("SELECT schlagwort,idart_schlagwort FROM $tabelle");
while($row = mysql_fetch_object($ergebnis2))
{
$schlagwort=$row->schlagwort;
$vorhandene_idart=$row->idart_schlagwort;
//echo 'vorhandene_idart: '.$vorhandene_idart.'<br/>';
$replace="";
$vorhandene_idart_neu=str_replace("#".$zu_loeschende_idart, $replace, $vorhandene_idart);
if($vorhandene_idart_neu!=$vorhandene_idart) // nur dann sql-Abfrage starten, wenn tatsächlich die zu löschende idart vorkommt
{
//echo 'zu loeschende idart'.$zu_loeschende_idart.'<br/>';
$idart_loeschen="UPDATE $tabelle SET idart_schlagwort='$vorhandene_idart_neu' WHERE schlagwort='$schlagwort'";
$loeschen = mysql_query($idart_loeschen);
if ($loeschen==true) {echo 'Löschen der idart '.$zu_loeschende_idart.' in Schlagworttabelle erfolgreich.';} else echo 'Löschen der idart '.$zu_loeschende_idart.' in Schlagworttabelle nicht erfolgreich.'; // Info ob Zuordnung in DB erfolgte
echo '<br/>idarts mit '.$schlagwort.' (alt): '.$vorhandene_idart.'<br/>';
echo 'idarts mit '.$schlagwort.' (neu): '.$vorhandene_idart_neu.'<br/>';
}
} //while($row = mysql_fetch_object($ergebnis))
/*Ende Entfernen in Tabelle Schlagworte*/
} //if ($vorhanden=="nein")
} //while($row = mysql_fetch_object($ergebnis))
} //if ($idart_check_durchfuehren=="ja")
CMS_VALUE[10]=$schlagworte;
Code: Alles auswählen
<?php
/***********************************************
* crosslinking Output
*
* Author : Markus Hübner
* Copyright : Markus Hübner
* Created : 2010-09-17
* modified : 2011-12-15 (sortierkriterien name, created und lastmodified hinzugefügt)
************************************************/
//echo 'aktuelle idart dieses Artikels: '.$idart.'<br/>';
$linktextvariante="headline"; // headline oder title angeben
$sortierreihenfolge="auf"; // ab oder auf angeben
$sortierkriterium="name"; // name -> Sortierung nach headline oder title | created -> Sortierung nach Erstelldatum des Artikels | lastmodified -> Sortierung nach letzter Änderung
$tabelle="crosslinking_schlagworte";
$tabelle_artikel="crosslinking_artikel";
$abfrage = "SELECT idart, schlagworte FROM $tabelle_artikel WHERE idart=$idart";
$ergebnis = mysql_query($abfrage);
$schlagwortarray="";
while($row = mysql_fetch_object($ergebnis)) $schlagworte=$row->schlagworte;
//echo 'Diesem Artikel zugeordnete Schlagworte: '.$schlagworte;
if($schlagworte!="")
{
echo '<hr>';
/*Beginn Aufsplitten des Schlagwortstrings*/
//echo '<br/>';
$avar = explode("#", $schlagworte);
$len = count($avar);
//echo $len.'<br/>';
for ($i=1; $i<$len; $i++)
{
//printf("%d: %s<br>\n", $i, $avar[$i]);
//echo $avar[$i].'<br/>';
/*Beginn Ausgabe der dem gerade gesplitteten Schlagwort zugeordneten idarts*/
$abfrage = "SELECT idart_schlagwort FROM $tabelle WHERE schlagwort='$avar[$i]'";
$ergebnis = mysql_query($abfrage);
while($row = mysql_fetch_object($ergebnis)) $idart_schlagwort=$row->idart_schlagwort;
//echo $idart_schlagwort.'<br/>';
$idart_schlagwortgesamt=$idart_schlagwortgesamt.$idart_schlagwort; // hier werden alle idarts die allen schlagworten zugeordnet wurden hineingeschrieben
/*Ende Ausgabe der dem gerade gesplitteten Schlagwort zugeordneten idarts*/
}
/*Ende Aufsplitten des Schlagwortstrings*/
//echo '<hr>';
//echo $idart_schlagwortgesamt;
$avar2 = explode("#",$idart_schlagwortgesamt);
$len2 = count($avar2);
//echo $len2.'<br/>';
for ($j=1; $j<$len2; $j++)
{
//echo 'idart: '.$avar2[$j].'<br/>';
$idart_schlagwortarray[]=$avar2[$j];
}
//print_r($idart_schlagwortarray);echo '<br/>';
$idart_schlagwortarray=array_unique($idart_schlagwortarray); //entfernt doppelte idarts
//print_r($idart_schlagwortarray);echo '<br/>';
$entferne_idart = array ("$idart"); // Entfernen der idart des aktuell aufgerufenen Artikels, damit er sich nicht selbst verlinkt
$idart_schlagwortarray=array_diff($idart_schlagwortarray,$entferne_idart);
sort($idart_schlagwortarray);// notwendig, da mit die "Adressierung" der Inhalte für $i stimmt
//echo 'idart_schlagwortarray;'; print_r($idart_schlagwortarray);
$anzahl_verlinkungen = count($idart_schlagwortarray);
//echo '<br/>Anzahl der Verlinkungen: '.$anzahl_verlinkungen.'<br/>';
$ausgabearray_linktext=array("");
for ($i=0; $i<$anzahl_verlinkungen; $i++)
{
$idart_online="";
$abfrage = "SELECT idartlang,title,online,created,lastmodified FROM con_art_lang WHERE idart='$idart_schlagwortarray[$i]'"; // Abfragen für Anzeige der Artikeltitel als Linktext und weiter
$ergebnis = mysql_query($abfrage);
while($row = mysql_fetch_object($ergebnis))
{
$idart_idartlang=$row->idartlang;
$idart_title=$row->title;
$idart_online=$row->online;
$idart_created=$row->created;
$idart_lastmodified=$row->lastmodified;
}
//echo $idart_schlagwortarray[$i].': '.$idart_online.'<br/>';
if($idart_online=="1") //Prüfen ob Artikel online ist
{
$abfrage2 = "SELECT value FROM con_content WHERE idartlang='$idart_idartlang' AND idtype='1' AND typeid='1'"; //Abfrage der Headline für Anzeige der Artikeltitel als Linktext
$ergebnis2 = mysql_query($abfrage2);
if($linktextvariante=="headline")
{
while($row = mysql_fetch_object($ergebnis2))
{
$inhalt=$row->value;
$stra=array('%3Cp%3E','%3C%2Fp%3E','%0D%0A','+','%28','%3E','%3A','%26auml%3B','%26Auml%3B','%26ouml%3B','%26Ouml%3B','%26uuml%3B','%26Uuml%3B','%26szlig%3B','%2C','%3B','%2F','%E4');
$strb=array('' ,'' ,'' ,' ','(' ,')' ,':' ,'ä' ,'Ä' ,'ö' ,'Ö' ,'ü' ,'Ü' ,'ß' ,',' ,';' ,'/' ,'ä');
$inhalt = str_replace($stra,$strb,$inhalt);
//echo $inhalt.'<br/>';
if($sortierkriterium=="name") $ausgabearray_linktext[]="$inhalt#/#$idart_schlagwortarray[$i]";
if($sortierkriterium=="created") $ausgabearray_linktext[]="$idart_created#/#$inhalt#/#$idart_schlagwortarray[$i]";
if($sortierkriterium=="lastmodified") $ausgabearray_linktext[]="$idart_lastmodified#/#$inhalt#/#$idart_schlagwortarray[$i]";
}
}
if($linktextvariante=="title")
{
$ausgabearray_linktext[]="$idart_title#/#$idart_schlagwortarray[$i]";
}
}
}
$ausgabearray_linktext=array_filter($ausgabearray_linktext); //wirft leere Elemente raus
$ausgabearray_linktext=array_values($ausgabearray_linktext); //baut array-index neu auf
if ($sortierreihenfolge=="auf") sort($ausgabearray_linktext);
if ($sortierreihenfolge=="ab") rsort($ausgabearray_linktext);
$j=0;
while ($j<$anzahl_verlinkungen)
{
$ausgabearray=explode("#/#",$ausgabearray_linktext[$j]);
if($sortierkriterium=="name") echo '<a href="front_content.php?idart='.$ausgabearray[1].'" title="zum Artikel '.$ausgabearray[0].'">'.$ausgabearray[0].'</a><br/>';
else echo '<a href="front_content.php?idart='.$ausgabearray[2].'" title="zum Artikel '.$ausgabearray[1].'">'.$ausgabearray[1].'</a> ('.$ausgabearray[0].')<br/>';
$j++;
}
} //if($schlagworte!="")
?>
Im Code hab ich so ziemlich alle Anmerkungen drin gelassen und Testausgaben nur auskommentiert statt zu löschen. So sollte man rel. schnell die einzelnen Schritte nachvollziehen können.
Viel Spass damit