2010-12-15 50 views
1

我在盡我所能按照他們希望的方式編輯Magento設計(使用local.xml而不是編輯page.xml),但是系統是如此可怕和令人費解,它證明這樣做非常棘手。無法移動Magento中的top.links(topLinks)塊

我現在的問題是,我似乎無法將「top.links」塊移動到標題中的另一個塊中。目前在page.xml中,該塊位於標題塊內。我已經嘗試過在我的local.xml中完成所有工作,我嘗試了以下編輯。

從標題刪除top.links,添加「Hud」塊內。

<layout version="0.1.0"> 

    <default> 
     <!-- Here is where we edit the header block --> 
     <reference name="header"> 
      <remove name="top.links" /> 
      <remove name="top.search" /> 
      <!-- This is the block that holds the HUD --> 
      <block type="page/html" name="hud" as="hud" template="page/html/hud.phtml"> 
       <block type="page/template_links" name="top.links" as="topLinks" /> 
      </block> 
     </reference> 
    </default> 

</layout> 

alt text

注意的環節應該是棕色的盒子裏(這是HUD塊)。

NOT去除報頭中的top.links塊,但加入到鐵漢塊

<layout version="0.1.0"> 

    <default> 
     <!-- Here is where we edit the header block --> 
     <reference name="header"> 
      <remove name="top.search" /> 
      <!-- This is the block that holds the HUD --> 
      <block type="page/html" name="hud" as="hud" template="page/html/hud.phtml"> 
       <block type="page/template_links" name="top.links" as="topLinks" /> 
      </block> 
     </reference> 
    </default> 

</layout> 

alt text

基於top.links的代碼創建新鏈接的模板,在提到這個HUD的塊如下。

<layout version="0.1.0"> 

    <default> 
     <!-- Here is where we edit the header block --> 
     <reference name="header"> 
      <remove name="top.links" /> 
      <remove name="top.search" /> 
      <!-- This is the block that holds the HUD --> 
      <block type="page/html" name="hud" as="hud" template="page/html/hud.phtml"> 
       <block type="page/template_links" name="hud.links" as="hudLinks" template="page/template/hudLinks.phtml"/> 
      </block> 
     </reference> 
    </default> 

</layout> 

下面是hud.phtml

<!-- hud.phtml --> 
<div id="hud"> 
    <h3>Welcome</h3> 
    <?php echo $this->getChildHtml('hudLinks') ?> 
    <?php echo $this->getChildHtml('top.search') ?> 
</div> 

這帶來的最有趣的結果。我可以看到模板已找到,但沒有顯示。

alt text

我真的很無能與此有關。我在這裏做了完全錯誤的事嗎?對於它的價值,這裏是我用於hudLinks.phtml和top.links模板的代碼。

<?php $_links = $this->getLinks(); ?> 
<?php if(count($_links)>0): ?> 
<ul class="links"<?php if($this->getName()): ?> id="<?php echo $this->getName() ?>"<?php endif;?>> 
    <?php foreach($_links as $_link): ?> 
     <li<?php if($_link->getIsFirst()||$_link->getIsLast()): ?> class="<?php if($_link->getIsFirst()): ?>first<?php endif; ?><?php if($_link->getIsLast()): ?> last<?php endif; ?>"<?php endif; ?> <?php echo $_link->getLiParams() ?>><?php echo $_link->getBeforeText() ?><a href="<?php echo $_link->getUrl() ?>" title="<?php echo $_link->getTitle() ?>" <?php echo $_link->getAParams() ?>><?php echo $_link->getLabel() ?></a><?php echo $_link->getAfterText() ?></li> 
    <?php endforeach; ?> 
</ul> 
<?php endif; ?> 
+0

如果是你自己的主題,我看不到編輯'page.xml'的問題。 – clockworkgeek 2010-12-15 17:57:04

+0

我已經開始的主題基本上使用了Magento基礎中的page.xml文件。我試着用我自己主題的佈局文件夾中的page.xml文件覆蓋這個,但它似乎沒有工作。感謝您的答覆。 – 2010-12-16 09:07:20

回答

2

「刪除」規則在最後處理,我想,所以你必須改變你插入的塊的名稱。 現在看一個鏈接是如何補充說:

app/design/frontend/base/default/layout/customer.xml 
51:  <reference name="top.links"> 
52-   <action method="addLink" translate="label title" module="customer"><label>My Account</label><url helper="customer/getAccountUrl"/><title>My Account</title><prepare/><urlParams/><position>10</position></action> 
53-  </reference> 

鏈接被添加到塊命名top.links。這就是爲什麼你的新塊是空的。 解決方案:搜索xml文件以查找top.links,並將找到的代碼添加到local.xml文件中。

+0

使用此實例時,我已經複製並粘貼了與其他xml文件完全相同的代碼。我會嘗試你上面提供的代碼並回復。感謝您的回覆greg0ire。 – 2010-12-16 10:14:54

+0

@Liam Spencer:在複製並粘貼代碼之後,請確保您調整引用標記的name屬性以匹配新創建的塊的名稱。 – greg0ire 2010-12-16 10:29:53

+0

非常感謝您的幫助。這似乎對我有效,也許可以幫助我更多地瞭解Magento系統。我相信未來我會在這裏問更多的問題!再次感謝! – 2010-12-16 11:05:02