/** * Возвращает сео-данные для текущей страницы * * Возвращает объект с методами: * 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; }