Sé que este tema ha sido preguntado varias veces alrededor de la web, pero ninguna de esas soluciones parecen a trabajar para mí.

En la plantilla app/design/frontend/themename/default/template/page/html/header.phtml

Tengo una llamada para <?php echo $this->getChildHtml('headernav') ?>

En headernav.phtml se encuentra la convocatoria de la barra de búsqueda <?php echo $this->getChildHtml('topSearch') ?>

Contenidos relevantes de app/design/frontend/themename/default/layout/catalogsearch.xml:

<reference name="top.menu">
    <block type="core/template" name="top.search" as="topSearch" template="catalogsearch/form.mini.phtml"/>
</reference>

Esto hace que la barra de búsqueda aparecen, pero se encuentra fuera de los contenidos de headernav.phtml, y no en línea donde lo puse. (He comprobado el marcado en Chrome Dev Tools, no está en ninguna parte cerca de donde se supone que debe ser). Yo podría piratear con CSS, o insertar el contenido de form.mini.phtml a ser exactamente donde yo quiero, pero sé que esta no es la forma correcta de manejar esto, y sólo dará lugar a revisiones posteriores.

También he probado:

<reference name="headernav">
    <block type="core/template" name="top.search" as="topSearch" template="catalogsearch/form.mini.phtml"/>
</reference>

Alguien aquí puede aclararme por qué este no aparece en el propio archivo de plantilla y cómo puedo obtener xml para permitir que yo lo uso en el interior de un «sub-plantilla» de header.phtml

(por ejemplo, header.phtml llamadas en heavernav.phtml que llama form.mini.phtml)

InformationsquelleAutor DWils | 2013-12-19

2 Comentarios

  1. 3

    En el tema layout\catalogsearch.xml cambio de cadena

    <reference name="header">

    a

    <reference name="catalog.topnav">

    a continuación, poner

    <?php echo $this->getChildHtml('topSearch') ?> 

    en catálogo/navegación/superior.phtml en el que desea ver bloque de búsqueda

    • No funciona para mí.
    • wow @Sanketkumar Biswas su respuesta me salvó de semanas de frustrationg de tener a mi topSearch desapareciendo con el total de caché de la página debido a que no tiene el nombre de referencia establecido en «catálogo.topnav» – ¡muchas gracias! 🙂
  2. 1

    Sólo traté de averiguar esto para las últimas horas y se quedó hasta que he visto Sanketkumar la respuesta.

    Muchas otras soluciones que te dicen que te cambia la <reference name="header"> a <reference name="top.menu">. He intentado muchas veces y tenía el mismo error que usted, con la barra de navegación que aparecen justo debajo de la barra de navegación.

    También he probado la eliminación de la llamada de <?php echo $this->getChildHtml('topSearch') ?> en mi topmenu.phtml pero todavía era la representación de alguna manera.

    Hice Sanketkumar del cambio y funcionó correctamente.

    Mis cambios exactos:

    Uso local.xml o crear uno nuevo y añadir este código:

    HTML:

    <?xml version="1.0" encoding="UTF-8"?>
    <layout>
        <default>
            <reference name="catalog.topnav">
                <block type="core/template" name="top.search" as="topSearch" template="catalogsearch/form.mini.phtml"/>
            </reference>
       </default>
    </layout>

    Abrir topmenu.phtml y agregar <?php echo $this->getChildHtml('topSearch') ?> para el área que desea mostrar. Mi sección exacta de la navegación parecía:

    HTML:

    <?php $_menu = $this->getHtml('level-top') ?>
    <?php if($_menu): ?>
    <div class="nav-container">
    	<div class="container">
    		<div class="row">
                <div class="span12">
                    <div id="menu-icon"><?php echo $this->__('Navigate') ?></div>
                    <ul id="nav" class="sf-menu">
                        <?php echo $_menu ?>
    
    			        <li style="float: right;">
    						<?php echo $this->getChildHtml('navSearch') ?>
    					</li>
    
                    </ul>
                    <ul class="sf-menu-phone">
                        <?php echo $_menu ?>
    
            			<li>
    						<?php echo $this->getChildHtml('navSearch') ?>
    					</li>
    
                    </ul>
                </div>
            </div>
    		<div class="clear"></div>
    	</div>
    </div>
    <?php endif ?>

    (Aviso que he añadido dos veces: una vez para el escritorio y una vez para el sitio móvil. También he añadido en una lista para que se muestren correctamente y flota a la derecha en la versión de escritorio.)

    Espero que esto ayude!

Dejar respuesta

Please enter your comment!
Please enter your name here