Zum Inhalt springen

Alias automatisch aus Seitentitel generieren

Erstellt am 13. Oktober 2004 · 7 Antworten · letzte Antwort am 18. Mai 2006

Tags: Seiten & Seitenbaum, URLs & Routing, Frage

AndiB ·

Ich habe vor den Aliasnamen automatisch aus den Seitennamen generieren zu lassen. Gibts es hierzu schon Lösungen oder muss ich mir was basteln?

Ein TS-Objekt in das ich den Alias eintragen kann hab ich leider nicht gefunden.

Meine einzige Idee wäre ein PHP Script nach dem Erzeugen und Ändern einer Seite automatisch starten zu lassen. Dieses holt sich den Titel der Seite aus der DB bearbeitet ihn und schreibt ihn dann in die Alias Spalte der DB. Dann muss natürlich der Cache dieser Seite gelöscht werden.

Hat jemand eine Idee wie ich das Script an die Module zur Erzeugung und Änderung der Seiten binden kann? Und vielleicht hat jemand gleich einen kleinen Lösungsansatz im Kopf.

Wäre prima

AndiB ·

Einen ersten Entwurf für das Script hab ich jetzt schonmal. Nun muss das nur noch auf die TypoDB Variablen zugreifen können und eben automatisch aufgerufen werden.

Dann soll auch die erste While Schleife weg und der ganze Rumpf nur für die aktuelle uid ausgeführt werden.

<?
	/* Connection to database */
	$database = mysql_connect("localhost", "root", "");
	mysql_select_db("project1",$database);

	$result = mysql_query("SELECT uid,title FROM pages WHERE deleted=0", $database);
	
	while($row = mysql_fetch_array($result)) {
		
		$alias = $row["title"];
		$uid = $row["uid"];

		$alias = strtolower($alias);
		$alias = ereg_replace("ä", "ae", $alias);
		$alias = ereg_replace("ü", "ue", $alias);
		$alias = ereg_replace("ö", "oe", $alias);
		$alias = ereg_replace("Ä", "ae", $alias);
		$alias = ereg_replace("Ü", "ue", $alias);
		$alias = ereg_replace("Ö", "oe", $alias);
		$alias = ereg_replace("ß", "ss", $alias);

		$alias = ereg_replace("+", "_und_", $alias);
		$alias = ereg_replace("?", "", $alias);
		$alias = ereg_replace(":", "", $alias);
		$alias = ereg_replace(".", "", $alias);
		$alias = ereg_replace(",", "", $alias);
		$alias = ereg_replace("-", "", $alias);
		$alias = ereg_replace("–", "", $alias);
		$alias = ereg_replace("( )", "_", $alias);
		$alias = ereg_replace("!", "", $alias);
		$alias = ereg_replace("(.*)", "", $alias);
		$alias = ereg_replace(""", "", $alias);
		
		$alias = ereg_replace("^_(.*)", "\1", $alias);
		$alias = ereg_replace("(.*)_$", "\1", $alias);
		$alias = ereg_replace("´", "", $alias);
		$alias = ereg_replace("'", "", $alias);
		$alias = ereg_replace("*", "", $alias);
		$alias = ereg_replace("à", "", $alias);
		$alias = ereg_replace("__", "_", $alias);

		$alias = urlencode($alias);
		//print $alias.".0.html<br>";
		
		$duplicate = mysql_query("SELECT uid,alias FROM pages WHERE deleted=0 AND alias='$alias' AND uid!=$uid", $database);
		if(mysql_num_rows($duplicate) > 0) {
			$suffix = 0;
			while(mysql_fetch_array($duplicate)) {
				$suffix++;
			}
			$alias = $alias."_".$suffix."<br>";
		}
		
		mysql_query("UPDATE pages SET alias='$alias' WHERE uid=$uid", $database);
	}
?>
cbatik ·

Hallo "AndiB"! Gibt es nach der Installation der Extension noch etwas zu beachten? Bei tut sich nämlich gar nichts!

Danke, Christoph

Giftzwerg ·

Hi Andi,

ich schließe mich cbatik an. Hab die Ext installiert, aber ohne Auswirkungen auf die Aliasentwicklung.

Kann uns jmd. weiterhelfen?
Greetz Giftzwerg

PS: Caches nat. alle gelöscht.

miwolfram ·
AndiB schrieb

Ich habe vor den Aliasnamen automatisch aus den Seitennamen generieren zu lassen. Gibts es hierzu schon Lösungen oder muss ich mir was basteln?

Eine kleine Verständnisfrage:
Wieso nutzt du nicht Realurl?
Das kannst du recht leicht einstellen dass der Name der generierten HTML-Seiten der jeweilige Seitenname ist.
z.b. www.meineurl.com/sport/tennis/meine_besten_schlaeger.html

Ist doch wesentlich schöner als:
www.meineurl.com/index.php?id=meine_besten_schlaeger

--------------
sorry - hab erst jetzt gesehen dass der Thread nicht neu ist sondern schon seit 2004 herumliegt - da war das sicherlich noch aktueller.