Автор Тема: PrestaShop 1.6 Модуль: Добавить в избранное  (Прочитано 630 раз)

29 Сентября 2015, 18:24:33
  • Фрилансер
  • *
  • Сообщений: 139
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Всем привет!
Столкнулся с проблемой: когда гость нажимает на "Добавить в избранное", то появляется окно с информацией "Вы должны авторизоваться для управления избранным." (см. скрин), хотел слово "авторизоваться" сделать ссылкой ведущей на страницу "my-account", начал делать.
Зашел в переводы модулей, нашел 2 места, где есть упоминание об этом, это:
default-bootstrap - blockwishlist
default-bootstrap - blockwishlist_top
Начинаю править слово в ссылку, а PrestaShop сохраняет, но не делает изменение.
Вопрос: как сделать?
Заранее благодарю!
29 Сентября 2015, 19:17:25
Ответ #1
  • Ветеран
  • *****
  • Сообщений: 13469
  • Репутация: +14561/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Ссылку добавить нужно в /modules/blockwishlist/js/ajax-wishlist.js в function WishlistCart
content: '<p class="fancybox-error"><a ...>' + loggin_required + '</a></p>'
29 Сентября 2015, 20:13:37
Ответ #2
  • Фрилансер
  • *
  • Сообщений: 139
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Adik, понял, спасибо! Заюзаю.
А как всё же именно слово "авторизоваться" ссылкой сделать?
Adik, а почему перевод в 2-х местах(?):
default-bootstrap - blockwishlist
default-bootstrap - blockwishlist_top
29 Сентября 2015, 20:41:45
Ответ #3
  • Ветеран
  • *****
  • Сообщений: 13469
  • Репутация: +14561/-0
  • Сообщество PrestaShop
    • Просмотр профиля
2 перевода потому что 2 шаблона.
В /themes/default-bootstrap/modules/blockwishlist/blockwishlist_top.tpl определены переменные js для модуля.

Чтобы 1 слово сделать ссылкой нужно чтобы в переводах было 1 слово "авторизоваться"
content: '<p class="fancybox-error">' + my_text1 + '<a ...>' + loggin_required + '</a>' + my_text2 + '</p>'В /themes/default-bootstrap/modules/blockwishlist/blockwishlist_top.tpl добавить 2 переменные и изменить 1
{addJsDefL name=loggin_required}{l s='logged ' mod='blockwishlist' js=1}{/addJsDefL}
{addJsDefL name=my_text1}{l s='You must be ' mod='blockwishlist' js=1}{/addJsDefL}
{addJsDefL name=my_text2}{l s=' in to manage your wishlist.' mod='blockwishlist' js=1}{/addJsDefL}

04 Октября 2015, 11:28:55
Ответ #4
  • Фрилансер
  • *
  • Сообщений: 139
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Adik, спасибо за ответ и решение!
Чутка не понял про "2 перевода потому что 2 шаблона."

Adik, я сделал по другому:
Открываем:
/themes/default-bootstrap/modules/blockwishlist/blockwishlist_top.tpl
Находим:
Цитировать
{addJsDefL name=loggin_required}{l s='You must be logged in to manage your wishlist.' mod='blockwishlist' js=1}{/addJsDefL}
Найденное заменить на или добавить то, что я выделил зелёным цветом - это ссылка на страницу авторизации:
Цитировать
{addJsDefL name=loggin_required}{l s='You must be logged in to manage your wishlist.' mod='blockwishlist' js=1 tags=['<a class="_blank" href="http://ваш-домен-пс.ру/my-account">']}{/addJsDefL}
Далее идём в переводы модулей:
default-bootstrap - blockwishlist
default-bootstrap - blockwishlist_top
Находим поле:
You must be logged in to manage your wishlists.
В поле пишем:
Вы должны [1]Авторизироваться[/1] для управления избранным. См. скрин.
Получаем: См. скрин.
Остаётся поработать с классом, чтобы более заметно выделить ссылку "Авторизироваться".
Плюс есть моменты не понятные для меня:
1. как это будет работать в случае, если будет стоять несколько переводов.
2. что это такое "{l s='You must be logged in to manage your wishlist.' ..." , а именно буква l и параметр s. Если я делаю так: s='You must be [1]logged[/1] in to manage your wishlist.' , то русский перевод не отображается, а отображается именно знанчение s. См. скрин.
04 Октября 2015, 12:00:20
Ответ #5
  • Ветеран
  • *****
  • Сообщений: 33010
  • Репутация: +26761/-0
    • Просмотр профиля
l - это функция перевода в шаблонах.
s='' - это переменная перевода, то что должно быть переведено.
04 Октября 2015, 13:14:20
Ответ #6
  • Фрилансер
  • *
  • Сообщений: 139
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Coder, спасибо!
Т.е. s - не трогать, понял. :)
А ещё вопрос: после того как пользователь перейдёт на страницу авторизации. Зарегистрируется или войдёт  в свой аккаунт и то, что он до этого нажал на "Добавить в избранное" - добавится(?) или ему надо будет заново возвращаться на данный товар и снова добавлять его в избранное?
04 Октября 2015, 13:53:59
Ответ #7
  • Пользователь
  • **
  • Сообщений: 96
  • Репутация: +2/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Избранное добавляется, если клиент авторизировался.
Если клиент не авторизирован, то покажет текст "Вы должны авторизироваться для управления избранным".
04 Октября 2015, 17:11:48
Ответ #8
  • Фрилансер
  • *
  • Сообщений: 139
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Хм. Интересно. Как бы сделать так, чтобы нажатие (добавление в избранное) сохранилось для гостя (не авторизированного пользователя)?
Думаю, что есть на свете модуль "Просмотренные товары" и он же как-то работает, точнее не как-то, вот, вычитал как:
Цитировать
Два варианта
Первый - использует для хранения просмотренных товаров cookie, а значит и показываются только просмотренные конкретным пользователем на данном компьютере товары.
Второй - использует для хранения просмотренных товаров таблицу в БД, а значит показываться могут и недавно просмотренные другими пользователями товары.
Т.е. можно сделать также для "Добавить в избранное", иначе пользователю придётся заново искать товар, который он хотел добавить, а вдруг он не помнит как нашёл его, это заново искать, возможно, что он просто напросто не будет это делать. Это плохо, имхо. А так, если гость: нажал на добавить, прошёлся по ссылке, авторизовался или создал аккаунт, далее переход либо на то же место товара с уведомлением, что товар добавлен в избранное, либо переход в раздел Избранное в личном кабинете....
04 Октября 2015, 17:16:15
Ответ #9
  • Ветеран
  • *****
  • Сообщений: 2554
  • Репутация: +58/-4
  • Сообщество PrestaShop
    • Просмотр профиля
Сделать все можно, а вот стандарный модуль в избранное только для авторизированных.
Есть еще и третий вариант, самый лучший, LocalStorage / SessionStorage.
Поддерживает все современные браузеры, а именно:
- Internet Explorer 8+
- Mozilla Firefox 3.5+
- Google Chrome 4+
- Safari 4+
- Opera 10.5+