"Back"

Block Source: Mage_Catalog_Block_Category_View

<?php
/**
 * Magento
 *
 * NOTICE OF LICENSE
 *
 * This source file is subject to the Open Software License (OSL 3.0)
 * that is bundled with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://opensource.org/licenses/osl-3.0.php
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@magento.com so we can send you a copy immediately.
 *
 * DISCLAIMER
 *
 * Do not edit or add to this file if you wish to upgrade Magento to newer
 * versions in the future. If you wish to customize Magento for your
 * needs please refer to http://www.magento.com for more information.
 *
 * @category    Mage
 * @package     Mage_Catalog
 * @copyright  Copyright (c) 2006-2015 X.commerce, Inc. (http://www.magento.com)
 * @license    http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
 */

/**
 * Category View block
 *
 * @category   Mage
 * @package    Mage_Catalog
 * @author      Magento Core Team <core@magentocommerce.com>
 */
class Mage_Catalog_Block_Category_View extends Mage_Core_Block_Template
{
    protected function 
_prepareLayout()
    {
        
parent::_prepareLayout();

        
$this->getLayout()->createBlock('catalog/breadcrumbs');

        if (
$headBlock $this->getLayout()->getBlock('head')) {
            
$category $this->getCurrentCategory();
            if (
$title $category->getMetaTitle()) {
                
$headBlock->setTitle($title);
            }
            if (
$description $category->getMetaDescription()) {
                
$headBlock->setDescription($description);
            }
            if (
$keywords $category->getMetaKeywords()) {
                
$headBlock->setKeywords($keywords);
            }
            if (
$this->helper('catalog/category')->canUseCanonicalTag()) {
                
$headBlock->addLinkRel('canonical'$category->getUrl());
            }
            
/*
            want to show rss feed in the url
            */
            
if ($this->IsRssCatalogEnable() && $this->IsTopCategory()) {
                
$title $this->helper('rss')->__('%s RSS Feed',$this->getCurrentCategory()->getName());
                
$headBlock->addItem('rss'$this->getRssLink(), 'title="'.$title.'"');
            }
        }

        return 
$this;
    }

    public function 
IsRssCatalogEnable()
    {
        return 
Mage::getStoreConfig('rss/catalog/category');
    }

    public function 
IsTopCategory()
    {
        return 
$this->getCurrentCategory()->getLevel()==2;
    }

    public function 
getRssLink()
    {
        return 
Mage::getUrl('rss/catalog/category',
            array(
                
'cid' => $this->getCurrentCategory()->getId(),
                
'store_id' => Mage::app()->getStore()->getId()
            )
        );
    }

    public function 
getProductListHtml()
    {
        return 
$this->getChildHtml('product_list');
    }

    
/**
     * Retrieve current category model object
     *
     * @return Mage_Catalog_Model_Category
     */
    
public function getCurrentCategory()
    {
        if (!
$this->hasData('current_category')) {
            
$this->setData('current_category'Mage::registry('current_category'));
        }
        return 
$this->getData('current_category');
    }

    public function 
getCmsBlockHtml()
    {
        if (!
$this->getData('cms_block_html')) {
            
$html $this->getLayout()->createBlock('cms/block')
                ->
setBlockId($this->getCurrentCategory()->getLandingPage())
                ->
toHtml();
            
$this->setData('cms_block_html'$html);
        }
        return 
$this->getData('cms_block_html');
    }

    
/**
     * Check if category display mode is "Products Only"
     * @return bool
     */
    
public function isProductMode()
    {
        return 
$this->getCurrentCategory()->getDisplayMode()==Mage_Catalog_Model_Category::DM_PRODUCT;
    }

    
/**
     * Check if category display mode is "Static Block and Products"
     * @return bool
     */
    
public function isMixedMode()
    {
        return 
$this->getCurrentCategory()->getDisplayMode()==Mage_Catalog_Model_Category::DM_MIXED;
    }

    
/**
     * Check if category display mode is "Static Block Only"
     * For anchor category with applied filter Static Block Only mode not allowed
     *
     * @return bool
     */
    
public function isContentMode()
    {
        
$category $this->getCurrentCategory();
        
$res false;
        if (
$category->getDisplayMode()==Mage_Catalog_Model_Category::DM_PAGE) {
            
$res true;
            if (
$category->getIsAnchor()) {
                
$state Mage::getSingleton('catalog/layer')->getState();
                if (
$state && $state->getFilters()) {
                    
$res false;
                }
            }
        }
        return 
$res;
    }

    
/**
     * Retrieve block cache tags based on category
     *
     * @return array
     */
    
public function getCacheTags()
    {
        return 
array_merge(parent::getCacheTags(), $this->getCurrentCategory()->getCacheIdTags());
    }
}