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

Highlight dei toplinks di navigazione
 
matteoweb
Member
 
Total Posts:  55
Joined:  2008-07-14
 

Se vi interessa vi posto il codice per evidenziare i link nel menù di navigazione (toplinks) a seconda dell’attuale pagina visualizzata (che può essere la stessa linkata dal toplinks o anche una “sottopagina”, come le categorie del catalogo, stampate subito sotto).

E’ un po’ contorta la soluzione adottata, ma non ho trovato vie più “pulite” (pensavo a usare i metodi dei breadcrums, ma non ci son riuscito). Si accettano suggerimenti.

Innanzitutto, modificate il blocco app/code/local/Mage/Page/Block/Template/Links.php:

public function addLink($label$url=''$title=''$prepare=false$urlParams=array(),
        
$position=null$liParams=null$aParams=null$beforeText=''$afterText='',$myModule='')
    
{
        
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,
          
'my_module'       => $myModule,
        ));

        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;
    
}

Poi modificate il template links.phtml:

<?php $_links $this->getLinks(); ?>
<?php 
if(count($_links)>0): ?>
    
<div>
        <
ul<?php if($this->getName()): ?>):?> id="<?php echo $this->getName() ?>"<?php endif;?>>
<?php $_module_name Mage::app()->getFrontController()->getAction()->getRequest()->getModuleName(); ?>
<?php $_path_info 
Mage::app()->getFrontController()->getAction()->getRequest()->getPathInfo(); ?>
            <?php 
foreach($_links as $i=>$_link): ?>
                <?php $_my_module 
$_link->getMyModule(); ?>
                <?php $class 
''?>
                <?php 
if($_link->getIsFirst()): ?>
                    <?php $class 
.= 'first'?>
                <?php 
endif; ?>
                <?php 
if($_link->getIsLast()): ?>
                    <?php $class 
.= 'last'?>
                <?php 
endif; ?>
                <?php 
if($_link->getMyModule() == $_module_name || @strstr($_path_info,$_link->getMyModule()) !== false): ?>
                    <?php $class 
.= ' active'?>
                <?php 
endif; ?>
                
<li <?php if ($class != ''): ?>class="<?php echo($class); ?>"<?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>
   </
div>
<?php endif; ?>

Ultima modifica, nel blocco xml che aggiunge i link al menù:

<block type="page/template_links" name="top.links" as="topLinks">
                    <
action method="addLink" translate="label title" >
                        <
label>Home page</label>
                        <
url>home</url>
                        <
title>Home page</title>
                        <
prepare>true</prepare>
                        <
urlParams></urlParams>
                        <
position></position>
                        <
li_params></li_params>
                        <
after_text4></after_text4>
                        <
before_text></before_text>
                        <
after_text></after_text>
                       <
my_module>home</my_module>
                    </
action>
                    <
action method="addLink" translate="label title" >
                        <
label>Information</label>
                        <
url>informazioni-chi-siamo</url>
                        <
title>Informazioni</title>
                        <
prepare>true</prepare>
                        <
urlParams></urlParams>
                        <
position></position>
                        <
li_params></li_params>
                        <
after_text4></after_text4>
                        <
before_text></before_text>
                        <
after_text></after_text>
                        <
my_module>informazioni</my_module>
                    </
action>
                    <
action method="addLink" translate="label title">
                        <
label>Catalog</label>
                        <
url>catalog/index.html</url>
                        <
title>Catalogo</title>
                        <
prepare>true</prepare>
                        <
urlParams></urlParams>
                        <
position></position>
                        <
li_params></li_params>
                        <
after_text4></after_text4>
                        <
before_text></before_text>
                        <
after_text></after_text>
                       <
my_module>catalog</my_module>
                    </
action>
                    <
action method="addLink" translate="label title" >
                        <
label>Checkout</label>
                        <
url>checkout/cart</url>
                        <
title>Checkout</title>
                        <
prepare>true</prepare>
                        <
urlParams></urlParams>
                        <
position></position>
                        <
li_params></li_params>
                        <
after_text4></after_text4>
                        <
before_text></before_text>
                        <
after_text></after_text>
                      <
my_module>checkout</my_module>
                    </
action>
                </
block>

A questo punto, se una pagina (es.: una categoria del catalogo) usa un modulo (nel nostro esempio: “catalog"), in automatico, oltre al link della categoria, verrà evidenziato (classe css “active") anche il link catalogo nel menù in alto (vd primo “if” nel phtml).

Per le pagine statiche sarà invece sufficiente aggiungere un prefisso all’id della pagina col nome della pagina “padre” (es.: padre:informazioni, pagina: informazioni-chi-siamo). Vd secondo if nel phtml.

Allego lo screenshot come esempio:

Image Attachments
magento_menù.JPG
 
Magento Community Magento Community
Magento Community
Magento Community
 
chiaraweb
Guru
 
Avatar
Total Posts:  721
Joined:  2008-03-21
Aviano ~ Italy
 

Ciao!
hai uno screen-shot di questa cosa?? xche nn ho capito esattamente cosa fa!!

Grazie mille

 
Magento Community Magento Community
Magento Community
Magento Community
 
Black Cat
Moderator
 
Avatar
Total Posts:  3481
Joined:  2008-02-14
Assemini / Cagliari (Italy)
 

uhm non ne sono sicuro, ma credo riproduca l’effetto “active” cioè viene assegnata questa classe ai link che danno alla pagina stessa in cui si trovano (non ho tempo di stare a guardare il codice rasberry

 
Magento Community Magento Community
Magento Community
Magento Community
 
matteoweb
Member
 
Total Posts:  55
Joined:  2008-07-14
 
chiaraweb - 05 August 2008 10:59 AM

Ciao!
hai uno screen-shot di questa cosa?? xche nn ho capito esattamente cosa fa!!

Grazie mille

Fatto! wink

 
Magento Community Magento Community
Magento Community
Magento Community
 
matteoweb
Member
 
Total Posts:  55
Joined:  2008-07-14
 
Black Cat - 05 August 2008 11:44 AM

uhm non ne sono sicuro, ma credo riproduca l’effetto “active” cioè viene assegnata questa classe ai link che danno alla pagina stessa in cui si trovano (non ho tempo di stare a guardare il codice rasberry

Esatto, con l’aggiunta che ora evidenzia anche il link “padre” (vd screenshot: la pagina attuale è una categoria, ma anche il link catalogo è “active").

 
Magento Community Magento Community
Magento Community
Magento Community
 
chiaraweb
Guru
 
Avatar
Total Posts:  721
Joined:  2008-03-21
Aviano ~ Italy
 

Capito grazie mille!!

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