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

30 Сентябрь 2015, 11:58:44
  • Старожил
  • ****
  • Сообщений: 312
  • Репутация: +1/-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
  • Ветеран
  • *****
  • Сообщений: 33068
  • Репутация: +26762/-0
    • Просмотр профиля
Зачем если все работает?

Фильтры добавляются без цифр, просто название. Изменить можно при создании/редактировании значения атрибута в поле URL.
Цитировать
Когда модуль многоуровневой навигации включен, можно создавать более подробные URL, выбрав слова, наилучшим образом представляющие этот атрибут. Стандартно используется название атрибута, но здесь можно изменить эту настройку.
30 Сентябрь 2015, 12:36:11
Ответ #2
  • Старожил
  • ****
  • Сообщений: 312
  • Репутация: +1/-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
  • Ветеран
  • *****
  • Сообщений: 3035
  • Репутация: +72/-5
  • Сообщество PrestaShop
    • Просмотр профиля
В URL атрибута добавить свое название, тогда при включенном чпу добавление фильтра будет переписывать url и цифры не нужны.
30 Сентябрь 2015, 13:11:20
Ответ #4
  • Старожил
  • ****
  • Сообщений: 312
  • Репутация: +1/-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
  • Ветеран
  • *****
  • Сообщений: 3035
  • Репутация: +72/-5
  • Сообщество 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
  • Старожил
  • ****
  • Сообщений: 312
  • Репутация: +1/-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
  • Ветеран
  • *****
  • Сообщений: 3035
  • Репутация: +72/-5
  • Сообщество 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
  • Ветеран
  • *****
  • Сообщений: 21024
  • Репутация: +25282/-0
  • Prestashop - просто и эффективно
    • Просмотр профиля
/14-color-blue - правильный переход
/color-blue - не правильный переход на карточку товара.
Наоборот,  "#/color-blue" - вот это правильно.
У фильтра не может быть ид в url. Так как в prestashop маршрутизация основанна на ид товара, категории, страницы. Ид атрибутов, характеристик игнорируются.
Эксперт Prestashop - решения всех проблем, написание модулей, создание тем для интернет-магазинов под Prestashop.
Эксперт Magento - создам сайт на Magento, программирование кастомных модулей для Magento, кастомизация тем Magento.
Лучшие цены!!!
30 Сентябрь 2015, 15:24:18
Ответ #9
  • Ветеран
  • *****
  • Сообщений: 3035
  • Репутация: +72/-5
  • Сообщество PrestaShop
    • Просмотр профиля
/14-color-blue - правильный переход
/color-blue - не правильный переход на карточку товара.
Наоборот,  "#/color-blue" - вот это правильно.
У фильтра не может быть ид в url. Так как в prestashop маршрутизация основанна на ид товара, категории, страницы. Ид атрибутов, характеристик игнорируются.
Точно, затупил. Я не сразу понял, что наоборот нужно. Смотрю названия фильтров без ид, значит все правильно. А нужно наоборот чтобы ид были в фильтрах.
30 Сентябрь 2015, 15:32:57
Ответ #10
  • Старожил
  • ****
  • Сообщений: 312
  • Репутация: +1/-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
  • Ветеран
  • *****
  • Сообщений: 3035
  • Репутация: +72/-5
  • Сообщество 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
  • Старожил
  • ****
  • Сообщений: 312
  • Репутация: +1/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Как заставить getProductLink генерировать URL с id аттрибута или отключить генерацию ID аттрибутов в URL на сайте???
30 Сентябрь 2015, 16:07:48
Ответ #13
  • Ветеран
  • *****
  • Сообщений: 3035
  • Репутация: +72/-5
  • Сообщество PrestaShop
    • Просмотр профиля
Вернуть на сайт стандарные классы. В них так все и сделано. Или скачать чистую версию prestashop и сравнивть файлы со своими, найти различие и исправить.
Искать нужно в чем отличие установленных файлов с оригинальными.
30 Сентябрь 2015, 16:21:12
Ответ #14
  • Старожил
  • ****
  • Сообщений: 312
  • Репутация: +1/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Вернуть на сайт стандарные классы. В них так все и сделано. Или скачать чистую версию prestashop и сравнивть файлы со своими, найти различие и исправить.
Искать нужно в чем отличие установленных файлов с оригинальными.

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

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