Posting in the Magento forums has been disabled pending the implementation of a new and improved forum solution which should better serve the community.

For new questions please post at magento.stackexchange.com, the community-run support site for the Magento community. We will be providing updates on the new forum solution soon. For questions or concerns please email community@magento.com.

Magento Forum

Einige Links von top.menu haben eine variable URL
 
SimonSimCity
Jr. Member
 
Avatar
Total Posts:  4
Joined:  2008-08-14
 

In der Datei checkout.xml werden 2 Links zu dem top.Menu hinzugefügt:

<reference name="top.links">
            <
block type="checkout/links" name="checkout_cart_link">
                <
action method="addCartLink"></action>
                <
action method="addCheckoutLink"></action>
            </
block>
        </
reference>

Dieser Code wird von dieser Datei bearbeitet: magento\app\code\core\Mage\Checkout\Block\Links.php

public function addCartLink()
    
{
        
if ($parentBlock $this->getParentBlock()) {
            $count 
$this->helper('checkout/cart')->getSummaryCount();

            if( 
$count == {
                $text 
$this->__('My Cart (%s item)'$count);
            
elseif( $count {
                $text 
$this->__('My Cart (%s items)'$count);
            
else {
                $text 
$this->__('My Cart');
            
}

            $parentBlock
->addLink($text'checkout/cart'$texttrue, array(), 50null'class="top-link-cart"');
        
}
        
return $this;
    
}

    
public function addCheckoutLink()
    
{
        
if (!$this->helper('checkout')->canOnepageCheckout()) {
            
return $this;
        
}
        
if ($parentBlock $this->getParentBlock()) {
            $text 
$this->__('Checkout');
            
$parentBlock->addLink($text'checkout'$texttrue, array(), 60null'class="top-link-checkout"');
        
}
        
return $this;
    
}

Hier wird die Funktion AddLink benutzt.
Der Autor hat den Aufruf dieser Funktion so gestaltet, als wäre es diese Funktion, die diese Links bearbeitet:
magento\app\code\core\Mage\Page\Block\Template\Links.php

public function addLink($label$url=''$title=''$prepare=false$urlParams=array(),
        
$position=null$liParams=null$aParams=null$beforeText=''$afterText='')
    
{
        
if (is_null($label) || false===$label{
            
return $this;
        
}
        $link 
= new Varien_Object(array(
            
'label'         => $label,
            
'url'           => ($prepare $this->getUrl($url, (is_array($urlParams) ? $urlParams : array())) : $url),
            
'title'         => $title,
            
'li_params'     => $this->_prepareParams($liParams),
            
'a_params'      => $this->_prepareParams($aParams),
            
'before_text'   => $beforeText,
            
'after_text'    => $afterText,
        ));

        if (
intval($position) > 0{
            
while (isset($this->_links[$position])) {
                $position
++;
            
}
            $this
->_links[$position] $link;
            
ksort($this->_links);
        
else {
            $position 
0;
            foreach (
$this->_links as $k=>$v{
                $position 
$k;
            
}
            $this
->_links[$position+10] $link;
        
}

        
return $this;
    
}

ABER - ich habe heraugefunden, dass es in wirklichkeit diese Funktion ist, die aufgerufen wird:
magento\app\code\core\Mage\Page\Block\Html\Toplinks.php

public function addLink($liParams$aParams$innerText$position=''$beforeText=''$afterText='')
    
{
        print_r
($aParams);
        
$params '';
        if (!empty(
$liParams) && is_array($liParams)) {
            
foreach ($liParams as $key=>$value{
                $params 
.= ' ' $key '="' addslashes($value) . '"';
            
}
        } 
elseif (is_string($liParams)) {
            $params 
.= ' ' $liParams;
        
}
        $toplinkInfo[
'liParams'$params;
        
$params '';
        if (!empty(
$aParams) && is_array($aParams)) {
            
foreach ($aParams as $key=>$value{
                $params 
.= ' ' $key '="' addslashes($value) . '"';
            
}
        } 
elseif (is_string($aParams)) {
            $params 
.= ' ' $aParams;
        
}
        $toplinkInfo[
'aParams'$params;
        
$toplinkInfo['innerText'$innerText;
        
$toplinkInfo['beforeText'$beforeText;
        
$toplinkInfo['afterText'$afterText;
        
$this->_prepareArray($toplinkInfo, array('liParams''aParams''innerText''beforeText''afterText''first''last'));
        if (
is_numeric($position)) {
            array_splice
($this->_toplinks$position0, array($toplinkInfo));
        
else {
            $this
->_toplinks[] $toplinkInfo;
        
}
        
return $this;
    
}

Die hat auch einen ganz anderen Syntax !
Desshalb kommt bei mir der Array ganz verwirrend an:

Array
(
    
[0] => Array
        (
            
[liParams] =>  Mein Warenkorb
            [aParams] 
=>  checkout/cart
            [innerText] 
=> Mein Warenkorb
            [beforeText] 
=> Array
                (
                )

            
[afterText] => 50
            [first] 
=> 1
            [last] 
=> 
        )

    
[1] => Array
        (
            
[liParams] =>  Zur Kasse
            [aParams] 
=>  checkout
            [innerText] 
=> Zur Kasse
            [beforeText] 
=> Array
                (
                )

            
[afterText] => 60
            [first] 
=> 
            
[last] => 
        )

    
[2] => Array
        (
            
[liParams] =>  Anmelden
            [aParams] 
=>  http://ssc/magento/de/customer/account/login/
            
[innerText] => Anmelden
            [beforeText] 
=> Mage_Core_Model_Layout_Element Object
                
(
                )

            
[afterText] => 100
            [first] 
=> 
            
[last] => 1
        
)
)

Ich bekomme es nicht hin diesen Array so umzustylen, dass er generell funktioniert, da die Links nicht komplett sind !

Oder wie bekomme ich es hin, dass er die Links mit der richtigen Funktion rendert ???

 
Magento Community Magento Community
Magento Community
Magento Community
Magento Community
Magento Community
Back to top