X   Сообщение сайта
(Сообщение закроется через 2 секунды)

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> Добавление поддержки rel="canonical" в RC5
Loader
сообщение 2011-08-17, 16:08
Сообщение #1
Профессионал
Иконка группы

Группа: Eleanor user
Сообщений: 1 161
Регистрация: 2010-04-19

Репутация:   нет  
Всего: нет


В этой теме расскажу как добавить в RC5 поддержку этого очень нужного тега, ведь система позволяет генерировать много дублей одной страницы.
Во-первых откроем свой файл classes/mainclass.php, найдём строку примерно 202 и после строки
Цитата
$site_path='',#Ч. Каталог сайта
добавим строку
Цитата
$origurl=null,# нужен для поддержки rel="canonical"

Во-вторых открываем файл index.php в корне сайта ищем сроку примерно 253 и после     
Цитата
.(isset($head_addon) ? "\r\n".$head_addon."\r\n" : '');
добавляем:
Цитата
#Если модулем задан оригинальный URL страницы, сравним его с полученным
            if(isset($Mainclass->origurl))
            {
                $u=$Mainclass->origurl;
                $ru=ELEANOR_PROTOCOL.$Mainclass->domain.$Mainclass->site_path.$_SERVER['REQUEST_URI'];
                if(ELEANOR_CHARSET!='utf-8')
                {
                    $u=mb_convert_encoding($u,ELEANOR_CHARSET,'utf-8');
                    $ru=mb_convert_encoding($ru,ELEANOR_CHARSET,'utf-8');
                }
                if($u!=$ru)
                    $head.='<link rel="canonical" href="'.$u.'" />'."\r\n";
            }


Теперь нам осталось в нужном месте сообщить системе оригинальный урл для поисковиков.
Для модуля новости это будет выглядеть так: открываем файл news/user/index.php и после строки 540 перед Head(); вставляем:


Цитата
#Сообщим оригинальный URL страницы
$link=ELEANOR_PROTOCOL.$Mainclass->domain.$Mainclass->site_path.$Mainclass->vars['url_static_delimeter'].($Mainclass->vars['m_news_long_url'] ? $Mainclass->Categories_l->CategoryUrl($arr['main_cat'],'','',false) : '').$Mainclass->Url->ConstructUrl(array(array($arr['url'],'nid'=>$arr['id'])),!$Mainclass->vars['m_news_long_url']);

$Mainclass->origurl=$link;


Вот на этом всё. Добавить этот тэг можно в любой модуль, нужно только сообщать системе оригинальный УРЛ.


Сообщение отредактировал Loader - 2011-08-19, 8:12
Перейти в начало страницы
+Цитировать сообщение
mrdimshop
сообщение 2011-08-17, 16:56
Сообщение #2
Любитель
Иконка группы

Группа: Eleanor user
Сообщений: 111
Регистрация: 2011-03-17

Репутация:   нет  
Всего: нет


Можно пример. И для чего это нужно что то я не понял.
Перейти в начало страницы
+Цитировать сообщение
Loader
сообщение 2011-08-17, 20:25
Сообщение #3
Профессионал
Иконка группы

Группа: Eleanor user
Сообщений: 1 161
Регистрация: 2010-04-19

Репутация:   нет  
Всего: нет


Цитата (mrdimshop @ 2024-03-28 19:11)
Можно пример. И для чего это нужно что то я не понял.

Вот для чего: http://forum.eleanor-cms.ru/index.php?showtopic=300
Перейти в начало страницы
+Цитировать сообщение
mrdimshop
сообщение 2011-08-18, 6:43
Сообщение #4
Любитель
Иконка группы

Группа: Eleanor user
Сообщений: 111
Регистрация: 2011-03-17

Репутация:   нет  
Всего: нет


Добавляю #Сообщим оригинальный URL страницы
$link=ELEANOR_PROTOCOL.$Mainclass->domain.$Mainclass->site_path.$Mainclass->vars['url_static_delimeter']</span>.($Mainclass->vars['m_news_long_url'] ? $Mainclass->Categories_l->CategoryUrl($arr['main_cat'],'','',false) : '').$Mainclass->Url->ConstructUrl(array(array($arr['url'],'nid'=>$arr['id'])),!$Mainclass->vars['m_news_long_url']);

$Mainclass->origurl=$link;


контент сайта пропадает. новерно потому что у меня не ньюс а serialy. Подправь пожалуйста для меня.
Перейти в начало страницы
+Цитировать сообщение
Djadka
сообщение 2011-08-18, 13:12
Сообщение #5
Любитель
Иконка группы

Группа: Eleanor user
Сообщений: 463
Регистрация: 2010-10-17

Репутация:   нет  
Всего: нет


Цитата (mrdimshop @ 2011-08-18, 7:43)
Добавляю #Сообщим оригинальный URL страницы
$link=ELEANOR_PROTOCOL.$Mainclass->domain.$Mainclass->site_path.$Mainclass->vars['url_static_delimeter</span>']</span>.($Mainclass->vars['m_news_long_url'] ? $Mainclass->Categories_l->CategoryUrl($arr['main_cat'],'','',false) : '').$Mainclass->Url->ConstructUrl(array(array($arr['url'],'nid'=>$arr['id'])),!$Mainclass->vars['m_news_long_url']);

$Mainclass->origurl=$link;


контент сайта пропадает. новерно потому что у меня не ньюс а serialy. Подправь пожалуйста для меня.

$link=ELEANOR_PROTOCOL.$Mainclass->domain.$Mainclass->site_path.$Mainclass->vars['url_static_delimeter']</span>.($Mainclass->vars['m_news_long_url'] ? $Mainclass->Categories_l->CategoryUrl($arr['main_cat'],'','',false) : '').$Mainclass->Url->ConstructUrl(array(array($arr['url'],'nid'=>$arr['id'])),!$Mainclass->vars['m_news_long_url']);


</span> удалить надо
Перейти в начало страницы
+Цитировать сообщение
mrdimshop
сообщение 2011-08-18, 17:38
Сообщение #6
Любитель
Иконка группы

Группа: Eleanor user
Сообщений: 111
Регистрация: 2011-03-17

Репутация:   нет  
Всего: нет


Удалил все ровно не получилось.
Перейти в начало страницы
+Цитировать сообщение
Djadka
сообщение 2011-08-18, 17:43
Сообщение #7
Любитель
Иконка группы

Группа: Eleanor user
Сообщений: 463
Регистрация: 2010-10-17

Репутация:   нет  
Всего: нет


А чё пишет?
Перейти в начало страницы
+Цитировать сообщение
mrdimshop
сообщение 2011-08-18, 17:51
Сообщение #8
Любитель
Иконка группы

Группа: Eleanor user
Сообщений: 111
Регистрация: 2011-03-17

Репутация:   нет  
Всего: нет


Цитата (Djadka @ 2011-08-18, 17:43)
А чё пишет?


На главной у меня выводятся новости а как встовляю код все остается на месте а новости пропадают.
Перейти в начало страницы
+Цитировать сообщение
Djadka
сообщение 2011-08-18, 18:03
Сообщение #9
Любитель
Иконка группы

Группа: Eleanor user
Сообщений: 463
Регистрация: 2010-10-17

Репутация:   нет  
Всего: нет


Печалька, видать отключено оповещение об ошибках
Перейти в начало страницы
+Цитировать сообщение
mrdimshop
сообщение 2011-08-18, 18:35
Сообщение #10
Любитель
Иконка группы

Группа: Eleanor user
Сообщений: 111
Регистрация: 2011-03-17

Репутация:   нет  
Всего: нет


Цитата (Djadka @ 2011-08-18, 18:03)
Печалька, видать отключено оповещение об ошибках


Зайди в асю я тебе свой файл кину может наколдуешь мне решение. :rolleyes:
Перейти в начало страницы
+Цитировать сообщение
Djadka
сообщение 2011-08-18, 18:42
Сообщение #11
Любитель
Иконка группы

Группа: Eleanor user
Сообщений: 463
Регистрация: 2010-10-17

Репутация:   нет  
Всего: нет


39пять820трипятьпять
Перейти в начало страницы
+Цитировать сообщение
mrdimshop
сообщение 2011-08-18, 19:10
Сообщение #12
Любитель
Иконка группы

Группа: Eleanor user
Сообщений: 111
Регистрация: 2011-03-17

Репутация:   нет  
Всего: нет


Цитата (Djadka @ 2011-08-18, 18:42)
39пять820трипятьпять


Спасибо работает.
Перейти в начало страницы
+Цитировать сообщение
Loader
сообщение 2011-08-19, 8:21
Сообщение #13
Профессионал
Иконка группы

Группа: Eleanor user
Сообщений: 1 161
Регистрация: 2010-04-19

Репутация:   нет  
Всего: нет


Цитата (mrdimshop @ 2024-03-28 19:11)
контент сайта пропадает.

Цитата (Djadka @ 2024-03-28 19:11)
</span> удалить надо

Я извиняюсь за SPAN , просто при редактировании этот форум пихает этот спан по своему усмотрению куда надо и не надо!

Теперь продолжим: исключение дублей главной страницы:

Открываем файл modules/mainpage/user/index.php и перед Head(); вставим:
Цитата
#Сообщим оригинальный URL страницы
        $Mainclass->origurl=ELEANOR_PROTOCOL.$Mainclass->domain.$Mainclass->site_path.$Mainclass->vars['url_static_delimeter'];

Теперь все дубли главной, такие как site/index.html или site/index.php будут содержать тэг
Цитата
<link rel="canonical" href="http://site/" />
Перейти в начало страницы
+Цитировать сообщение
Loader
сообщение 2011-08-22, 21:42
Сообщение #14
Профессионал
Иконка группы

Группа: Eleanor user
Сообщений: 1 161
Регистрация: 2010-04-19

Репутация:   нет  
Всего: нет


Добавление поддержки rel="canonical" в любой модуль, использующий страницы (pages), а практически все модули их используют.

Открываем файл ваш_сайт/classes/class_strings.php и примерно на 496 строке после
Цитата
$links=str_ireplace('%7Bpage%7D','{page}',$links);
вставим это:
Цитата
//Сообщим оригинальный URL страницы
if (is_array($link_arr))
$Mainclass->origurl=ELEANOR_PROTOCOL.$Mainclass->domain.$Mainclass->site_path.$Mainclass->vars['url_static_delimeter'].$Mainclass->Url->ConstructUrl(array_merge($link_arr,array(array('page'=>empty($_GET['page']) ? false : (int)$_GET['page']))));
// end
                

Теперь практически во всех модулях поддерживается этот нужный тэг! :crazy:

Перейти в начало страницы
+Цитировать сообщение

Ответить в данную темуНачать новую тему
0 чел. читают эту тему (гостей: 0, скрытых пользователей: 0)
Пользователей: 0

 
RSS Текстовая версия 0.0345 сек.    11 запросов    GZIP включен    Сейчас: 2024-03-28, 19:11