From ee292a0a6894718e8de47da6064f3be3ceae8cd4 Mon Sep 17 00:00:00 2001 From: Aleksander Palyan Date: Wed, 22 Jul 2015 21:57:51 +0300 Subject: [PATCH 1/2] MO : Blocklanguages : Add tag link with hreflang attribute as described on https://support.google.com/webmasters/answer/189077 --- blocklanguages-header.tpl | 10 ++++++++ blocklanguages.php | 52 ++++++++++++++++++++++----------------- 2 files changed, 39 insertions(+), 23 deletions(-) create mode 100644 blocklanguages-header.tpl diff --git a/blocklanguages-header.tpl b/blocklanguages-header.tpl new file mode 100644 index 0000000..d0fdb3d --- /dev/null +++ b/blocklanguages-header.tpl @@ -0,0 +1,10 @@ +{foreach from=$languages key=k item=language name="languages"} + {if $language.iso_code != $lang_iso} + {assign var=indice_lang value=$language.id_lang} + {if isset($lang_rewrite_urls.$indice_lang)} + + {else} + + {/if} + {/if} +{/foreach} diff --git a/blocklanguages.php b/blocklanguages.php index 02031b6..28c3a9a 100644 --- a/blocklanguages.php +++ b/blocklanguages.php @@ -51,37 +51,40 @@ public function install() protected function _prepareHook($params) { + static $default_rewrite; $languages = Language::getLanguages(true, $this->context->shop->id); if (!count($languages)) return false; - $link = new Link(); - if ((int)Configuration::get('PS_REWRITING_SETTINGS')) { - $default_rewrite = array(); - if (Dispatcher::getInstance()->getController() == 'product' && ($id_product = (int)Tools::getValue('id_product'))) - { - $rewrite_infos = Product::getUrlRewriteInformations((int)$id_product); - foreach ($rewrite_infos as $infos) - $default_rewrite[$infos['id_lang']] = $link->getProductLink((int)$id_product, $infos['link_rewrite'], $infos['category_rewrite'], $infos['ean13'], (int)$infos['id_lang']); - } + if (!is_array($default_rewrite)) { + $link = new Link(); - if (Dispatcher::getInstance()->getController() == 'category' && ($id_category = (int)Tools::getValue('id_category'))) - { - $rewrite_infos = Category::getUrlRewriteInformations((int)$id_category); - foreach ($rewrite_infos as $infos) - $default_rewrite[$infos['id_lang']] = $link->getCategoryLink((int)$id_category, $infos['link_rewrite'], $infos['id_lang']); - } + $default_rewrite = array(); + if (Dispatcher::getInstance()->getController() == 'product' && ($id_product = (int)Tools::getValue('id_product'))) + { + $rewrite_infos = Product::getUrlRewriteInformations((int)$id_product); + foreach ($rewrite_infos as $infos) + $default_rewrite[$infos['id_lang']] = $link->getProductLink((int)$id_product, $infos['link_rewrite'], $infos['category_rewrite'], $infos['ean13'], (int)$infos['id_lang']); + } - if (Dispatcher::getInstance()->getController() == 'cms' && (($id_cms = (int)Tools::getValue('id_cms')) || ($id_cms_category = (int)Tools::getValue('id_cms_category')))) - { - $rewrite_infos = (isset($id_cms) && !isset($id_cms_category)) ? CMS::getUrlRewriteInformations($id_cms) : CMSCategory::getUrlRewriteInformations($id_cms_category); - foreach ($rewrite_infos as $infos) + if (Dispatcher::getInstance()->getController() == 'category' && ($id_category = (int)Tools::getValue('id_category'))) { - $arr_link = (isset($id_cms) && !isset($id_cms_category)) ? - $link->getCMSLink($id_cms, $infos['link_rewrite'], null, $infos['id_lang']) : - $link->getCMSCategoryLink($id_cms_category, $infos['link_rewrite'], $infos['id_lang']); - $default_rewrite[$infos['id_lang']] = $arr_link; + $rewrite_infos = Category::getUrlRewriteInformations((int)$id_category); + foreach ($rewrite_infos as $infos) + $default_rewrite[$infos['id_lang']] = $link->getCategoryLink((int)$id_category, $infos['link_rewrite'], $infos['id_lang']); + } + + if (Dispatcher::getInstance()->getController() == 'cms' && (($id_cms = (int)Tools::getValue('id_cms')) || ($id_cms_category = (int)Tools::getValue('id_cms_category')))) + { + $rewrite_infos = (isset($id_cms) && !isset($id_cms_category)) ? CMS::getUrlRewriteInformations($id_cms) : CMSCategory::getUrlRewriteInformations($id_cms_category); + foreach ($rewrite_infos as $infos) + { + $arr_link = (isset($id_cms) && !isset($id_cms_category)) ? + $link->getCMSLink($id_cms, $infos['link_rewrite'], null, $infos['id_lang']) : + $link->getCMSCategoryLink($id_cms_category, $infos['link_rewrite'], $infos['id_lang']); + $default_rewrite[$infos['id_lang']] = $arr_link; + } } } $this->smarty->assign('lang_rewrite_urls', $default_rewrite); @@ -111,6 +114,9 @@ public function hookDisplayNav($params) public function hookDisplayHeader($params) { $this->context->controller->addCSS($this->_path.'blocklanguages.css', 'all'); + if (!$this->_prepareHook($params)) + return; + return $this->display(__FILE__, 'blocklanguages-header.tpl'); } } From 019e1206c556dc331074f0da54a75a144fdea937 Mon Sep 17 00:00:00 2001 From: Aleksandr Palyan Date: Fri, 27 May 2016 22:18:12 +0300 Subject: [PATCH 2/2] change to "positive" logic --- blocklanguages.php | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/blocklanguages.php b/blocklanguages.php index 28c3a9a..e571230 100644 --- a/blocklanguages.php +++ b/blocklanguages.php @@ -100,9 +100,9 @@ protected function _prepareHook($params) */ public function hookDisplayTop($params) { - if (!$this->_prepareHook($params)) - return; - return $this->display(__FILE__, 'blocklanguages.tpl'); + if ($this->_prepareHook($params)) { + return $this->display(__FILE__, 'blocklanguages.tpl'); + } } public function hookDisplayNav($params) @@ -114,9 +114,9 @@ public function hookDisplayNav($params) public function hookDisplayHeader($params) { $this->context->controller->addCSS($this->_path.'blocklanguages.css', 'all'); - if (!$this->_prepareHook($params)) - return; - return $this->display(__FILE__, 'blocklanguages-header.tpl'); + if ($this->_prepareHook($params)) { + return $this->display(__FILE__, 'blocklanguages-header.tpl'); + } } }