Tengo un módulo personalizado que implementa hook nodeapi para ejecutar algún código cuando se crea o actualiza el nodo.Drupal: ¿Cómo creo programáticamente un alias de URL para un nodo que ya tiene un alias en el nodo de guardar?
Básicamente quiero crear un alias basado en el alias generado automáticamente en el nodo de guardar o actualizar.
Ahora estoy usando una llamada a path_set_alias y solo quiero hacer esto con un tipo específico de contenido, "producto".
Aquí es mi llamada nodeapi ayuda para empezar
function product_url_helper_nodeapi(&$node, $op, $a3 = NULL, $a4 = NULL) {
if($node->type == 'product'){
switch($op){
case 'insert':
_create_alternate_url($node);
break;
case 'update':
_create_alternate_url($node);
break;
case 'view':
//do nothing
break;
default:
break;
}
}
return;
}
Entonces tengo esta función, el que estoy tratando de llegar a salvar mi segundo alias de URL para mí.
function _create_alternate_url($node){
$aliasExists = db_fetch_object(db_query("SELECT count(dst) as total FROM {url_alias} WHERE dst = 'alternate/".$node->path."'"));
if($aliasExists->total == 0){
$product_url = $node->path;
$alternate_url = "alt/" . $node->path;
$default_node_path = "node/" . $node->nid;
path_set_alias($default_node_path, $alternate_url, 0, '');
drupal_set_message("Created Alternate path for Product: " . $node->title . " <br/> Path <a href='/" . $default_node_path ."'>" . $default_node_path . "</a> is now aliased by <a href='/" . $alternate_url . "'>". $alternate_url ."</a>");
}
Esto no establece el alias, solo crea un duplicado del alias original del producto. Entonces, si comencé con mi producto siendo "Green Fern". Me gustaría guardarlo, y usaría pathauto para generar productos/green-fern luego de llamar a mi código de módulo y crear un alias "alt/products/green-fern" y aún así hacer que apunte a la ruta "node/nid" .
Sin embargo, cuando ejecuto este código, se crea un duplicado en la base de datos. Así que guardo Green Fern una vez y, de repente, veo dos registros duplicados al final de las url_alias en la base de datos. "products/green-fern" y "products/green-fern"
Siento que estoy pensando en esto de una manera demasiado comlpex. Mi cliente es consciente del éxito SEO que obtienen al hacer más de un punto de alias para el mismo nodo, solo quieren que haga esto. ¡Halp!
Err, acabo de notar que ya está usando pathauto - editando mi respuesta ... – anschauung