paulajimenez Posted December 11, 2013 Share Posted December 11, 2013 Hola, a ver si alguien puede ayudarme. Estoy a punto de lanzar mi tienda pero tengo un problemilla con el menú horizontal (blocktopmenu). Tengo un par de CMS que salen en dicho menú como subcategorías pero al ser el título tan largo se sale del bloque del menú (adjunto imagen) . Lo que me gustaría hacer es hacer que esos títulos salgan en dos líneas puesto que no quiero acortarlos. O bien que salgan acortados pero sólo en el menú. Me explico: Esto es lo que sale: Cómo legalizar un sistema de videovigilancia paso a paso. PARTE I Cómo legalizar un sistema de videovigilancia paso a paso. PARTE II Cómo me gustaría que saliera: Cómo legalizar un sistema ... Cómo legalizar un sistema ... o bien: Cómo legalizar un sistema de videovigilancia paso a paso. PARTE I Cómo legalizar un sistema de videovigilancia paso a paso. PARTE II Gracias de antemano Link to comment Share on other sites More sharing options...
nadie Posted December 11, 2013 Share Posted December 11, 2013 ¿Lo quieres hacer solo con los CMS en el menu horizontal, o tambien con el resto de enlaces? (En principio se puede hacer retocando el fichero blocktopmenu.php) Link to comment Share on other sites More sharing options...
paulajimenez Posted December 11, 2013 Author Share Posted December 11, 2013 ¿Lo quieres hacer solo con los CMS en el menu horizontal, o tambien con el resto de enlaces? (En principio se puede hacer retocando el fichero blocktopmenu.php) Hola Nadie, gracias por tu rápida respuesta. En principio me da lo mismo, porque en donde voy a tener problema con la longitud de los títulos es en los CMS ya que muchos de ellos van a ser artículos a modo de post y me temo que van a tener títulos largos. Sin embargo, no me importaría si se hiciera con todos los demás enlaces del menu, puesto que ya modifiqué el blocktopmenu para que los bloques tuvieran más anchura ya que un par de subcategorías también se "salían" del menú. Lo ideal para mí es que las categorías que tuvieran nombres de mayor longitud aparecieran en dos líneas, pero no tengo ni idea de cómo se hace eso (de hecho no entiendo porqué no sale así por defecto). Link to comment Share on other sites More sharing options...
paulajimenez Posted December 13, 2013 Author Share Posted December 13, 2013 ¿Alguna idea de qué habrá que hacer? Link to comment Share on other sites More sharing options...
nadie Posted December 13, 2013 Share Posted December 13, 2013 Una de tantas opciones por ejemplo seria: Para que los enlaces de los CMS se corten con los puntos suspensivos, puedes por ejemplo, en el fichero: /modules/blocktopmenu/blocktopmenu.php Buscar esto: case 'CMS': $selected = ($this->page_name == 'cms' && (Tools::getValue('id_cms') == $id)) ? ' class="sfHover"' : ''; $cms = CMS::getLinks((int)$id_lang, array($id)); if (count($cms)) $this->_menu .= '<li'.$selected.'><a href="'.Tools::HtmlEntitiesUTF8($cms[0]['link']).'" title="'.$cms[0]['meta_title'].'">'.$cms[0]['meta_title'].'</a></li>'.PHP_EOL; break; Y por ejemplo dejas algo asi: case 'CMS': $selected = ($this->page_name == 'cms' && (Tools::getValue('id_cms') == $id)) ? ' class="sfHover"' : ''; $cms = CMS::getLinks((int)$id_lang, array($id)); if (count($cms)) { $variableVacia=""; $titulo_nombre=$cms[0]['meta_title']; if (strlen($cms[0]['meta_title']) > 21) { $variableVacia=".."; $titulo_nombre=mb_substr($cms[0]['meta_title'],0,20,"utf-8"); } $this->_menu .= '<li'.$selected.'><a href="'.Tools::HtmlEntitiesUTF8($cms[0]['link']).'">'.$titulo_nombre.$variableVacia.'</a></li>'.PHP_EOL; } break; Estamos diciendo por ejemplo si la longitud del titulo del cms es mayor que 21 (puedes cambiar ese 21 para ajustarlo a tu necesidad), corta el texto y imprime desde el caracter 0 al 20 (los 21 primeros caracteres) y ademas veras que hemos añadido que se impriman "...". Tanto lo del 0 al 20 lo puedes cambiar, como lo de la condicional mayor que 21, he puesto solo un ejemplo. Si no se aplican los cambios, recuerda limpiar cache smarty, y por si las moscas desinstalar y volver a instalar el modulo xDDDD Link to comment Share on other sites More sharing options...
paulajimenez Posted December 17, 2013 Author Share Posted December 17, 2013 Una de tantas opciones por ejemplo seria: Para que los enlaces de los CMS se corten con los puntos suspensivos, puedes por ejemplo, en el fichero: /modules/blocktopmenu/blocktopmenu.php Buscar esto: case 'CMS': $selected = ($this->page_name == 'cms' && (Tools::getValue('id_cms') == $id)) ? ' class="sfHover"' : ''; $cms = CMS::getLinks((int)$id_lang, array($id)); if (count($cms)) $this->_menu .= '<li'.$selected.'><a href="'.Tools::HtmlEntitiesUTF8($cms[0]['link']).'" title="'.$cms[0]['meta_title'].'">'.$cms[0]['meta_title'].'</a></li>'.PHP_EOL; break; Y por ejemplo dejas algo asi: case 'CMS': $selected = ($this->page_name == 'cms' && (Tools::getValue('id_cms') == $id)) ? ' class="sfHover"' : ''; $cms = CMS::getLinks((int)$id_lang, array($id)); if (count($cms)) { $variableVacia=""; $titulo_nombre=$cms[0]['meta_title']; if (strlen($cms[0]['meta_title']) > 21) { $variableVacia=".."; $titulo_nombre=mb_substr($cms[0]['meta_title'],0,20,"utf-8"); } $this->_menu .= '<li'.$selected.'><a href="'.Tools::HtmlEntitiesUTF8($cms[0]['link']).'">'.$titulo_nombre.$variableVacia.'</a></li>'.PHP_EOL; } break; Estamos diciendo por ejemplo si la longitud del titulo del cms es mayor que 21 (puedes cambiar ese 21 para ajustarlo a tu necesidad), corta el texto y imprime desde el caracter 0 al 20 (los 21 primeros caracteres) y ademas veras que hemos añadido que se impriman "...". Tanto lo del 0 al 20 lo puedes cambiar, como lo de la condicional mayor que 21, he puesto solo un ejemplo. Si no se aplican los cambios, recuerda limpiar cache smarty, y por si las moscas desinstalar y volver a instalar el modulo xDDDD Hola de nuevo Nadie, gracias por tu propuesta, hasta hoy no he podido probarlo. Bueno, he hecho lo que ponías pero no pasaba nada, jejej, no sé muy bien por qué. Pero al final le he dado solución. Lo que he hecho es hacer que las entradas de los menús se muestren en tantas líneas como sean necesarias, así no me preocupo si alguna categoría, CMS es larga o corta. Lo pongo aquí por si a alguién le interesa: 1.- En el fichero CSS del Blocktopmenu: /modules/blocktopmenu/css/superfish_modified.css Comentar o borrar la propiedad: white-space:nowrap; que se encuentra alrededor de la línea 89. Se quedaría algo así: .sf-menu a, .sf-menu a:visited { /* visited pseudo selector so IE6 applies text colour*/ color: #fff; /*white-space:nowrap;*/ } Comentando esta línea las entradas del menú ya salen en varias líneas y no sobresalen del bloque del menú. Dejo el cómo salía antes y cómo sale ahora. Bueno, para mí me vale esta opción así que doy el tema por solucionado. Link to comment Share on other sites More sharing options...
nadie Posted December 17, 2013 Share Posted December 17, 2013 Hola de nuevo Nadie, gracias por tu propuesta, hasta hoy no he podido probarlo. Bueno, he hecho lo que ponías pero no pasaba nada, jejej, no sé muy bien por qué. Pero al final le he dado solución. Lo que he hecho es hacer que las entradas de los menús se muestren en tantas líneas como sean necesarias, así no me preocupo si alguna categoría, CMS es larga o corta. Lo pongo aquí por si a alguién le interesa: 1.- En el fichero CSS del Blocktopmenu: /modules/blocktopmenu/css/superfish_modified.css Comentar o borrar la propiedad: white-space:nowrap; que se encuentra alrededor de la línea 89. Se quedaría algo así: .sf-menu a, .sf-menu a:visited { /* visited pseudo selector so IE6 applies text colour*/ color: #fff; /*white-space:nowrap;*/ } Comentando esta línea las entradas del menú ya salen en varias líneas y no sobresalen del bloque del menú. Dejo el cómo salía antes y cómo sale ahora. Bueno, para mí me vale esta opción así que doy el tema por solucionado. Bueno, yo la veo un poco raro como se te queda ahora. (Estéticamente queda amontonado XD) Bueno, un placer ayudarte y servirte ! Te añado la palabra "Solucionado" al titulo del tema, y procedo a cerrar el tema. Link to comment Share on other sites More sharing options...
Recommended Posts