Некорректный rel="canonical" в категориях JoomShopping

  • 50 Ответов
  • 2585 Просмотров

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

Приветствую всех участников форума!

Версии CMS: Joomla 3.3.6 с последней версией JoomShopping, SEF стандартный Joomla
Категории и подкатегории JoomShopping выведены с помощью меню Joomla

Столкнулся со следующей проблемой. В категориях и подкатегориях JoomShopping наблюдаю следующую картину

Реальный URL категории мой-сайт/new-car,
а href каноникала выглядит так: мой-сайт/new-car?layout=category

То есть ко всем категориям JoomShopping в этот тег дописывается вот эта приставка ?layout=category
То есть по сути каноническая страница ссылается на другой URL, что может вызвать проблемы с поисковиками

Прошу помощи или совета где копать

Спасибо

*

Оффлайн dmitry_stas

сайт?
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций

Вот на этих страницах, например
Спойлер
[свернуть]

*

Оффлайн dmitry_stas

это пункты меню? если да - покажите как созданы.
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций

1. Сначала создан пункт меню JoomShopping Все категории или Магазин
2. Далее в компоненте JoomShopping созданы категории, прописаны алиасы
2. Потом создано меню Joomla и там созданы пункты категорий

 Тип пункта меню * - JoomShopping - Категория
 Категория ID * - проставляю ID категории

*

Оффлайн dmitry_stas

попробуйте для теста отключить все плагины группы jshopping и jshoppingcheckout. если поможет - то включайте по одному и смотрите что есть причиной
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций

*

Онлайн Biss

Тоже заметил, но у меня пункты меню не на категории а на производителей и добавлено ?layout=man

dmitry_stas спасибо, но к сожалению не помогло...

Что самое интересное в сайтах созданных на JoomShopping 4.6.0 Этой проблемы нет

А начиная с версии 4.8.1 и до актуальных версий проблема наблюдается

Возможно Joomla 3.3.6 SEF как то не согласован с роутером формирования ссылок JoomShopping выше 4.8.1

Ведь в старых версиях магазина при выводе его категорий в меню, на все типы пунктов меню была надпись "Товар" (в поле  "Тип пункта меню")
Теперь выводит правильно: Категория, Корзина и т.п.

Biss,  *DRINK*

Хорошо, что я не один с такой проблемой тут, может вместе что-то и решим

*

Онлайн Biss

это не в плагинах дело. у меня на демо нет сторонних плагинов а каноникал прописывается тоже с layout=
Цитировать
Возможно Joomla 3.3.6 SEF как то не согласован с роутером формирования ссылок JoomShopping выше 4.8.1

Ведь в старых версиях магазина при выводе его категорий в меню, на все типы пунктов меню была надпись "Товар" (в поле  "Тип пункта меню")
Теперь выводит правильно: Категория, Корзина и т.п.
в этом что-то есть
« Последнее редактирование: 10.02.2015, 15:48:51 от Biss »

Просто для поисковиков это проблема, как по мне очень серьезная.

Страницы категорий (а это как правило ВЧ и СЧ запросы) получаются неканоническими и формально ссылаются на другой URL.
Так как мой-сайт/new-car и мой-сайт/new-car?layout=category это две разные страницы

*

Оффлайн dmitry_stas

не в плагинах дело

я ж не против :) гадаю так сказать на кофейной гуще :)

в этом что-то есть

о да, в этом однозначно что-то есть :) отключите Joomla 3.3.6 SEF
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций

*

Онлайн Biss

А что нам даст откл SEF?
Вобшем Google действительно ругался на на страници с одинаковым описанием, после чего я добавил в роботс
Disallow: /*?
После переиндексации предупреждения пропали.
Но не есть ли это ошибкой в компоненте или Joomla этот layout

*

Оффлайн dmitry_stas

А что нам даст откл SEF?

понятия не имею
гадаю так сказать на кофейной гуще
отключить и посмотреть на результат

я добавил в роботс
Disallow: /*?

не будут индексироваться вторые и дальше страницы категории и так далее
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций

*

Онлайн Biss

Цитировать
не будут индексироваться вторые и дальше страницы категории и так далее
Тоже не есть хорошо :dry:

С откл SEF ссылка вида

/index.php?option=com_jshopping&view=manufacturer&layout=man&task=view&manufacturer_id=1&Itemid=113

Ну да, тут же проблема, как я понимаю, что к URL после обработки SEF роутером, добавляется кусок URL без обработки

Вот "сырой урл"
/index.php?option=com_jshopping&view=manufacturer&layout=man&task=view&manufacturer_id=1&Itemid=113

Вот SEF URL
/adidas

В каноникал получается
/adidas&layout=man

С категориями аналогично,
то есть этот кусок
&layout=man
&layout=category
нормально не конвертируется в ЧПУ в rel=canonical

*

Оффлайн dmitry_stas

\plugins\system\sef\sef.php

Цитировать
if ($uri !== $link)
{
   $doc->addHeadLink(htmlspecialchars($link), 'canonical');
}

до так сказать нахождения более элегантного решения
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций

Да, как временное решение согласен, закомментировать указанную строку в \plugins\system\sef\sef.php
А на уровне шаблона категории и товара JoomShopping вручную вставить код выводящий правильный rel=canonical

Думал, может есть более легкое и "аккуратное" решение

*

Оффлайн tomat_ok

Надеюсь проблему решат, если использовать например компонент k2, то там каноникал прописывается правильно для всех страниц.

*

Оффлайн irc-h

эмм, а вы пункты меню как создавали? Через меню Joomla или через соответствующий адон ЖШ? Если все же через Joomla, то логично что у вас гючит.

P.S.-> Имею ввиду меню категорий и т.п.

*

Онлайн Biss

Да, с аддоном по ходу проблем таких не наблюдается, на счет канонических ссылок, но он не подходит по нескольким причинам.
Во первых есть некоторые ошибки, например в нем не работает очистка для фото которое выбирается для пункта меню.
Там же не сохраняет параметр *показать название пункта меню (да/нет)*
Не поддерживает других плагинов, например, у меня плагин флекс меню на шаблоне shape5
После сохранения пункта в меню билдер этот же пункт уже не откроется через меню Joomla изменить пункт меню...
Восстанавливал через базу, чтоб не создавать все заново.
И это не только в категориях и производителях по ходу роутер такой на всех видах меню.
Вот например еще пункт для id метки-

открывается url
домен/limitirovannye.html
для него канонический
/limitirovannye/products/label.html?label_id=7

Остается надежда на расширенные пункты от Linfuby, его еще не пробовал на 4-й версии.
А может добавлять в роботс просто Disallow: /?layout=
и т.д.

*

Оффлайн zeher


Остается надежда на расширенные пункты от Linfuby, его еще не пробовал на 4-й версии.


ставил на 4-ую версию, поработал пару дней, потом все категории отдавали ошибку 500, разбираться времени не было и снес.

*

Оффлайн dmitry_stas

вообще строго говоря ошибка не в ЖШ, а в плагине SEF. во первых там условие
if ($uri !== $link)никогда не бывает истинно.
во вторых, нет проверки на то, является ли страница пунктом меню. и не учтено то, что сколько бы параметров не имела ссылка в пункте меню - ссылка все равно будет SEF.
имхо, навскидку правильнее будет в плагине SEF заменить
$fakelink = 'index.php?' . http_build_query($parsed);на
if (isset($parsed['Itemid'])) {
$fakelink = 'index.php?Itemid=' . $parsed['Itemid'];
} else {
$fakelink = 'index.php?' . http_build_query($parsed);
}
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций

*

Оффлайн irc-h

Да, с аддоном по ходу проблем таких не наблюдается, на счет канонических ссылок, но он не подходит по нескольким причинам.
Во первых есть некоторые ошибки, например в нем не работает очистка для фото которое выбирается для пункта меню.
Там же не сохраняет параметр *показать название пункта меню (да/нет)*
Не поддерживает других плагинов, например, у меня плагин флекс меню на шаблоне shape5
После сохранения пункта в меню билдер этот же пункт уже не откроется через меню Joomla изменить пункт меню...
...
Решением может стать следующее: создаете пункт меню через аддон ЖШ, например в меню хиден -> Через меню Joomla создаете пункт меню в нужном вам месте "Системные ссылки":Псевдоним пункта меню. И уже этот пункт выводите в нужном вам месте шаблона/расширения с нужными настройками.

P.S.-> Или выводите рабочее меню как ссылки на уже существующее меню созданное через аддон ЖШ.

*

Оффлайн dmitry_stas

или исправить ошибку в Joomla :)
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций

*

Онлайн Biss

или исправить ошибку в Joomla :)
Пробовал, исправил. Но этот хак так же влияет и на другие компоненты, например Kunena. Короче оставил пока все по старому.
« Последнее редактирование: 12.02.2015, 19:34:27 от Biss »

*

Оффлайн dmitry_stas

Цитировать
Но этот хак так же влияет и на другие компоненты, например Kunena
и что? там тоже должно быть все верно
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций

*

Оффлайн zeher


$fakelink = 'index.php?' . http_build_query($parsed);на
if (isset($parsed['Itemid'])) {
$fakelink = 'index.php?Itemid=' . $parsed['Itemid'];
} else {
$fakelink = 'index.php?' . http_build_query($parsed);
}


в товаре каноническая ссылка указывает не на товар, а на его категорию (должно быть сайт/категория/товар, а выдает сайт/категория)

*

Оффлайн dmitry_stas

да, логично... значит возвращаемся к шагу http://joomlaforum.ru/index.php/topic,308210.msg1530600.html#msg1530600 :)
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций

*

Оффлайн zeher

$str = $link;
$str = str_replace("?layout=category", "", $str);
if ($uri !== $link)
{
$doc->addHeadLink(htmlspecialchars($str), 'canonical');
}

сделал так, но на сколько это правильно не знаю, но пока работает )))