Ещё одна особенность магазина при использовании ЧПУ, заключается в том, что каждый товар имеет три URL что ни есть хорошо:
1. С главной страницы www.site.ru/tovar
2. Google SiteMap видит www.site.ru/kategoria2/tovar
3. С внутренний подкатегории www.site.ru/kategoria/kategoria2/tovar
Также обратил внимание, что "хлебные крошки" тоже не отображают весь путь до товара при укороченном адресе:
www.site.ru/tovar
Главная > tovar т.е. пропускается две точки маршрута "kategoria" и "kategoria2"...
Можно ли это как то вылечить программно , через .htaccess или еще как-то ?
1. С главной страницы www.site.ru/tovar
2. Google SiteMap видит www.site.ru/kategoria2/tovar
3. С внутренний подкатегории www.site.ru/kategoria/kategoria2/tovar
Также обратил внимание, что "хлебные крошки" тоже не отображают весь путь до товара при укороченном адресе:
www.site.ru/tovar
Главная > tovar т.е. пропускается две точки маршрута "kategoria" и "kategoria2"...
Можно ли это как то вылечить программно , через .htaccess или еще как-то ?
Открываем /catalog/model/tool/seo_url.php
находим 11 строку меняем
Далее открываем /catalog/controller/product/search.php
находим 159 строку меняем
http://www.antiradar-shop.ru/
находим 11 строку меняем
Code: Select all
parse_str($url_data['query'], $data);
$id_available = false;
$manufacturer_url = null;
$category_url = null;
foreach ($data as $key => $value) {
if (strstr($value, '/')) {
$query = $this->db->query("SELECT * FROM " . DB_PREFIX . "url_alias WHERE `query` = '" . $value . "'");
if ($query->num_rows) {
$url .= '/' . $query->row['keyword'];
}
}
else if (($key == 'product_id') || ($key == 'manufacturer_id') || ($key == 'information_id')) {
$query = $this->db->query("SELECT * FROM " . DB_PREFIX . "url_alias WHERE `query` = '" . $this->db->escape($key . '=' . (int)$value) . "'");
if ($query->num_rows) {
if ($key == 'product_id' || $key == 'information_id') {
$url .= '/' . $query->row['keyword'];
$id_available = true;
} else {
$manufacturer_url = '/' . $query->row['keyword'];
}
unset($data[$key]);
}
} elseif ($key == 'path') {
$categories = explode('_', $value);
foreach ($categories as $category) {
$query = $this->db->query("SELECT * FROM " . DB_PREFIX . "url_alias WHERE `query` = 'category_id=" . (int)$category . "'");
if ($query->num_rows) {
$category_url .= '/' . $query->row['keyword'];
}
}
unset($data[$key]);
}
}
if (!$id_available) {
if (isset($manufacturer_url))
$url .= $manufacturer_url;
else if (isset($category_url))
$url .= $category_url;
}
if ($url) {
unset($data['route']);
находим 159 строку меняем
Code: Select all
'href' => $this->model_tool_seo_url->rewrite($this->url->http('product/product&product_id=' . $result['product_id'])),
Интересное решение. Я попробовал его применить, действительно, продукт в разных категориях теперь доступен из каждой категории по одному и тому же урл. Это хорошо для СЕО, но побочным эффектом метода стало отсутствие пути в строчке под поиском (забыл как на английском - breadчегототам), все товары появляются сразу после Home, что не есть хорошо для посетителей, так как их путь по каталогу сбрасывается.
Например, человек заходит по категориям: Кат1- кат2-кат3 выбирает товар из кат3, строчка навигации сбрасывается до названия товара. Теперь, если покупатель захочет посомтреть другие товары из категории 3 или 2, ему снова придется прощелкать их из меню...
Можно ли как-то угодить и СЕО, и посетителям? То есть сделать единый урл для товаров, но сохранить навигацию по категориям...
Например, человек заходит по категориям: Кат1- кат2-кат3 выбирает товар из кат3, строчка навигации сбрасывается до названия товара. Теперь, если покупатель захочет посомтреть другие товары из категории 3 или 2, ему снова придется прощелкать их из меню...
Можно ли как-то угодить и СЕО, и посетителям? То есть сделать единый урл для товаров, но сохранить навигацию по категориям...
Поставить-то в навигацию категории можно.
Достаточно контроллер продукта поправить.
Для продукта рассчитать путь по категориям из БД, а не из запроса.
Но несколько затык все же будет.
Во первых если продукт в нескольких категориях то естественно в breadcrumbs будет появляться только одна, причем не важно из какой категории вы туда зашли.
Во вторых там есть еще manufacturers или search, для случаев когда зашли со страницы списка производителей или поиска. А показываться сейчас будет все равно только продукт. А если нет - опять же имеем дубль урл.
Вывод: сохранить одно не испортив другое - нельзя. Либо на все продукты ставим навигацию категориями, либо там пусто. Остальные варианты - ведут к дублированию.
PS а так уж ли это страшно?
Достаточно контроллер продукта поправить.
Для продукта рассчитать путь по категориям из БД, а не из запроса.
Но несколько затык все же будет.
Во первых если продукт в нескольких категориях то естественно в breadcrumbs будет появляться только одна, причем не важно из какой категории вы туда зашли.
Во вторых там есть еще manufacturers или search, для случаев когда зашли со страницы списка производителей или поиска. А показываться сейчас будет все равно только продукт. А если нет - опять же имеем дубль урл.
Вывод: сохранить одно не испортив другое - нельзя. Либо на все продукты ставим навигацию категориями, либо там пусто. Остальные варианты - ведут к дублированию.
PS а так уж ли это страшно?
Юзабилити ощутимо страдает.vovan wrote:PS а так уж ли это страшно?

1) Электроника - Портатив - Музыка - Плеера - mp3 плеера
2) получаете список плееров, заходите в один, посмотрели, не понравился и... а навигации на предыдущий уровень нет, пользователь растеряно носится по экрану мышкой, наблюдая закрывшееся дерево категорий и отсутствие "хлебных крошек).
3) снова щелкает: Электроника - Портатив - Музыка - Плеера - mp3 плеера
4) повторяет пункт 2, раздражается
5) уходит из магазина
Разумеется, пример несколько надуманный, но исчезновение наглядной навигации и самозакрытие каталога раздражает - факт.
Может, дублирование контента - не так страшно, как про него пишут?
А я как раз сеошник и многое дефолтное в подобных продуктах мне крайне не понятно:
Почему ссылки на главную имеют вид site.ru/index.php?route=common/home, а не site.ru?
решение элементарно: в шаблоне меняем home на base
Почему нет отдельного поля для title, заголовка H1 и меню?
это ведь абсолютно разные по смыслу использования поля
Дублирование контента (в данном случае страницы) очень страшно:
поисковики дублированные страницы исключают из индекса, оставляю одну на свое усмотрение и не постоянную, т.е. в поиске может участвовать сначала одна страница, а потом другая, как в таком случае продвигать страницу в поисковиках?
Решение тоже элементарное:
url у товара должен быть ОДИН, а "хлебные крошки" сделать зависимым от пути пользователя, т.е. от куда пришел, то и показывать, как вариант на джаваскрипте.
Почему ссылки на главную имеют вид site.ru/index.php?route=common/home, а не site.ru?
решение элементарно: в шаблоне меняем home на base
Почему нет отдельного поля для title, заголовка H1 и меню?
это ведь абсолютно разные по смыслу использования поля
Дублирование контента (в данном случае страницы) очень страшно:
поисковики дублированные страницы исключают из индекса, оставляю одну на свое усмотрение и не постоянную, т.е. в поиске может участвовать сначала одна страница, а потом другая, как в таком случае продвигать страницу в поисковиках?
Решение тоже элементарное:
url у товара должен быть ОДИН, а "хлебные крошки" сделать зависимым от пути пользователя, т.е. от куда пришел, то и показывать, как вариант на джаваскрипте.
Who is online
Users browsing this forum: No registered users and 3 guests