Автор Тема: [ РЕШЕНО ] Проблема с getProductLink  (Прочитано 386 раз)

30 Сентября 2015, 11:58:44
  • Старожил
  • ****
  • Сообщений: 254
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
getProductLink генерирует ссылки на определённую комбинацию в таком виде:
https://*****/bags/237-palio-11974AS-C1-W2.html#/color-korichnevyj

Однако на сайте рабочие ссылки такого вида:
https://*****/bags/237-palio-11974AS-C1-W2.html#/17-color-korichnevyj

Вся разница такая:  color-korichnevyj  и 17-color-korichnevyj

При этом ссылка с 17, рабочая.

Как заставить getProductLink добавлять к URL код (ID) фильтра???
30 Сентября 2015, 12:03:33
Ответ #1
  • Ветеран
  • *****
  • Сообщений: 32988
  • Репутация: +26759/-0
    • Просмотр профиля
Зачем если все работает?

Фильтры добавляются без цифр, просто название. Изменить можно при создании/редактировании значения атрибута в поле URL.
Цитировать
Когда модуль многоуровневой навигации включен, можно создавать более подробные URL, выбрав слова, наилучшим образом представляющие этот атрибут. Стандартно используется название атрибута, но здесь можно изменить эту настройку.
30 Сентября 2015, 12:36:11
Ответ #2
  • Старожил
  • ****
  • Сообщений: 254
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Зачем если все работает?

Фильтры добавляются без цифр, просто название. Изменить можно при создании/редактировании значения атрибута в поле URL.
Цитировать
Когда модуль многоуровневой навигации включен, можно создавать более подробные URL, выбрав слова, наилучшим образом представляющие этот атрибут. Стандартно используется название атрибута, но здесь можно изменить эту настройку.

Не работает....

Работают такие ссылки: https://*****/bags/237-palio-11974AS-C1-W2.html#/17-color-korichnevyj
А getProductLink выдаёт такие: https://*****/bags/237-palio-11974AS-C1-W2.html#/color-korichnevyj, т.е. без 17, а они не рабочие!!!!
Как быть???
30 Сентября 2015, 13:05:15
Ответ #3
  • Ветеран
  • *****
  • Сообщений: 2158
  • Репутация: +49/-4
  • Сообщество PrestaShop
    • Просмотр профиля
В URL атрибута добавить свое название, тогда при включенном чпу добавление фильтра будет переписывать url и цифры не нужны.
30 Сентября 2015, 13:11:20
Ответ #4
  • Старожил
  • ****
  • Сообщений: 254
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
В URL атрибута добавить свое название, тогда при включенном чпу добавление фильтра будет переписывать url и цифры не нужны.
Шаблон (default-bootstrap)
В URL атрибута указано только color-korichnevyj, id цвета подставляется само.
Подобная проблема здесь: http://fo.demo.prestashop.com/en/3-women

В каталоге товаров на каждом товаре имеется несколько цвето, для каждого из них генерируется ссылка вида /color-blue

Однако в карточке товара переход на этот цвет осуществится только по /14-color-blue

Проверьте сами!!!
30 Сентября 2015, 14:18:11
Ответ #5
  • Ветеран
  • *****
  • Сообщений: 2158
  • Репутация: +49/-4
  • Сообщество PrestaShop
    • Просмотр профиля
На сайте http://fo.demo.prestashop.com/en/3-women
Выбираю фильтры и в них нет цифр, вот такие url получаются
http://fo.demo.prestashop.com/en/3-women#/color-white-orange-yellow
http://fo.demo.prestashop.com/en/3-women#/color-orange-yellow
http://fo.demo.prestashop.com/en/3-women#/color-orange/properties-colorful_dress
...
ИД подставляется только для товаров и категорий.
Это что-то у вас с браузером.
30 Сентября 2015, 14:34:46
Ответ #6
  • Старожил
  • ****
  • Сообщений: 254
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
На сайте http://fo.demo.prestashop.com/en/3-women
Выбираю фильтры и в них нет цифр, вот такие url получаются
http://fo.demo.prestashop.com/en/3-women#/color-white-orange-yellow
http://fo.demo.prestashop.com/en/3-women#/color-orange-yellow
http://fo.demo.prestashop.com/en/3-women#/color-orange/properties-colorful_dress
...
ИД подставляется только для товаров и категорий.
Это что-то у вас с браузером.

Да нет же....

Вот по этой ссылке
http://fo.demo.prestashop.com/en/3-women#/color-white-orange-yellow

мы видим 6 товаров, на каждом товаре мы можем выбрать различный аттрибут цвета(маленькие разноцветные квадратики)
Так вот URL этих квадратиков не правильные, здесь аттрибут цвета генерируется вот так:
http://fo.demo.prestashop.com/en/tshirts/1-faded-short-sleeves-tshirt.html#/color-blue
Однако на карточку товара с этим цветом не попадёте т.к. требуется:
http://fo.demo.prestashop.com/en/tshirts/1-faded-short-sleeves-tshirt.html#/14-color-blue

Разница /color-blue и /14-color-blue

/14-color-blue - правильный переход
/color-blue - не правильный переход на карточку товара.

Как решить эту проблему?

На карточке товара при выборе цвета к аттрибуту цвет добавляется его id
30 Сентября 2015, 15:18:00
Ответ #7
  • Ветеран
  • *****
  • Сообщений: 2158
  • Репутация: +49/-4
  • Сообщество PrestaShop
    • Просмотр профиля
Нет у меня такой проблемы.
Открываю
http://fo.demo.prestashop.com/en/3-women#/color-white-orange-yellow
Выбираю у 4-го товара синий цвет, открывается ссылка
http://fo.demo.prestashop.com/en/summer-dresses/5-printed-summer-dress.html#/size-s/color-blue
Выбираю к первого товара синий цвет, открывается
http://fo.demo.prestashop.com/en/tshirts/1-faded-short-sleeves-tshirt.html#/size-s/color-blue

Открываю код страницы
<ul class="color_to_pick_list clearfix">
<li>
<a style="background:#F39C11;" class="color_pick" id="color_1" href="http://fo.demo.prestashop.com/en/tshirts/1-faded-short-sleeves-tshirt.html#/size-s/color-orange"></a>
</li>
<li>
<a style="background:#5D9CEC;" class="color_pick" id="color_2" href="http://fo.demo.prestashop.com/en/tshirts/1-faded-short-sleeves-tshirt.html#/size-s/color-blue"></a>
</li>
</ul>
в коде ссылки тоже правильные.

Вы код страницы смотрели?
Браузер какой?
30 Сентября 2015, 15:21:51
Ответ #8
  • Ветеран
  • *****
  • Сообщений: 20837
  • Репутация: +25276/-0
  • Prestashop - просто и эффективно
    • Просмотр профиля
/14-color-blue - правильный переход
/color-blue - не правильный переход на карточку товара.
Наоборот,  "#/color-blue" - вот это правильно.
У фильтра не может быть ид в url. Так как в prestashop маршрутизация основанна на ид товара, категории, страницы. Ид атрибутов, характеристик игнорируются.
Эксперт Prestashop - решения всех проблем, написание модулей, создание тем для интернет-магазинов под Prestashop.
Эксперт Magento - создам сайт на Magento, программирование кастомных модулей для Magento, кастомизация тем Magento.
Лучшие цены!!!
30 Сентября 2015, 15:24:18
Ответ #9
  • Ветеран
  • *****
  • Сообщений: 2158
  • Репутация: +49/-4
  • Сообщество PrestaShop
    • Просмотр профиля
/14-color-blue - правильный переход
/color-blue - не правильный переход на карточку товара.
Наоборот,  "#/color-blue" - вот это правильно.
У фильтра не может быть ид в url. Так как в prestashop маршрутизация основанна на ид товара, категории, страницы. Ид атрибутов, характеристик игнорируются.
Точно, затупил. Я не сразу понял, что наоборот нужно. Смотрю названия фильтров без ид, значит все правильно. А нужно наоборот чтобы ид были в фильтрах.
30 Сентября 2015, 15:32:57
Ответ #10
  • Старожил
  • ****
  • Сообщений: 254
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
/14-color-blue - правильный переход
/color-blue - не правильный переход на карточку товара.
Наоборот,  "#/color-blue" - вот это правильно.
У фильтра не может быть ид в url. Так как в prestashop маршрутизация основанна на ид товара, категории, страницы. Ид атрибутов, характеристик игнорируются.
Точно, затупил. Я не сразу понял, что наоборот нужно. Смотрю названия фильтров без ид, значит все правильно. А нужно наоборот чтобы ид были в фильтрах.

В принципе без разницы лишь бы работало хоть с ID, хоть без него.

Просто сейчас получается что в карточке товара переход получится только с ID аттрибутов.
А каталоге товаров URL генерируются без ID.
Т.е. получается не состыковка.

Значит копания привели к следующему:
В product.js далее function getProductAttribute()

Здесь есть такая строка
if (attributesCombinations[i]['id_attribute'] === tab_attributes[a])
request += '/' + attributesCombinations[i]['id_attribute'] + '-' + attributesCombinations[i]['group'] + attribute_anchor_separator + attributesCombinations[i]['attribute'];

 attributesCombinations['id_attribute'] - это и есть id аттрибута, который добавляется (в карточке товара)


30 Сентября 2015, 15:43:06
Ответ #11
  • Ветеран
  • *****
  • Сообщений: 2158
  • Репутация: +49/-4
  • Сообщество PrestaShop
    • Просмотр профиля
А ниже // redirection там вырезается навзание атрибута и подставляется в url после решетки "#".
window.location.replace(url + request);Проверил в версии 1.6.0.9, 1.6.0.14 и 1.6.1 везде нет ид атрибута в url.

Может модуль какой-нибуть установлен для изменения url?
30 Сентября 2015, 15:50:40
Ответ #12
  • Старожил
  • ****
  • Сообщений: 254
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Как заставить getProductLink генерировать URL с id аттрибута или отключить генерацию ID аттрибутов в URL на сайте???
30 Сентября 2015, 16:07:48
Ответ #13
  • Ветеран
  • *****
  • Сообщений: 2158
  • Репутация: +49/-4
  • Сообщество PrestaShop
    • Просмотр профиля
Вернуть на сайт стандарные классы. В них так все и сделано. Или скачать чистую версию prestashop и сравнивть файлы со своими, найти различие и исправить.
Искать нужно в чем отличие установленных файлов с оригинальными.
30 Сентября 2015, 16:21:12
Ответ #14
  • Старожил
  • ****
  • Сообщений: 254
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Вернуть на сайт стандарные классы. В них так все и сделано. Или скачать чистую версию prestashop и сравнивть файлы со своими, найти различие и исправить.
Искать нужно в чем отличие установленных файлов с оригинальными.

Думаю, что это проблема связана с Шаблоном (default-bootstrap)

Если этот баг виден на демо сайте prestashop, то это его косяк..................