Post by 7megabyte » Mon Mar 08, 2010 5:23 am

Ещё одна особенность магазина при использовании ЧПУ, заключается в том, что каждый товар имеет три 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 или еще как-то ?

Newbie

Posts

Joined
Mon Mar 08, 2010 5:15 am

Post by den » Wed Mar 10, 2010 6:06 pm

Открываем /catalog/model/tool/seo_url.php
находим 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']);
Далее открываем /catalog/controller/product/search.php
находим 159 строку меняем

Code: Select all

'href'    => $this->model_tool_seo_url->rewrite($this->url->http('product/product&product_id=' . $result['product_id'])),
http://www.antiradar-shop.ru/

den
Newbie

Posts

Joined
Sat Dec 12, 2009 9:19 pm

Post by Gopalru » Mon Mar 15, 2010 5:14 pm

Интересное решение. Я попробовал его применить, действительно, продукт в разных категориях теперь доступен из каждой категории по одному и тому же урл. Это хорошо для СЕО, но побочным эффектом метода стало отсутствие пути в строчке под поиском (забыл как на английском - breadчегототам), все товары появляются сразу после Home, что не есть хорошо для посетителей, так как их путь по каталогу сбрасывается.

Например, человек заходит по категориям: Кат1- кат2-кат3 выбирает товар из кат3, строчка навигации сбрасывается до названия товара. Теперь, если покупатель захочет посомтреть другие товары из категории 3 или 2, ему снова придется прощелкать их из меню...

Можно ли как-то угодить и СЕО, и посетителям? То есть сделать единый урл для товаров, но сохранить навигацию по категориям...

Newbie

Posts

Joined
Mon Mar 15, 2010 5:06 pm

Post by vovan » Mon Mar 15, 2010 10:54 pm

Поставить-то в навигацию категории можно.
Достаточно контроллер продукта поправить.
Для продукта рассчитать путь по категориям из БД, а не из запроса.
Но несколько затык все же будет.
Во первых если продукт в нескольких категориях то естественно в breadcrumbs будет появляться только одна, причем не важно из какой категории вы туда зашли.
Во вторых там есть еще manufacturers или search, для случаев когда зашли со страницы списка производителей или поиска. А показываться сейчас будет все равно только продукт. А если нет - опять же имеем дубль урл.

Вывод: сохранить одно не испортив другое - нельзя. Либо на все продукты ставим навигацию категориями, либо там пусто. Остальные варианты - ведут к дублированию.

PS а так уж ли это страшно?

New member

Posts

Joined
Thu Aug 20, 2009 7:17 pm


Post by Gopalru » Tue Mar 16, 2010 2:18 am

vovan wrote:PS а так уж ли это страшно?
Юзабилити ощутимо страдает. :( Представиьте, заходите вы на сайт выбрать плеер, заходите

1) Электроника - Портатив - Музыка - Плеера - mp3 плеера

2) получаете список плееров, заходите в один, посмотрели, не понравился и... а навигации на предыдущий уровень нет, пользователь растеряно носится по экрану мышкой, наблюдая закрывшееся дерево категорий и отсутствие "хлебных крошек).

3) снова щелкает: Электроника - Портатив - Музыка - Плеера - mp3 плеера

4) повторяет пункт 2, раздражается

5) уходит из магазина

Разумеется, пример несколько надуманный, но исчезновение наглядной навигации и самозакрытие каталога раздражает - факт.

Может, дублирование контента - не так страшно, как про него пишут?

Newbie

Posts

Joined
Mon Mar 15, 2010 5:06 pm

Post by vovan » Tue Mar 16, 2010 3:34 am

Я собственно про дублирование и спрашивал.
Вообщем-то вещь такая часто встречающаяся, и довольно странно, что поисковики так негативно реагируют.
Хотя сам в SEO не разбираюсь

New member

Posts

Joined
Thu Aug 20, 2009 7:17 pm


Post by Sasha » Thu Apr 22, 2010 3:38 pm

А я как раз сеошник и многое дефолтное в подобных продуктах мне крайне не понятно:
Почему ссылки на главную имеют вид site.ru/index.php?route=common/home, а не site.ru?
решение элементарно: в шаблоне меняем home на base

Почему нет отдельного поля для title, заголовка H1 и меню?
это ведь абсолютно разные по смыслу использования поля

Дублирование контента (в данном случае страницы) очень страшно:
поисковики дублированные страницы исключают из индекса, оставляю одну на свое усмотрение и не постоянную, т.е. в поиске может участвовать сначала одна страница, а потом другая, как в таком случае продвигать страницу в поисковиках?

Решение тоже элементарное:
url у товара должен быть ОДИН, а "хлебные крошки" сделать зависимым от пути пользователя, т.е. от куда пришел, то и показывать, как вариант на джаваскрипте.

Newbie

Posts

Joined
Thu Apr 22, 2010 3:02 pm

Post by anafor » Sun May 16, 2010 6:57 am

У кого-то есть готовое решение вопроса(кроме того, что уже предложен в топике)?

Newbie

Posts

Joined
Wed May 12, 2010 8:10 am

Post by Elle-Z » Wed Apr 03, 2013 4:56 am

Вопрос еще актуален в версии v1.5.4.1 есть мнения/решения? :)

Newbie

Posts

Joined
Tue Mar 26, 2013 1:14 am
Who is online

Users browsing this forum: No registered users and 3 guests