0 Пользователей и 1 Гость просматривают эту тему.
  • 14 Ответов
  • 12307 Просмотров
*

AmdAveO

  • Осваиваюсь на форуме
  • 167
  • 40
Что такое каноническая страница? Зачем нужно указывать rel="canonical"?
Спойлер
[свернуть]

Сегодня в первый раз открыл для себя Joomla 3.х (сказывается отсутствие времени). Подтолкнула меня к этому Taatshi.

Вобщем поставил себе тестовую версию тройки и понял, что незря отношусь с недоверием к разного рода плагинам.
В этой версии Joomla добавлена генерация ссылки canonical при помощи системного sef-плагина.
Похвальное начинание НО, результат плачевный. Во всех тестовых материалах, где я нашел ссылку canonical, была прописана ссылка на раздел материала, а не на сам материал.
В плане поисковой оптимизации это тихий ужас. Поисковики просто выкинут страницы материалов и оставят в индексе только страницы разделов. (Если конечно я в этом что-то понимаю)

Насколько я знаю, эта ошибка уже упомянута в багтрекере разработчиков, и однажды будет исправлена.
А пока суд да дело, я решил использовать проверенный на предыдущих версиях способ генерации canonical в шаблонах материалов, и поделиться с теми, кому это пригодится.
Тем более, что шаблоны мало зависят от обновлений с последующими сюрпризами.

Приступим.

Ссылка Canonical для главной страницы.
Внимание! Этот шаг не обязателен. Его можно использовать если на главной странице используется стандартный компонент материалов com_content.
Открываем файл templates/МОЙ ШАБЛОН/index.php
Спойлер
[свернуть]

Ссылка Canonical для страниц компонента материалов (com_content)
Открываем файл templates/МОЙ ШАБЛОН/html/com_content/archive/default.php
Спойлер
[свернуть]

Открываем файл templates/МОЙ ШАБЛОН/html/com_content/article/default.php
Спойлер
[свернуть]

Открываем файл templates/МОЙ ШАБЛОН/html/com_content/categories/default.php
Спойлер
[свернуть]

Открываем файл templates/МОЙ ШАБЛОН/html/com_content/category/blog.php
Спойлер
[свернуть]

Открываем файл templates/МОЙ ШАБЛОН/html/com_content/category/default.php
Спойлер
[свернуть]

Открываем файл templates/МОЙ ШАБЛОН/html/com_content/featured/default.php
Спойлер
[свернуть]

//------------------------------------------------------------------------------------------------------------------------------------------//

Для тех у кого нет файлов-шаблонов в templates/МОЙ ШАБЛОН/html/com_content/ и они не знают где их взять
Спойлер
[свернуть]

Не забываем!
1. Следить за обновлениями поста. Возможны правки!
2. Нашли ошибку? Пишите сюда, попробуем разобраться.
3. При обновлении заменяем весь код находящийся между строками
Код
// ------------ Start Canonical-Mod
и
Код
// ------------ End Canonical-Mod
« Последнее редактирование: 25.10.2012, 22:09:16 от AmdAveO »
Просить не буду! Сами дадите, когда совесть замучает. R336340187313
*

Taatshi

  • Support Team
  • 4803
  • 453
  • Верстаем и немножко кодим. Обращайтесь ;)
Артур, ты забыл написать, как избавляться от родного rel canonical

У новичков могут возникать вопросы по этому поводу.
ВЕРСТКА, САЙТЫ ПОД КЛЮЧ, УДАЛЕНИЕ ВИРУСОВ, МИГРАЦИЯ НА JOOMLA 3  /  ОТЗЫВЫ 
Минимальная ставка за платные услуги 1000 рэ Связь: telegram - Taatshi, почта - Taatshi на яндексе.
*

AmdAveO

  • Осваиваюсь на форуме
  • 167
  • 40
Лена, родной canonical сбрасывается автоматом.
Эти строки в коде
Код
	// Удаляем ссылку каноникал добавленную системным sef-плагином
foreach (JFactory::getDocument()->_links as $key=>$link) {
if (($link['relation'] == 'canonical')) {
unset(JFactory::getDocument()->_links[$key]);
break;
}
}

Цитата: frisian
1. как бы ничего что даже разработчики не рекомендуют сейчас использовать Joomla 3 на боевых проэктах?
Да как бы и ничего. Только зачем тогда в народ выкладывать, да еще релизом называть?
Или ты тут в защитников решил поиграть? Только я не прокурор. ::)

Цитата: frisian
2. Почему не написать свой плагин? зачем столько лишних телодвижений?
За чем дело стало? Пиши свой плагин и не будет лишних телодвижений. ;)
Просить не буду! Сами дадите, когда совесть замучает. R336340187313
*

Fedor Vlasenko

  • Профи
  • 3806
  • 698
  • Все начинается с Value
AmdAveO Ссылка Canonical для главной страницы
JSite::getMenu()->getActive() == JSite::getMenu()->getDefault()
Правильно так:
JSite::getMenu()->getActive()->id == JSite::getMenu()->getDefault()->id
и опять же это частный случай. если ссылка будет формироваться с использованием  query строки то и контент может быть разный. И не обязательно материалом. Мы же данному контенту, может быть совсем разному и не связанному задаем canonical
Далее $docstart = JRequest::getInt('start',0);
А если не start. Компоненты разные бывают и могут использовать разную пагинацию. Вместо JRequest следует мне кажется использовать JInput
$doc->addHeadLink($link, 'canonical'); И плагин тогда стоит отключать родной.
Без каких либо обид. Но плагин здесь уместнее. А делать смысла нет. Разработчики надеюсь сами исправят
*

AmdAveO

  • Осваиваюсь на форуме
  • 167
  • 40
frisian, тут как бы два варианта развития событий
1. Тебе оно надо и ты берешь.
2. Тебе оно НЕ надо и ты НЕ берешь.
Как я вижу с выбором у тебя проблем не возникло. Так в чем еще проблемы, у тебя что-то отобрали?

Poznakomlus
Конструктивно.
Можно с id, можно и без. Хотя согласен, с id будет более правильно.
В JInput не вижу особой выгоды. А она есть?
Да, по поводу пагинатора на главной тоже думал, но поскольку речь идет о родном компоненте материалов Joomla, решил его оставить.
Сделаю пометку о других компонентах.

Еще раз о плагине.
1. Он уже есть. Его исправление это вопрос времени.
2. Плагины зависят от приоритета их исполнения. Сдается мне, что это и есть причина косяка в родном плагине. Хотя, могу и ошибаться.
3. Не известно как поведет себя такой плагин с другими компонентами. Не появится ли например в ZOO, две разных ссылки canonical?

Вобщем, у кого есть желание и время, делайте плагин, или дорабатывайте уже имеющийся. Я всегда за!
Только пустословием заниматься не стоит.
Просить не буду! Сами дадите, когда совесть замучает. R336340187313
*

Langoliers

  • Завсегдатай
  • 695
  • 65
  • Если б Я изучал людей, то был бы паразитологом
Большое спасибо! А то у меня пять страниц из индекса выпало, и хоть Я их добавил в вебмастере снова, вовсе убрав rel="canonical" из плагина, восстанавливаются они уже неделю. Такое ощущение, что Яндекс вообще в последнее время работать не хочет.
frisian, ну так напишите плагин, чего хейтера включаете то? Или скажите как родной исправить. Человек в любом случае старался, так что по моему тут не оскорблять надо, а скорее (если это нужно) поправить.
*

AmdAveO

  • Осваиваюсь на форуме
  • 167
  • 40
Из всего написанного тобой, я пока вижу толк только в этом
Цитата: frisian
ну кроме того что скоро JRequest вообще будет удален наверно выгоды нет..
За что тебе огромное спасибо!
Каюсь, я не живу в багтрекере Joomla, и не слежу за их новостями. Как-то вот так сложилось.

Есть еще толковые предложения?
« Последнее редактирование: 24.10.2012, 22:35:13 от ELLE »
Просить не буду! Сами дадите, когда совесть замучает. R336340187313
*

Fedor Vlasenko

  • Профи
  • 3806
  • 698
  • Все начинается с Value
frisian не горячись. Веришь я здесь усмотрел применение твоей строчки кода
if(JMenuSite::getInstance('site')->getActive()->home) здесь наверно ей самое место для первого случая
*

AmdAveO

  • Осваиваюсь на форуме
  • 167
  • 40
Poznakomlus
Уверен, что все пользователи используют "home" в качестве алиаса для главной страницы? Я встречал и другие.
Или тут "JMenuSite::getInstance('site')->getActive()->home" не спрашивается алиас?
Может всетаки тут подсмотреть?
« Последнее редактирование: 25.10.2012, 13:25:28 от AmdAveO »
Просить не буду! Сами дадите, когда совесть замучает. R336340187313
*

AmdAveO

  • Осваиваюсь на форуме
  • 167
  • 40
Цитата: Poznakomlus
AmdAveO смотрите FAQ форума Joomla 2.5 - проверка на главную страницу
Уже смотрел. Правда не увидел пока причины того, почему это if ($menu->getActive()!= $menu->getDefault()) не работает.
Я сейчас говорю не о том, что лучше, а о том, в каких случаях оно не работает. Кручу это условие на локале и проблемы пока не встретил.

Цитата: Poznakomlus
AmdAveO смотрите FAQ форума Joomla 2.5 - проверка на главную страницу
кто сказал, что это алиас <?php echo '<pre>'.var_dump(JMenuSite::getInstance('site')->getActive()).'</pre>'; ?>
Никто не сказал. Я спросил.

Цитата: Poznakomlus
техническая информация которую вы привели не актуальная
Это просто утверждение или факт?

Цитата: Poznakomlus
ну и вы должны понимать, что вам не главная нужна а все страницы которые "цепляются" к активному меню главной
Стал бы я спрашивать про алиас не понимая этого?

Не имеет абсолютно никакого смысла. Хозяин сайта сам должен решать какой странице добавить тег (на подобии description)
Абсолютно не согласен с этим.
Я знаю с десяток авторов которых абсолютно не волнует техническая сторона работы.
Некоторых не заставишь и description прописать, а не то чтобы еще делать выбор ссылки canonical.
Тут просто нужно сделать возможным выбор подключения/отключения canonical в плагине.
Просить не буду! Сами дадите, когда совесть замучает. R336340187313
*

Fedor Vlasenko

  • Профи
  • 3806
  • 698
  • Все начинается с Value
Наверно стоит объяснить почему порнография.
1. С каких таких побуждений мы привязываем ссылки к меню
2. Может стоит посмотреть в меню как ссылки формируются. Найди 3 отличия
Открываем файл templates/МОЙ ШАБЛОН/html/com_content/categories/default.php
...
JFactory::getDocument()->addHeadLink('http://' . $_SERVER['SERVER_NAME'] . JRoute::_(ContentHelperRoute::getCategoryRoute($this->parent->id)). $docpagenr, 'canonical', 'rel', '');
...
Открываем файл templates/МОЙ ШАБЛОН/html/com_content/category/blog.php
...
JFactory::getDocument()->addHeadLink('http://' . $_SERVER['SERVER_NAME'] . JRoute::_(ContentHelperRoute::getCategoryRoute($this->category->id)). $docpagenr, 'canonical', 'rel', '');
...
Открываем файл templates/МОЙ ШАБЛОН/html/com_content/category/default.php
...
JFactory::getDocument()->addHeadLink('http://' . $_SERVER['SERVER_NAME'] . JRoute::_(ContentHelperRoute::getCategoryRoute($this->category->id)). $docpagenr, 'canonical', 'rel', '');
*

AmdAveO

  • Осваиваюсь на форуме
  • 167
  • 40
Poznakomlus
Это объяснение или просто вопросы без вопросительных знаков?
Честно говоря, не понятна их цель.
Просить не буду! Сами дадите, когда совесть замучает. R336340187313
*

Fedor Vlasenko

  • Профи
  • 3806
  • 698
  • Все начинается с Value
это говорит о том, что вы привели решение совсем не понимая, что и о чем пишите
разберитесь для начала как формируются ссылки в Joomla потом выдавайте их за решения
Ссылка на документ может формироваться по разному.
Документ привязан к меню(ваш вариант). Категория/документ(ContentHelperRoute::getArticleRoute($id, $catid, $this->language);)? документ ('index.php?option=com_content&view=article&id='.$id)
Так вот, два последних варианта наиболее больше соответствуют каноническим ссылкам/ Но это никак не вариант сменю. Про категории уже написал выше
*

Taatshi

  • Support Team
  • 4803
  • 453
  • Верстаем и немножко кодим. Обращайтесь ;)
Poznakomlus, если у Вас есть лучший вариант - выложите его во всеобщее пользование. А так в Ваших постах я не вижу особого смысла. Мы все делаем как умеем - кто-то лучше, кто-то хуже... Но сидеть и критиковать уже готовую работу не имея в наличии альтернативного варианта - как-то не особо красиво получается.
ВЕРСТКА, САЙТЫ ПОД КЛЮЧ, УДАЛЕНИЕ ВИРУСОВ, МИГРАЦИЯ НА JOOMLA 3  /  ОТЗЫВЫ 
Минимальная ставка за платные услуги 1000 рэ Связь: telegram - Taatshi, почта - Taatshi на яндексе.
*

Fedor Vlasenko

  • Профи
  • 3806
  • 698
  • Все начинается с Value
Канонические ссылки для Joomla 3

Плагин специально повесил на событие onBeforeCompileHead, чтобы не отслеживать порядок размещения по отношению к системному. Он обрабатывает onAfterRoute() (системный). Присоединяйся, ведь плагин нужен будет всем. Конструктивная критика всегда приветствуется
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Вышел релиз безопасности Joomla! 3.8.0

Автор b2z

Ответов: 114
Просмотров: 1682
Последний ответ Сегодня в 08:33:54
от dmitry_stas
Joomla не находит сайт для установки и обновлений

Автор neo_kovalsky

Ответов: 43
Просмотров: 291
Последний ответ 21.09.2017, 09:09:32
от SeBun
Вышел релиз безопасности Joomla! 3.7.4 / релиз 3.7.5

Автор b2z

Ответов: 26
Просмотров: 1156
Последний ответ 19.09.2017, 17:58:07
от b2z
Как включить русский язык в админке Joomla 3.7.5?

Автор megakott

Ответов: 1
Просмотров: 44
Последний ответ 19.09.2017, 12:45:16
от NewUsers
Joomla 3, MS SQL Server, IIS - возможно ли\?

Автор quake3

Ответов: 6
Просмотров: 123
Последний ответ 12.09.2017, 14:23:20
от capricorn