URL - Alias
Eingetragen von Greenhorn2013 (56)
am 20.08.2007 - 10:50 Uhr in
am 20.08.2007 - 10:50 Uhr in
Hallo zusammen,
habe mal wieder ein kleineres Problem.
Ich bastle mir in einem Block ein Taxonomy Modul inklusive dem Pfad dahin.
Sollte dieser URL-Alias nicht existieren, wird dieser in die Datenbank eingetragen.
Das Anlegen funktioniert auch soweit ohne Probleme und die Funktion "drupal_lookup_path" liefert mit die korrekte Quelle zurück.
Wenn ich aber nun aber auf den Link klicke, dann sagt mir Drupal das der Pfad nicht gefunden wurde.
Wo liegt da der Hund begraben?
- Anmelden oder Registrieren um Kommentare zu schreiben
Nutzt du in deinem Modul den
am 20.08.2007 - 10:53 Uhr
Nutzt du in deinem Modul den Menü - Hook?
gruß pebosi
gruß pebosi
--
https://pebosi.net
Hallo pebosi das ist
am 20.08.2007 - 10:56 Uhr
Hallo pebosi
das ist lediglich ein Block mit PHP Code.
Menu Hook? Nicht das ich wüßte
Achso, dachte du hast ein
am 20.08.2007 - 10:58 Uhr
Achso, dachte du hast ein eigenes Modul geschrieben.
Dann poste doch mal den Quell- und Zielpfad oder auch deinen Code.
gruß pebosi
gruß pebosi
--
https://pebosi.net
Anbei der Code
am 20.08.2007 - 11:02 Uhr
Anbei der Code
Alias: stellenangebote/angewandte_naturwissenschaften_und_technik/
SRC: taxonomy/term/79
<?php
$boxPerLine=2;
$path = 'stellenangebote/';
$name=explode('/',strval($_REQUEST['q']));
$name=!empty($name[1])?$name[1]:$name[0];
$output = '';
$data[0] = 0;
$data[1] = 1;
if($name !='stellenangebote'){
$sql = "Select tid,vid,name from `term_data` where name like '%".$name."%'";
$res = mysql_query($sql);
if($res && mysql_num_rows($res)>0){
$erg = mysql_fetch_row($res);
$data[0] = $erg[0];
$data[1] = $erg[1];
if(!empty($erg[2])){
$path.=$erg[2].'/';
}
}
}
if($data && is_array($data)){
unset($res);
$sql = "Select a.tid as atid,b.* from {term_hierarchy} a inner join {term_data} b using (tid) where parent = '".$data[0]."' and b.vid = '".$data[1]."' order by b.weight";
$res = db_query($sql);
if($res){
$i=1;$close=1;
while($erg=mysql_fetch_object($res)){
if($close==1){
$output.='<div id="jobline">';
$close=0;
}
$output .= '<div id="jobbox">';
$output .= "<ul>";
$fpath = getPathName($path.$erg->name).'/';
if($erg->alias!=1){
checkPathAlias($fpath,$erg->tid);
}
$output .= "<li id=\"jobboxhead\">".l($erg->name, $fpath)."</li>";
$sub_items = get_nodes_in_term($erg->tid,$fpath);
if(is_array($sub_items) && count($sub_items)>0){
$output.='<ul>';
$output.=implode("\r\n",$sub_items);
$output.='</ul>';
}
$output.= "</ul>";
$output .= '</div>';
if($i%2 == 0){
$close=1;
$output.='</div>';
}
$i++;
}
}
}
echo $output;
function getPathName($name){
$name=str_replace(array('ä','ü','ö',' ',',','&','.'),array('ae','ue','oe','_','','',''),$name);
$name=strtolower($name);
if(strlen($name>64)){
$name=substr($name,0,64);
}
return $name;
}
function checkPathAlias($path,$tid){
$original='taxonomy/term/'.$tid;
$sql="Replace into {url_alias} set src='$original',dst='$path'";
db_query($sql);
if($src=drupal_lookup_path('source', $path) ){
print_r($src);
}
$sql="Update {term_data} set alias = '1' where vid='$tid' LIMIT 1";
db_query($sql);
}
function get_nodes_in_term($tid,$path) {
$sub_items = array();
#$sql = "SELECT node.title, node.nid FROM node INNER JOIN term_node ON node.nid = term_node.nid WHERE term_node.tid = $tid ";
$sql = "Select a.tid as atid,b.* from {term_hierarchy} a inner join {term_data} b using (tid) where parent = '".$tid."' order by b.weight";
$result = db_query($sql);
while ($anode = db_fetch_object($result)) {
$spath=getPathName($path.$anode->name);
if($anode->alias!=1){
checkPathAlias($spath,$anode->tid);
}
$sub_items[] = "<li>" . l($anode->name, $spath) . "</li>";
}
return $sub_items;
}
?>
Wenn du unter
am 20.08.2007 - 11:05 Uhr
Wenn du unter admin/build/path den Alias anlegst, dann kannst du in der Funktion "l" den normalen Pfad "taxonomy/term/79" angeben, die Funktion ersetzt diesen dann automatisch mit dem Alias.
gruß pebosi
gruß pebosi
--
https://pebosi.net
Ich weis, ich wollte mir
am 20.08.2007 - 11:09 Uhr
Ich weis, ich wollte mir aber so den Weg dadrüber und damit die tipparbeit sparen.
Deswegen ist noch immer die frage wieso er das nicht macht.
Hm, wie sieht denn die
am 20.08.2007 - 11:33 Uhr
Hm, wie sieht denn die Ausgabe des Pfades im Quellcode aus? Steht da der korrekte Pfad drin und ist diese bei der Alias Übersicht aufgelistet?
Du könntest die Aliase doch einmal per Pathauto erstellen lassen und fertig ;)
gruß pebosi
gruß pebosi
--
https://pebosi.net
Ok also ich schein das
am 20.08.2007 - 11:35 Uhr
Ok also ich schein das Problem jetzt eingekreist zu haben.
Scheinbar hat drupal ein problem mit einem / am ende des Url Alias
Ja, das wird nicht
am 20.08.2007 - 11:37 Uhr
Ja, das wird nicht benötigt.
gruß pebosi
gruß pebosi
--
https://pebosi.net
So hab jetzt das / am ende
am 20.08.2007 - 12:03 Uhr
So hab jetzt das / am ende entfernt und schon gehen die URL - Alias einstellungen :)
Somit kann ich mir nu das lästige Tippen sparen.
Achja, noch ein Hinweis:
Alias Einstellungen mit mehr als 64 ZEICHEN werden auch nicht akzeptiert.
Find ich zwar nen bissle blöd aber was solls ich hoffe in 6.0 is das anders :)
hm, laut Tabellendefinition
am 20.08.2007 - 12:05 Uhr
hm, laut Tabellendefinition sollten es 128 Zeichen sein.
gruß pebosi
gruß pebosi
--
https://pebosi.net
Laut tabelle :) Ich weis
am 20.08.2007 - 13:26 Uhr
Laut tabelle :) Ich weis :)
Aber mehr als 64 nimmt das Form nicht an und mit mehr als 64 Zeichen funzt die URL auch net mehr