Magento添加左侧目录商品菜单导航栏

自己写了一个Magento左侧目录
的实现,跟网上的其他版本不一样。

目标:

首页左侧显示商品目录

内页显示同级目录及父、子目录

商品详细页面显示一路父目录

本范例比较适合综合站使用,当然单独站也兼容。

 

效果:

magento左侧目录效果图1

左侧目录全部展开的情况

magento左侧目录效果图2

展开了二级目录

magento左侧目录效果图3

定位到Magento三级目录

实现:

布局设置,

app\design\frontend\default\default\layout\catalog.xml 加,

<reference name=”left”>
<block type=”catalog/navigation” name=”cms_catalog” template=”catalog/catalog.phtml”/>
</reference>

模板文件,

app\design\frontend\default\default\template\catalog 建catalog.phtml,内容为:

<style>.currentCategory{color:#004cb8; font-weight:bold;}</style>
<!-- /*S_leftNavContainer*/ -->
<div id="leftNavContainer" name="leftNavContainer">
<?php
$_cat        = $this->getCurrentCategory();
$current_cat    = (is_object($_cat) ? $_cat->getName() : '');
$leftNav    = '<ul id="leftNav" name="leftNav">';
switch( $_cat -> getLevel() ){
case '2':
default:
    $leftNav    .= '<li class="leftnav_title"><a href="'.$this -> getCategoryUrl($_cat).'" class="currentCategory">'.$_cat -> getName().'</li>';
    $_categories    = $_cat->getChildrenCategories();
    $leftNav    .= '<ul>';
    foreach( $_categories as $_category ){
        $leftNav    .= '<li class="lefnavtwo"><a href="'.$this -> getCategoryUrl( $_category ).'" >'.$_category -> getName().'</a></li>';
    }
    $leftNav    .= '</ul>';
break;
case '3':
    $_parent    = $_cat -> getParentCategory();
    $leftNav    .= '<li class="leftnav_title"><a href="'.$this -> getCategoryUrl($_parent).'">'.$_parent -> getName().'</a></li>';
    $_categories    = $_parent -> getChildrenCategories();
    $leftNav    .= '<ul>';
    foreach( $_categories as $_category ){
        $leftNav    .= '<li class="lefnavtwo">';
        if( $current_cat == $_category->getName() ){
            $leftNav    .= '<a class="currentCategory" href="'.$this -> getCategoryUrl( $_category ).'" >'.$_category -> getName().'</a>';
            $leftNav    .= '<ul>';
            if( $_category -> hasChildren() ){
                $childCategoies    = $_category -> getChildrenCategories();
                foreach( $childCategoies as $_ccategory ){
                    $leftNav    .= '<li class="lefnavthree"><a href="'.$this -> getCategoryUrl( $_ccategory ).'" >'.$_ccategory -> getName().'</a></li>';
                }
            }
            $leftNav    .= '</ul>';
        }else{
            $leftNav    .= '<a href="'.$this -> getCategoryUrl( $_category ).'" >'.$_category -> getName().'</a>';
        }
        $leftNav    .= '</li>';
    }
    $leftNav    .= '</ul>';
break;
case '4':
    $_parent    = $_cat -> getParentCategory();
    $_pname        = $_parent -> getName();
    $_pparent    = $_parent -> getParentCategory();
    $leftNav    .= '<li class="leftnav_title"><a href="'.$this->getCategoryUrl($_pparent).'">'.$_pparent -> getName().'</h3></li>';
    $_categories    = $_pparent -> getChildrenCategories();
    $leftNav    .= '<ul>';
    foreach( $_categories as $_category ){
        $leftNav    .= '<li class="lefnavtwo">';
        $leftNav    .= '<a href="'.$this -> getCategoryUrl( $_category ).'" >'.$_category -> getName().'</a>';
        if( $_pname == $_category->getName() ){
            $_categories    = $_category -> getChildrenCategories();
            $leftNav    .= '<ul>';
            foreach( $_categories as $_ccategory ){
                $leftNav    .= '<li class="lefnavthree">';
                if( $current_cat == $_ccategory -> getName() ){
                    $leftNav    .= '<a class="currentCategory" href="'.$this -> getCategoryUrl( $_ccategory ).'" >'.$_ccategory -> getName().'</a>';
                }else{
                    $leftNav    .=  '<a href="'.$this -> getCategoryUrl( $_ccategory ).'" >'.$_ccategory -> getName().'</a>';
                }
                $leftNav    .= '</li>';
            }
            $leftNav    .= '</ul>';
        }
        $leftNav    .= '</li>';
    }
    $leftNav    .= '</ul>';
break;
}
$leftNav    .= '</ul>';
echo $leftNav;
?>
</div>
<!-- /*E_leftNavContainer*/ -->
 

这样就实现了Magento左侧目录
的添加。

magento robots.txt规范文件

# Website Sitemap
Sitemap: http://www.mydomain.com/sitemap.xml
 
# Crawlers Setup
User-agent: *
Crawl-delay: 10
 
# Allowable Index
Allow: /*?p=
Allow: /catalog/seo_sitemap/category/
Allow:/catalogsearch/result/

 

 
# Directories
Disallow: /404/
Disallow: /app/
Disallow: /cgi-bin/
Disallow: /downloader/
Disallow: /includes/
Disallow: /js/
Disallow: /lib/
Disallow: /magento/
Disallow: /media/
Disallow: /pkginfo/
Disallow: /report/
Disallow: /skin/
Disallow: /stats/
Disallow: /var/
 
# Paths (clean URLs)
Disallow: /index.php/
Disallow: /catalog/product_compare/
Disallow: /catalog/category/view/
Disallow: /catalog/product/view/
Disallow: /catalogsearch/
Disallow: /checkout/
Disallow: /control/
Disallow: /contacts/
Disallow: /customer/
Disallow: /customize/
Disallow: /newsletter/
Disallow: /poll/
Disallow: /review/
Disallow: /sendfriend/
Disallow: /tag/
Disallow: /wishlist/
 
# Files
Disallow: /cron.php
Disallow: /cron.sh
Disallow: /error_log
Disallow: /install.php
Disallow: /LICENSE.html
Disallow: /LICENSE.txt
Disallow: /LICENSE_AFL.txt
Disallow: /STATUS.txt
 
# Paths (no clean URLs)
Disallow: /*.js$
Disallow: /*.css$
Disallow: /*.php$
Disallow: /*?p=*&
Disallow: /*?SID=

上面是针对magento网店写的规范性robots.txt 文件,你只需修改sitemap的路径为你的magento站点地图路径,然后保存为robots.txt上传到magento根目录即可。

P 2011.1.7更新。

记录在Rikku
看到的另一则写法。

# Website Sitemap
Sitemap: http://www.mydomain.com/sitemap.xml

# Crawlers Setup
User-agent: *
Crawl-delay: 10

# Allowable Index
Allow: /*?p=
Allow: /index.php/blog/
Allow: /catalog/seo_sitemap/category/
Allow:/catalogsearch/result/

# Directories
Disallow: /404/
Disallow: /app/
Disallow: /cgi-bin/
Disallow: /downloader/
Disallow: /includes/
Disallow: /js/
Disallow: /lib/
Disallow: /magento/
Disallow: /media/
Disallow: /pkginfo/
Disallow: /report/
Disallow: /skin/
Disallow: /stats/
Disallow: /var/

# Paths (clean URLs)
Disallow: /index.php/
Disallow: /catalog/product_compare/
Disallow: /catalog/category/view/
Disallow: /catalog/product/view/
Disallow: /catalogsearch/
Disallow: /checkout/
Disallow: /control/
Disallow: /contacts/
Disallow: /customer/
Disallow: /customize/
Disallow: /newsletter/
Disallow: /poll/
Disallow: /review/
Disallow: /sendfriend/
Disallow: /tag/
Disallow: /wishlist/

# Files
Disallow: /cron.php
Disallow: /cron.sh
Disallow: /error_log
Disallow: /install.php
Disallow: /LICENSE.html
Disallow: /LICENSE.txt
Disallow: /LICENSE_AFL.txt
Disallow: /STATUS.txt

# Paths (no clean URLs)
Disallow: /*.js$
Disallow: /*.css$
Disallow: /*.php$
Disallow: /*?p=*&
Disallow: /*?SID=
 

mysql多表关联数据同时删除

category(栏目信息表)和news(新闻数据表)。 

category中的id(栏目编号)字段作为该表的主键(primary key).唯一标识了一个栏目的信息。 
news 中的id字段作为该表的主键(primary key).唯一标识了一个栏目的信息。 

category_id(栏目编号)字段与category表的id字段相关联。 

1.SQL删除语句 

sql = "delete category,news from category left join news on category.id = news.category_id where category.id= ?";