Hola Drupaleros, estoy con la siguiente duda. Estoy trabajando sobre un código heredado y en el mismo tengo un item de menu que viene por defecto para los autocomplete de nombre de usuarios
user/autocomplete/%
Y por otro lado tengo una view que actua como page la cual tiene como path
user/%/%
Todo funcionan bien, hasta que quiero usar el autocomplete dado que cuando pido
user/autocomplete/user_name
Me responde la vista y no el autocomplete.
Cambiar el Path de la view no es una opción, dado que ya esta todo linkeado a ese path.
Cambiar el path del autocomplete tampoco es una opción dado que es el path por defecto que trae drupal y varios modulos lo utilizan.
Alguna sugerencia práctica ?
Desde ya gracias

Comments
Casiva, Proba con un
Casiva,
Proba con un argumento mas en la view user/%/%/% por ahi puede funcionar.
Saludos.
Otra opción es implementar un
Otra opción es implementar un hook_menu_alter que sobreescriba el callback del path 'user/%/%'. Y de ahi, con un if podes determinar a que callback llamar realmente en base a si el segundo argumento es igual o no a 'autocomplete'.
El módulo views usa el mismo hook para registrar los menus de las vistas que tienen display de tipo página. Asi que asegurate de que el peso de tu módulo sea mayor al que tiene views en la tabla system.
Espero que sea de ayuda.
Saludos
Mariano D'Agostino
http://cuencodigital.com
Funciono de Pelos
Andubo de diez, esto es lo que hice.
Subi el peso del modulo a 40 por que views tenia 10 por defecto.
Después incluí este código.
<?php
function module_menu_alter(&$items) {
$items['user/%views_arg/%views_arg']['page callback'] = 'module_wrapper';
}
function module_wrapper() {
if (arg(1) == 'autocomplete') {
require_once drupal_get_path('module', 'user') .'/user.pages.inc';
return user_autocomplete(arg(2));
} else {
return views_page('view_name', 'view_page', arg(1), arg(2));
}
}
?>
Gracias por el Tip, es lo que buscaba.
Que tal! Simplemente una
Que tal!
Simplemente una corrección o no, depende de si estoy errado jejeje
Si en autocomplete vos estas haciendo lo que ya hace por defecto drupal, porque no usar solo el else?
<?phpfunction module_wrapper() {
if (arg(1) != 'autocomplete') {
return views_page('view_name', 'view_page', arg(1), arg(2));
}
}
?>
Si es como yo digo, que por defecto drupal hace lo que tenes dentro de tu if, la corrección que te hice es simplemente para optimizar mas el codigo...
Si el if no hace lo mismo que drupal por defecto (la verdad jamas me metí en el automplete a ver el codigo), pido disculpas...
Tomás Souto
Skype: tomas.souto
Baireswebdesign.com
Digital Agency - Web Design and Development
baireswebdesign.com