Page 1 of 2

Дубли страниц новостей.

Posted: Fri Nov 30, 2012 4:36 pm
by dma
Здравствуйте!
Подскажите пожалуйста, можно ли как нибудь избавиться от дублирования страниц в модуле "Новости"
/news/3/68/pervye-otkrytye-debaty-svetodiody-za-i-protiv.html
и
/news/3/70/pervye-otkrytye-debaty-svetodiody-za-i-protiv.html
одно и тоже.

Спасибо!

Re: Дубли страниц новостей.

Posted: Fri Nov 30, 2012 5:01 pm
by guro
Во первых, установите шаблон по умолчанию для раскрытия новости - "Контент" => "Новости" => "Опции" => "Настройки показа полного текста новости" => "Страница по умолчанию для полного текста новости:"

Во вторых, откуда у вас эти две ссылки? На сайте они у вас есть? (не всмысле "можно перейти", а в смысле "где они присутствуют в html коде")

И в третьих, поисковики их уже проиндексировали?

Re: Дубли страниц новостей.

Posted: Fri Nov 30, 2012 7:47 pm
by dma
В том то и дело, что я не знаю откуда берутся данные ссылки!
Это я нашел в индексе Яндекса.
На сайте же ссылки выглядят иначе:
/news/3/64/pervye-otkrytye-debaty-svetodiody-za-i-protiv.html
это на странице с новостями.
/news/3/64/pervye-otkrytye-debaty-svetodiody-za-i-protiv.html
а это на главной странице в блоке новостей.
Почему везде разные ссылки и так на всех сайтах под этой ЦМС!
Шаблон стоит по умолчанию.

Re: Дубли страниц новостей.

Posted: Wed Dec 05, 2012 3:13 am
by guro
С модулем новостей, действительно, имеются проблемы в плане уникальности url.
Разберем сам урл:

Code: Select all

/news/3/64/pervye-otkrytye-debaty-svetodiody-za-i-protiv.html
news - зарезервированое (зашитое в код) слово;
3 - id новости;
64 - id страницы, у которой будет взят глобальный шаблон для раскрытия новости;
pervye-otkrytye-debaty-svetodiody-za-i-protiv.html - alias новости. Нигде не хранится. Формируется налету в момент просмотра сайта. Нельзя поменять.
В итоге:
1. news - не поменять;
2. id новости - уникально для каждой новости, так же как и alias новости.
3. id страницы для раскрытия новости - можно зафиксировать указав в настройках модуля News параметр - "Страница по умолчанию для полного текста новости:" и убрав в вызовах модуля detailpage=""

Есть ещё один вариант:
1. Создаем тег пользователя "update_news_url" следующего содержания

Code: Select all

global $gCms;
$db = $gCms->GetDb();
if ( !isset($params['news_url']) || $params['news_url'] == '' ) {
  $news_url = 'news/' . munge_string_to_url($params['title']) . '-' . $params['news_id'];
  $query = 'UPDATE ' . cms_db_prefix() . 'module_news SET news_url = ? WHERE news_id = ?';
  $db->Execute($query, array($news_url, $params['news_id']));
}
2. Подцепляем его для событий ("Pасширения" => "События" => "Фильтровать по модулю: News") "NewsArticleAdded" и "NewsArticleEdited".
Теперь при создании/изменении новости будет заполняться поле "Ссылка:" в новости. Эта ссылка будет использоваться для полного раскрытия новости.

PS
Ни один из этих способов не избавит вас от задвоенности (затроенности) url новости. Следует сделать 301 редиректы с не правильных урлов на новые и ждать пока яндекс переиндексирует ваши новости.

Re: Дубли страниц новостей.

Posted: Wed Dec 05, 2012 2:24 pm
by dma
Спасибо!

Я правильно понял?
Если сделать все как вы написали, то дублирование перестанет происходить, останется только заредиректить неправильные урлы новостей уже попавших в индекс?

Re: Дубли страниц новостей.

Posted: Wed Dec 05, 2012 3:45 pm
by guro
Да, всё верно.

Re: Дубли страниц новостей.

Posted: Fri Dec 07, 2012 1:05 pm
by dma
Спасибо всё работает!

Re: Дубли страниц новостей.

Posted: Tue Dec 18, 2012 3:42 pm
by dma
Здрасте!
Ещё вопросик в эту же тему)
Поставил новую ЦМС 1.11.4 “Fernandina”
Сделал как в инструкции, вроде все работает, только одно но!
урл меняет, но выдает 404 ошибку.
как мне быть в данной ситуации?
Спасибо!

Re: Дубли страниц новостей.

Posted: Tue Dec 18, 2012 3:43 pm
by dma
И ещё вопросик)))
Не распознает название месяца на русском языке(
Не подскажите как исправить?

Re: Дубли страниц новостей.

Posted: Tue Dec 18, 2012 4:20 pm
by guro
dma wrote:Поставил новую ЦМС 1.11.4 “Fernandina”
Сделал как в инструкции, вроде все работает, только одно но!
урл меняет, но выдает 404 ошибку.
как мне быть в данной ситуации?
Отключите тег и введите alias новости вручную. Будет работать?

Re: Дубли страниц новостей.

Posted: Tue Dec 18, 2012 4:21 pm
by guro
dma wrote:Не распознает название месяца на русском языке(
Где, кто, что значит не распознает?

Re: Дубли страниц новостей.

Posted: Tue Dec 18, 2012 9:39 pm
by dma
что бы было проще, скину сайт http://rus-sam.ru/

Re: Дубли страниц новостей.

Posted: Tue Dec 18, 2012 11:07 pm
by guro
dma wrote:Не распознает название месяца на русском языке(
http://forum.cmsmadesimple.org/viewtopi ... 27&t=63055

Re: Дубли страниц новостей.

Posted: Wed Dec 19, 2012 7:12 am
by dma
Отвязал тег от событий. ситуация не изменилась(
Что делать?

Re: Дубли страниц новостей.

Posted: Wed Dec 19, 2012 11:10 am
by guro
Для CMSMS 1.11.4 (видимо для всей линейки 1.11.х) тег будет выглядеть следующим образом

Code: Select all

global $gCms;
$db = $gCms->GetDb();
if ( !isset($params['news_url']) || $params['news_url'] == '' ) {
  $news_url = 'news/' . $params['news_id'] . '/' . munge_string_to_url($params['title']);
  $query = 'UPDATE ' . cms_db_prefix() . 'module_news SET news_url = ? WHERE news_id = ?';
  $db->Execute($query, array($news_url, $params['news_id']));
  news_admin_ops::delete_static_route($params['news_id']);
  news_admin_ops::register_static_route($news_url,$params['news_id']);
}