Jump to content

DIVIDIR MENÚ A AMBOS LADOS DEL LOGOTIPO


Recommended Posts

Hola a todos. Me gustaría que el menú de mi prestashop quedara con el logo en medio y el menú dividido a ambos lados del mismo. Adjunto imagen.222.thumb.png.9c6e31e4ed3038aebbaf6faaf9f89c02.png

Así, por ejemplo:

  • Logo en medio
  • Tres categorías a la derecha
  • Tres categorías a la izquierda.

Ya conseguí centrar el logo, pero dividir el menú me está costando más. Necesito ayuda aurgente. Saludos.

 

 

Edited by theboombaby (see edit history)
Link to comment
Share on other sites

Si usas el módulo ps_mainmenu puedes editar el template que tienes en /themes/classic/modules/ps_mainmenu/

A lo mejor no funciona como esperas, pero yo haría algo así:

1) Retira el logo de tu template actual

2) abre ps_mainmenu.tpl

3) busca el comienzo del loop (foreach) 

Antes del loop añade este código que asigna una nueva variable con valor 0

{assign var=items value=0}

Determina el número de <li> de tu menú

Al inicio del loop incrementa el valor, y añade una condición para que al llegar A LA MITAD (tu nº fijo de items en el menú / 2) añada un código para insertar el logo. Cambia X por el número de item en el menú donde quieras que aparezca el logo. (Aparecerá antes de este item)

{foreach from=$nodes item=node}
{assign var=items value=$items+1}
        {if $items == x}
        <li class="LOGO"><img src=""></li>
        {/if}
{.....}

Acabo de probarlo, y funciona correctamente en una instalación de desarrollo con prestashop 1.7.6. Ya me contarás.

 

EDIT:

 

La otra opción, visto que ya has centrado el logo, es que añadas un item más al menú, en el centro, y lo estiles en CSS para que no aparezca el texto (text-indent en negativo), y le añadas márgenes o padding para simular el efecto de que esté dividido. Luego posicionas el <ul> (o el div del menú) de forma absoluta y lo superpones donde se encuentra el logotipo. Es más chapuza, tendrás que hacer más ajustes con media queries, pero también debería ser funcional

Edited by Luis C (see edit history)
  • Like 1
Link to comment
Share on other sites

 

Hola Luis, acabo de hacer la reforma de código pero sigue sin funcionar. Tal vez no esté el código bien puesto. El código ha quedado así:

 

{assign var=items value=5}
{function name="menu" nodes=[] depth=0 parent=null}
    {if $nodes|count}
      <ul class="top-menu" {if $depth == 0}id="top-menu"{/if} data-depth="{$depth}">
        {foreach from=$nodes item=node}
        {assign var=items value=$items+1}
        {if $items == 3}
        <li class="LOGO"><img src=""></li>
        {/if}

            <li class="{$node.type}{if $node.current} current {/if}" id="{$node.page_identifier}">
            {assign var=_counter value=$_counter+1}
              <a

 

Saludos.

Link to comment
Share on other sites

No he sido lo suficientemente claro :P

Cuando asignas la variable items por primera vez, tienes que ponerle como valor 0. Es un contador que itera en cada resultado del foreach y suma 1. Por eso no te funciona, porque comienza a contar desde el 5 ;)

 

Edited by Luis C (see edit history)
  • Like 1
Link to comment
Share on other sites

Vale. Vamos por partes:

 

- Prueba a asignar el valor a la variable DENTRO de la función, de otro modo es posible que no funcione

 <ul class="top-menu" {if $depth == 0}id="top-menu"{/if} data-depth="{$depth}">
        {assign var=items value=0}
        {foreach from=$nodes item=node}
        {assign var=items value=$items+1}
        {if $items == 3}
        <li class="LOGO"><img src=""></li>
        {/if}

 

Por otra parte, tienes que personalizar la parte del código donde accedes a la imagen. La etiqueta "<img src="">" no va a mostrar ninguna imagen. Si accedes al archivo de cabecera del template (templates/_partials/header.tpl)  puedes copiar la linea donde se llama al logo

<img class="logo img-responsive" src="{$shop.logo}" alt="{$shop.name}">

Por último. Esta aproximación requiere que retires de header.tpl el logotipo que originalmente estaba puesto, ya que con este código lo estás llamando de nuevo, de modo que saldría dos veces. He asignado la clase "LOGO" al elemento <li> que rodea a la imagen logotipo en mi ejemplo para que puedas asignarle un estilo inline y los márgenes o paddings necesarios para encajar en tu diseño.

 

PD: En tu caso, si quieres que el logo aparezca tras el tercer elemento del menú (es decir: 3 elementos - LOGO - 3 elementos) tienes que cambiar la sentencia IF y poner if $items == 4. ;) 

Edited by Luis C (see edit history)
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...