also ich habe mir gerade die function.pathresolver.php angesehen, und dachte, man könnte die ja eigendlich noch etwas erweitern. Wenn man z.Zt. front_content.php?path=Hauptnavigation aufruft, kommt man auf die Startseite.
Man könnte jetzt noch einbauen path=Hauptnavigation&article_name=Informationen
Dann würde man nämlich den Artikelnamen auch gerewritet bekommen. Aus der DB würde man es mit Kenntnis des Pfades (in diesem Fall Hauptnavigation, catid 1) alle Artikel-Ids aus der DB con_cat_art herausholen können, die zu diesem Pfad passen. Dann in der Tabelle con_art_lang die Abfrage machen:
In einer while Schleife für jedes Ergebnis von der Abfrage der Tabelle con_cat_art (SELECT idart FROM con_cat_art WHERE catid = '$catid') könnte man folgende Abfrage hinzufügen:
SELECT idart FROM con_art_lang WHERE title = '$article_name' AND idart = '$idart'
So bekommt man dann zum Schluss entweder ein Ergebnis, das könnte man anzeigen lassen, kein Ergebnis, dann könnte man auf eine 404 Seite weiterleiten oder mehr als 1 Ergebnis, dann könnte man eine entsprechende Fehlermeldung ausgeben und eine eMail mit der genauen Fehlerbeschreibung automatisch generieren und an den Seiten-Administrator senden.
So weit bin ich mit meiner Theorie. Nur jetzt müsste ich das ganze irgendwie hier einbauen:
Code: Alles auswählen
<?php
/*****************************************
* File : $RCSfile: functions.pathresolver.php,v $
* Project : Contenido
* Descr : Path resolving function
* Modified : $Date: 2004/04/14 12:45:07 $
*
* © four for business AG, www.4fb.de
*
* $Id: functions.pathresolver.php,v 1.4 2004/04/14 12:45:07 timo.hummel Exp $
******************************************/
/**
* prResolvePathViaCategoryNames: Resolves a path using some fuzzy logic.
*
* Warning: If you use this function, try to pass a "good" path. This
* function doesn't guarantee that the matches are logically
* best-matches.
*
* This function operates on the actual category names.
*
* @param $path string Path to resolve
* @return integer Closest matching category ID (idcat)
*/
function prResolvePathViaCategoryNames ($path)
{
global $cfg, $lang, $client;
/* Initialize variables */
$db = new DB_Contenido;
$categories = array();
/* Pre-process path */
$path = strtolower(str_replace(" ", "", $path));
/* Fetch all category names, build path strings */
$sql = "SELECT * FROM ".$cfg["tab"]["cat_tree"]." AS A, ".$cfg["tab"]["cat"]." AS B, ".$cfg["tab"]["cat_lang"]." AS C WHERE A.idcat=B.idcat AND B.idcat=C.idcat AND C.idlang='$lang' AND B.idclient='$client' ORDER BY A.idtree";
$db->query($sql);
$catpath = array();
while ($db->next_record())
{
$cat_str = "";
conCreateLocationString($db->f("idcat"), "/", $cat_str);
/* Store path */
$catpath[$db->f("idcat")] = $cat_str;
$catnames[$db->f("idcat")] = $db->f("name");
$catlevels[$db->f("idcat")] = $db->f("level");
}
/* Compare strings using the similar_text algorythm */
foreach ($catpath as $key => $value)
{
$value = strtolower(str_replace(" ", "", $value));
similar_text($value, $path, $percent);
$results[$key] = $percent;
}
foreach ($catnames as $key => $value)
{
$value = strtolower(str_replace(" ", "", $value));
similar_text($value, $path, $percent);
/* Apply weight */
$percent = $percent * $catlevels[$key];
if ($results[$key] > $percent)
{
$results[$key] = $percent;
}
}
arsort($results, SORT_NUMERIC);
reset($results);
return key($results);
}
?>
Das ganze bringt vor allem Leuten was, die rewriten wollen. Dann könnte man nämlich wirklich solche Domains haben:
www.meinedomain.de/Unterpunkt/Unterpunkt2/Artikel.html
Rewriten ist dann einfach...
Danke schon mal
Stephan