Menu Duplicados

Events happening in the community are now at Drupal community events on www.drupal.org.
casivaagustin's picture

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

juanramonperez's picture

Casiva,

Proba con un argumento mas en la view user/%/%/% por ahi puede funcionar.

Saludos.

Otra opción es implementar un

dagmar's picture

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

casivaagustin's picture

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

tomas.souto's picture

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?

<?php
function 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

Argentina

Group organizers

Group notifications

This group offers an RSS feed. Or subscribe to these personalized, sitewide feeds:

Hot content this week