Example #1
0
 /**
  * Возвращает сео-данные для текущей страницы
  *
  * Возвращает объект с методами:
  * getTitle() - заголовок H1
  * getDescription() - SEO текст
  * getMetaTitle()
  * getMetaKeyword()
  * getMetaDescription()
  *
  * Если для данной страницы нет СЕО, то возвращает пустой Varien_Object
  *
  * @return Varien_Object $result
  */
 public function getCurrentSeo()
 {
     if (Mage::app()->getStore()->getCode() == 'admin') {
         return new Varien_Object();
     }
     $uid = Mage::helper('mstcore/debug')->start();
     $isCategory = Mage::registry('current_category') || Mage::registry('category');
     $isProduct = Mage::registry('current_product') || Mage::registry('product');
     $isFilter = false;
     if ($isCategory) {
         $filters = Mage::getSingleton('catalog/layer')->getState()->getFilters();
         $isFilter = count($filters) > 0;
     }
     if ($isProduct) {
         $seo = Mage::getSingleton('seo/object_product');
     } elseif ($isCategory && $isFilter) {
         $seo = Mage::getSingleton('seo/object_filter');
     } elseif ($isCategory) {
         $seo = Mage::getSingleton('seo/object_category');
     } else {
         $seo = new Varien_Object();
     }
     if ($seoTempalate = $this->checkTempalateRule($isProduct, $isCategory, $isFilter)) {
         foreach ($seoTempalate->getData() as $k => $v) {
             if ($v) {
                 $seo->setData($k, $v);
             }
         }
     }
     if ($seoRewrite = $this->checkRewrite()) {
         foreach ($seoRewrite->getData() as $k => $v) {
             if ($v) {
                 $seo->setData($k, $v);
             }
         }
     }
     $storeId = Mage::app()->getStore()->getStoreId();
     $page = Mage::app()->getFrontController()->getRequest()->getParam('p');
     if (!$page) {
         $page = 1;
     }
     if ($isCategory && !$isProduct) {
         if ($this->_titlePage) {
             switch ($this->_config->getMetaTitlePageNumber($storeId)) {
                 case Mirasvit_Seo_Model_Config::META_TITLE_PAGE_NUMBER_BEGIN:
                     if ($page > 1) {
                         $seo->setMetaTitle(Mage::helper('seo')->__("Page %s | %s", $page, $seo->getMetaTitle()));
                         $this->_titlePage = false;
                     }
                     break;
                 case Mirasvit_Seo_Model_Config::META_TITLE_PAGE_NUMBER_END:
                     if ($page > 1) {
                         $seo->setMetaTitle(Mage::helper('seo')->__("%s | Page %s", $seo->getMetaTitle(), $page));
                         $this->_titlePage = false;
                     }
                     break;
                 case Mirasvit_Seo_Model_Config::META_TITLE_PAGE_NUMBER_BEGIN_FIRST_PAGE:
                     $seo->setMetaTitle(Mage::helper('seo')->__("Page %s | %s", $page, $seo->getMetaTitle()));
                     $this->_titlePage = false;
                     break;
                 case Mirasvit_Seo_Model_Config::META_TITLE_PAGE_NUMBER_END_FIRST_PAGE:
                     $seo->setMetaTitle(Mage::helper('seo')->__("%s | Page %s", $seo->getMetaTitle(), $page));
                     $this->_titlePage = false;
                     break;
             }
         }
         if ($this->_descriptionPage) {
             switch ($this->_config->getMetaDescriptionPageNumber($storeId)) {
                 case Mirasvit_Seo_Model_Config::META_DESCRIPTION_PAGE_NUMBER_BEGIN:
                     if ($page > 1) {
                         $seo->setMetaDescription(Mage::helper('seo')->__("Page %s | %s", $page, $seo->getMetaDescription()));
                         $this->_descriptionPage = false;
                     }
                     break;
                 case Mirasvit_Seo_Model_Config::META_DESCRIPTION_PAGE_NUMBER_END:
                     if ($page > 1) {
                         $seo->setMetaDescription(Mage::helper('seo')->__("%s | Page %s", $seo->getMetaDescription(), $page));
                         $this->_descriptionPage = false;
                     }
                     break;
                 case Mirasvit_Seo_Model_Config::META_DESCRIPTION_PAGE_NUMBER_BEGIN_FIRST_PAGE:
                     $seo->setMetaDescription(Mage::helper('seo')->__("Page %s | %s", $page, $seo->getMetaDescription()));
                     $this->_descriptionPage = false;
                     break;
                 case Mirasvit_Seo_Model_Config::META_DESCRIPTION_PAGE_NUMBER_END_FIRST_PAGE:
                     $seo->setMetaDescription(Mage::helper('seo')->__("%s | Page %s", $seo->getMetaDescription(), $page));
                     $this->_descriptionPage = false;
                     break;
             }
         }
         if ($page > 1) {
             $seo->setDescription('');
             //set an empty description for page with number > 1 (to not have a duplicate content)
         }
     }
     if ($metaTitleMaxLength = $this->_config->getMetaTitleMaxLength($storeId)) {
         $metaTitleMaxLength = (int) $metaTitleMaxLength;
         if ($metaTitleMaxLength < Mirasvit_Seo_Model_Config::META_TITLE_INCORRECT_LENGTH) {
             $metaTitleMaxLength = Mirasvit_Seo_Model_Config::META_TITLE_MAX_LENGTH;
             //recommended length
         }
         $seo->setMetaTitle($this->_getTruncatedString($seo->getMetaTitle(), $metaTitleMaxLength, $page));
     }
     if ($metaDescriptionMaxLength = $this->_config->getMetaDescriptionMaxLength($storeId)) {
         $metaDescriptionMaxLength = (int) $metaDescriptionMaxLength;
         if ($metaDescriptionMaxLength < Mirasvit_Seo_Model_Config::META_DESCRIPTION_INCORRECT_LENGTH) {
             $metaDescriptionMaxLength = Mirasvit_Seo_Model_Config::META_DESCRIPTION_MAX_LENGTH;
             //recommended length
         }
         $seo->setMetaDescription($this->_getTruncatedString($seo->getMetaDescription(), $metaDescriptionMaxLength, $page));
     }
     Mage::helper('mstcore/debug')->end($uid, $seo->getData());
     return $seo;
 }