2013-11-06 1 views
1

Все, что я хочу сделать, это переместить окно поиска. Это окно поиска в данный момент отображается в заголовке, непосредственно рядом с логотипом, и генерируется следующий код:

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

в /app/design/frontend/MYTHEME/default/template/page/html/header.phtml

Я хотел бы это окно поиска инлайн с навигационными ссылками , которые находятся в top.phtml, который находится в другом каталоге. Но когда я использую код

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

окно поиска не отображается. Я понимаю, что это связано с тем, что значение $this изменилось, но я не понимаю, как отобразить окно поиска? Что я могу заменить $this?

Я попытался заменить его Mage_Page_Block_Html_Header, так как это было определение $this в header.phtml, но безрезультатно. Может ли кто-нибудь указать мне в правильном направлении или дать объяснение относительно того, как я обращаюсь к методам после изменения определения $this?

ответ

2

Вам нужно сделать обновление макета и включить блок topSearch в блок, содержащий top.phtml. Просмотрите файлы app/design/frontend /.../ layouts/... xml, найдите, как объявлен topSearch, а затем найдите, где объявлен блок с использованием шаблона top.phtml. Затем переместите блок topSearch как дочерний элемент верхнего блока. Я имею в виду добавить обновление макета XML, как это:

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

Другое решение попробовать следующий в шаблоне:

echo $this->getLayout()->getBlock('top.search')->toHtml() 

Если это не будет работать, то найти в макеты TopSearch блока и попытаться использовать в коде выше имя блока вместо псевдонима.

Вы можете прочитать больше о Magento уровне представления здесь: http://www.magentocommerce.com/wiki/4_-_themes_and_template_customization/0_-_theming_in_magento/designing-for-magento

Удачи!

+0

Danke schön! Я попробую предложенные методы и рассмотрю предоставленный ресурс! – StephenWidom

+0

Что вы подразумеваете под «move topSearch block как ребенок верхнего блока»? Скопируйте и вставьте блок в файл, ссылающийся на top.phtml? Я пробовал это, но не знаю, где его вставить. Внутри тега (что соответствует top.phtml)? Спасибо за вашу помощь. – StephenWidom

+0

Я имею в виду добавить макет обновления xml для ваших страниц с этим блоком в качестве дочернего элемента блока навигации. Дополнительную информацию см. В обновленном ответе – denSandman