Amigos drupaleros, tengo el siguiente problema, estoy armando un theme cuyo menú, posee imágenes en lugar de texto, es decir hago un reemplazo del texto por imágenes mediante css, pero esas imagenes son especificas , es decir un par por cada item (sin seleccionar y hober y seleccionado) pero no he encontrado un script que me fucnione, he estado sobreescribiendo una funcion mediante template.php, pero estoy un poco perdido. les dejo que estoy haciendo o utilizando a ver si saben porque no funciona.
(estoy utilizando phptemplate para crear el theme)
esto va en template.php
/**
* override de la funcion theme_menu_item() del theme
* placoss es el nombre del theme*********************/
function placoss_menu_item($link, $has_children, $menu = '', $in_active_trail = FALSE, $extra_class = NULL) {
$class = ($menu ? 'expanded' : ($has_children ? 'collapsed' : 'leaf'));
if (!empty($extra_class)) {
$class .= ' '. $extra_class;
}
if ($in_active_trail) {
$class .= ' active-trail';
}
// agrega un id
static $item_id = 0;
$item_id += 1;
$id .= ' ' . 'menu-item-custom-id-' . $item_id;
// agrega una semi-clase unica
$class .= ' ' . preg_replace("/[^a-zA-Z0-9]/", "", strip_tags($link));
return '
\n";
}
y el page.tpl.php
donde iria:
<?php
print theme('links', $primary_links);
?>lo cambio por:
<?php
print theme('menu_item', $primary_links);
?>lo que ocurre es que en lugar de mostrarme el enlace creado en el menú, me muestra la palabra array, solo crea la clase, pero no la id.
tengo una idea básica de php, pero esto parece ser mas una falta de conocimiento sobre overrides en profundidad.
alguna orientación?
Desde ya muchas gracias por su tiempo.

Comments
Podés usar...
el siguiente módulo:
http://drupal.org/project/menu_attributes
ya sea para solucionar directamente el problema que tenés o para tomarlo de referencia.
Saludos,
--
www.devjaus.com
"We are helping people to build great web sites based in Drupal CMS"
gracias
lo pruebo inmediatamante, saludos
Diseñador Web
www.cadapixelcuenta.com.ar
alg similar
Una vez tuve que hacer algo similar, lo que hice fue:
<?php if (isset($primary_links))
{
$c=count($primary_links);
$claves=array_keys($primary_links);
for($i=0; $i<$c; $i++)
{
$ky=$claves[$i];
print "<div class='primarys'><a href='".$primary_links[$ky]['href']."'>".$primary_links[$ky]['title']."</a></div>";
}
}
?>
claro, en este caso a todos les aplico la clase .primarys
Pero la idea es que con $primary_links[$ky]['href'] me puedo referir al url de un link específico y con $primary_links[$ky]['title'] al título, y así a las demás cosas del arreglo.
No se si adecuará a tu proyecto, pero es una idea de como manejarlos por separado.
Por por ejemplo si en vez de class='primarys' hubiese usado id='primarys.$i' tendría un id diferente para cada uno.
Esta buena la solución....
... lo único que veo como incómodo es el hecho de que tenés que estar cambiando los selectores en CSS en el caso de que tengas que mover los items de menú de lugar o cambiarlos a otro menú.
Saludos,
--
www.devjaus.com
"We are helping people to build great web sites based in Drupal CMS"
interesante
el problema es que necesito que los id sean aplicados a los elementos
Diseñador Web
www.cadapixelcuenta.com.ar
Seguramente....
el problema que ténes es porque no estás definiendo los hipervínculos como bloque (display:block), para despues adaptar su alto y ancho al LI padre.
Menu Attributes es la mejor solución para tu problema.
Saludos,
--
www.devjaus.com
"We are helping people to build great web sites based in Drupal CMS"
Tambien sugiero el modulo
Tambien sugiero el modulo Menu Attributes, y su uso con sprites CSS.
Podes ver un claro ejemplo de esto en el sitio www.colaborativa.net, creo que es un caso muy parecido al que estás tratando de resolver.
La técnica de sprite parece complicada pero no lo es en verdad, y evita el parpadeo en el hover. Menu attributes se puede implementar sin sprites también.
HTH, salud
gracias a todos
sigo teniendo un problema, por mas que tengo ahora una id diferente para cada item, esa id se aplica al enlace y no he podido relizar la sustitucion de imagen por texto en ningun enlace aun. se ve el fondo pero tambien se ve el texto del enlace, cosa no deseada.
en cuanto a los sprites, lo he usado y la verdad son una gran tecnica.
si alguien sabe como solucionar el tema de los enlaces que se ven, les ruego asistencia, porque en todos lados aparece la sustitucion referida a encabezados, y eso si funciona, al parecer en el text-indent no funciona con el elemento anchor. saludos.
Diseñador Web
www.cadapixelcuenta.com.ar
gracias a todos
gracias a todos me voy encaminando, gracias diego especialemente por ese dato que no tenia en cuenta, claro los encabezados son todos de tipo blocke, que salameeee que soy. saludos . ahora a terminar el maquetado.
Diseñador Web
www.cadapixelcuenta.com.ar
Buena onda ! :) Saludos,
Buena onda ! :)
Saludos,
--
www.devjaus.com
"We are helping people to build great web sites based in Drupal CMS"