2013-12-19 111 views
2

我知道這個問題已經在網絡上多次提出過,但這些解決方案似乎都不適用於我。將Magento搜索移至導航欄

在模板app/design/frontend/themename/default/template/page/html/header.phtml

我有<?php echo $this->getChildHtml('headernav') ?>

headernav.phtml呼叫位於呼籲搜索欄<?php echo $this->getChildHtml('topSearch') ?>

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> 

這使得搜索欄出現,但它放在o外f headernav.phtml的內容,而不是內聯的地方。 (我查看了Chrome Dev Tools中的標記,它遠不及它應該在的位置)。我可以用CSS破解它,或者將form.mini.phtml的內容插入到我想要的位置,但我知道這不是處理這個問題的正確方法,並且只會在稍後導致修訂。

我也曾嘗試:

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

可以在這裏任何人都開導我,爲什麼這是不正確的模板文件中出現,我怎樣才能得到XML允許我使用這裏面一個「子-Template」的header.phtml

(如header.phtml電話上heavernav.phtml這就要求form.mini.phtml

回答

3

在主題佈局\ catalogsearch.xml變化串

<reference name="header"> 

<reference name="catalog.topnav"> 

然後把

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

目錄/導航/ top.phtml要看到搜索塊

+0

沒有爲我工作。 – shmuli

+0

哇@Sanketkumar比斯瓦斯你的回答救了我幾周的挫折讓我的topSearch消失與全頁緩存,因爲沒有參考名稱設置爲「catalog.topnav」 - 謝謝你太多了! :) – Joe

1

只是試圖在過去的幾個小時里弄清楚這一點,直到我陷入困境看到Sanketkumar的答案。

許多其他解決方案會告訴您將<reference name="header">更改爲<reference name="top.menu">。我嘗試了很多次,並且遇到與您相同的錯誤,導航欄出現在導航欄的正下方。

我也嘗試刪除我的topmenu.phtml中的<?php echo $this->getChildHtml('topSearch') ?>的調用,但它仍然以某種方式渲染。

我做了Sanketkumar的改變,它工作正常。

我的確切變化:

使用local.xml或創建一個新的,添加以下代碼:

<?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>

打開topmenu.phtml並添加<?php echo $this->getChildHtml('topSearch') ?>到要顯示的區域。我的導航的精確部分看起來像:

<?php $_menu = $this->getHtml('level-top') ?> 
 
<?php if($_menu): ?> 
 
<div class="nav-container"> 
 
\t <div class="container"> 
 
\t \t <div class="row"> 
 
      <div class="span12"> 
 
       <div id="menu-icon"><?php echo $this->__('Navigate') ?></div> 
 
       <ul id="nav" class="sf-menu"> 
 
        <?php echo $_menu ?> 
 

 
\t \t \t   <li style="float: right;"> 
 
\t \t \t \t \t \t <?php echo $this->getChildHtml('navSearch') ?> 
 
\t \t \t \t \t </li> 
 

 
       </ul> 
 
       <ul class="sf-menu-phone"> 
 
        <?php echo $_menu ?> 
 

 
     \t \t \t <li> 
 
\t \t \t \t \t \t <?php echo $this->getChildHtml('navSearch') ?> 
 
\t \t \t \t \t </li> 
 

 
       </ul> 
 
      </div> 
 
     </div> 
 
\t \t <div class="clear"></div> 
 
\t </div> 
 
</div> 
 
<?php endif ?>

(請注意,我加了兩次 - 一次用於臺式機和一次手機網站我還添加了它在一個列表,以便它正確顯示和浮動的權利上。桌面版)。

希望這會有所幫助!