Code verstehen (4.5)

Fragen zur Installation von CONTENIDO 4.9? Probleme bei der Konfiguration? Hinweise oder Fragen zur Entwicklung des Systemes oder zur Sicherheit?
Antworten
stephanl
Beiträge: 47
Registriert: Di 3. Aug 2004, 11:15
Kontaktdaten:

Code verstehen (4.5)

Beitrag von stephanl » So 29. Aug 2004, 13:05

Hi,

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);
}

?>
was für mich ein riesiges Problem darstellt. Vielleicht hat jemand ja Lust mir zu helfen. Ist sicher eine gute Erweiterung für 4.5.2 oder es kann gleich eingefügt werden...

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 :D


Stephan

emergence
Beiträge: 10644
Registriert: Mo 28. Jul 2003, 12:49
Wohnort: Austria
Kontaktdaten:

Beitrag von emergence » So 29. Aug 2004, 15:23

sieh dir ebenso die front_content.php an...
dort wäre es besser das was du haben willst einzubauen...
ad. pathresolver
http://bugs.contenido.de/bug_view_page. ... id=0000307
d.h. da wird sich in nächster zeit noch was ändern...
*** make your own tools (wishlist :: thx)

stephanl
Beiträge: 47
Registriert: Di 3. Aug 2004, 11:15
Kontaktdaten:

Beitrag von stephanl » So 29. Aug 2004, 15:31

Aber es soll ja nur aufgerufen werden, wenn auch ein Pfad vorhanden ist, also wäre es doch besser, das in eine Datei zu packen, oder?

emergence
Beiträge: 10644
Registriert: Mo 28. Jul 2003, 12:49
Wohnort: Austria
Kontaktdaten:

Beitrag von emergence » Sa 11. Sep 2004, 14:20

ähm...
nein finde ich eigentlich nicht, da es um pfad auflösung geht...
nicht um datei namen auflösung...
das wäre dann der nächste schritt...

wohlgemerkt ist nur meine meinung...
*** make your own tools (wishlist :: thx)

Antworten