[Помогите] Показ Wishlist без регистрации пользователя.

Тема в разделе "OpenCart", создана пользователем KIa87, 8 май 2016.

Метки:
  1. KIa87

    KIa87

    Регистрация:
    15 окт 2012
    Сообщения:
    181
    Симпатии:
    52
    Добрый день!
    Использую виш-лист на сайте, переделав OC под каталог.
    Всё отлично, но по умоллчанию система не показывает виш-лист незарегистрированным пользователям.
    Для решения есть несколько плагинов, но все они платные (под версию старше 2.1)
    Посмотрел код плагинов под 2.0 и 1.5. Там пара строчек кода! Но в 2.1 что то поменяли, и с ним он уже не работает.
    Подскажите, что изменить, где? Что именно и куда перенесли в 2.1?
    Код:
        <file path="catalog/controller/account/wishlist.php">
            <operation>
                <search trim="true" index="0"><![CDATA[
                    if (!$this->customer->isLogged()) {
                ]]></search>
                <add position="replace" trim="false" offset="4"><![CDATA[
                /* Guest Wishlist */
                ]]></add>
            </operation>
            <operation>
                <search trim="true" index="0"><![CDATA[
                    if ($this->customer->isLogged()) {
                ]]></search>
                <add position="replace" trim="false" offset="0"><![CDATA[
                    if (true) {
                ]]></add>
            </operation>
        </file>  
    либо VQmod

    Код:
      <id>Wishlist without login</id>
      <version>1.5.5.x</version>
      <vqmver required="true">2.4.0</vqmver>
      <author>[email protected]</author>
      <file name="catalog/controller/account/wishlist.php">
        <operation error="skip">
          <search position="replace" offset="5"><![CDATA[if (!$this->customer->isLogged()) {]]></search>
          <add><![CDATA[
          // start: OCdevWizard Wishlist without login
          //if (!$this->customer->isLogged()) {
          $this->session->data['redirect'] = $this->url->link('account/wishlist', '', 'SSL');
          //$this->redirect($this->url->link('account/login', '', 'SSL'));
          //}
          // end: OCdevWizard Wishlist without login
          ]]></add>
        </operation>
      </file>
      <file name="catalog/controller/account/wishlist.php">
        <operation error="skip">
          <search position="replace" offset="6"><![CDATA[if ($this->customer->isLogged()) {]]></search>
          <add><![CDATA[
          // start: OCdevWizard Wishlist without login
          //if ($this->customer->isLogged()) {   
            $json['success'] = sprintf($this->language->get('text_success'), $this->url->link('product/product', 'product_id=' . $this->request->post['product_id']), $product_info['name'], $this->url->link('account/wishlist'));     
          //} else {
            //$json['success'] = sprintf($this->language->get('text_login'), $this->url->link('account/login', '', 'SSL'), $this->url->link('account/register', '', 'SSL'), $this->url->link('product/product', 'product_id=' . $this->request->post['product_id']), $product_info['name'], $this->url->link('account/wishlist'));     
          //}
          // end: OCdevWizard Wishlist without login
          ]]></add>
        </operation>
      </file>
     
  2. samuel_L

    samuel_L

    Регистрация:
    6 окт 2012
    Сообщения:
    214
    Симпатии:
    131
    Есть бесплатное решение
     
    KIa87 нравится это.
  3. KIa87

    KIa87

    Регистрация:
    15 окт 2012
    Сообщения:
    181
    Симпатии:
    52
    Его код и есть в первом варианте. Только он под старую версию и не работает
     
    samuel_L нравится это.
  4. samuel_L

    samuel_L

    Регистрация:
    6 окт 2012
    Сообщения:
    214
    Симпатии:
    131
    пардон, оказывается под 2.0.3 идет, вы правы)
    пробовали руками вставить код без окмода? ошибок нет?

    PS: я еще не пробовал, но вопрос также актуален по данному решению
     
  5. KIa87

    KIa87

    Регистрация:
    15 окт 2012
    Сообщения:
    181
    Симпатии:
    52
    Проверил.. также не работает

    Знающие: есть ли какой-то список изменений в новой версии?
     
    Lasted edited by : 9 май 2016
  6. KIa87

    KIa87

    Регистрация:
    15 окт 2012
    Сообщения:
    181
    Симпатии:
    52
  7. Baco

    Baco Антихронофаг Команда форума

    Регистрация:
    9 окт 2012
    Сообщения:
    648
    Симпатии:
    327
    Ваш таск решается ликвидацией фактически одного условия:
    Код:
    if (!$this->customer->isLogged()) {
     
    KIa87 нравится это.
  8. KIa87

    KIa87

    Регистрация:
    15 окт 2012
    Сообщения:
    181
    Симпатии:
    52
    Пробовал просто снять if для функции - в начале catalog/controller/account/wishlist.php - никакого результата:Unknown:
     
  9. Dotrox

    Dotrox Команда форума

    Регистрация:
    27 ноя 2012
    Сообщения:
    2.050
    Симпатии:
    778
    Суть в том, что вишлисты привязаны к зарегистрированным покупателям и без наличия аккаунта вишлист абсолютно не к чему привязывать.
    Так что мало просто убрать проверку на логин (и если те модули были рабочие, там явно было что-то ещё). Нужно либо для незарегистрированных хранить вишлист в куки (а ещё лучше - в localStorage), либо хранить в базе, а в куки проставлять какой-то индентификатор, по которому можно будет опознать посетителя и найти его вишлист в базе.

    Вообще, в свете того, что куки могут переодически чиститься, лучше всего в любом варианте использовать localStorage, ибо иначе после очистки куки пользователь потеряет свой вишлист без какой-либо возможности его восстановить.
     
    Baco и samuel_L нравится это.
  10. KIa87

    KIa87

    Регистрация:
    15 окт 2012
    Сообщения:
    181
    Симпатии:
    52
    Dotrox, Спасибо Вам за пояснения.
    Как я понял, система и так хранит данные в кукисах, даже до регистрации.
    Выбираем товар => Он запоминается, но нам не дают его просмотреть до регистрации.
     
  11. Dotrox

    Dotrox Команда форума

    Регистрация:
    27 ноя 2012
    Сообщения:
    2.050
    Симпатии:
    778
    У ОК с куки вообще проблема в том плане, что он их практически не использует. Например, даже для зарегистрированных покупателей после входа туда не проставляется никаких меток и логин сбрасывается сразу же после истечения жизни сессии.
    И именно в сессии и хранятся товары, которые добавлены в вишлист до входа/регистрации.
     
    samuel_L нравится это.
  12. KIa87

    KIa87

    Регистрация:
    15 окт 2012
    Сообщения:
    181
    Симпатии:
    52
    То есть, как я понял из объяснений, никакой одной волшебной строчки нет (уже нет)..жаль
     
  13. Dotrox

    Dotrox Команда форума

    Регистрация:
    27 ноя 2012
    Сообщения:
    2.050
    Симпатии:
    778
    И никогда не было!
     
  14. KIa87

    KIa87

    Регистрация:
    15 окт 2012
    Сообщения:
    181
    Симпатии:
    52
    Если верить коду модуля для 2.0, то было:Smile:
    Код:
    <search trim="true" index="0"><![CDATA[
                    if (!$this->customer->isLogged()) {
                ]]></search>
                <add position="replace" trim="false" offset="4"><![CDATA[
                /* Guest Wishlist */
                ]]></add>
            </operation>
            <operation>
                <search trim="true" index="0"><![CDATA[
                    if ($this->customer->isLogged()) {
                ]]></search>
                <add position="replace" trim="false" offset="0"><![CDATA[
                    if (true) {
                ]]></add>
    А по делу - пойду таки покупать модуль.
     
  15. Dotrox

    Dotrox Команда форума

    Регистрация:
    27 ноя 2012
    Сообщения:
    2.050
    Симпатии:
    778
    Эта модификация делала только одну вещь: позволяла увидеть содержимое вишлиста в сессии для незарегистрированных, что абсолютно бессмысленно, ибо вишлист терялся через 24 минуты бездеятельности (стандартное время жизни сессии в php).
    Так что этот модуль был пустышкой.

    В 2.1 изменили только то, что вишлист перестал вообще писаться в сессию, а начал сразу писаться в БД. Кстати, маленький нюанс: в 2.0 вишлист вообще в БД не писался, то есть, он терялся даже для зарегистрированных.
     
    KIa87 нравится это.
  16. KIa87

    KIa87

    Регистрация:
    15 окт 2012
    Сообщения:
    181
    Симпатии:
    52
    Писал разработчикам модуля, для новой версии, никто не ответил, но модуль убрали с продажи!:Stop:
     
  17. KIa87

    KIa87

    Регистрация:
    15 окт 2012
    Сообщения:
    181
    Симпатии:
    52
    Купил в итоге у русского, с форума OC в частном порядке - все завелось!:Smile:
     
  18. samuel_L

    samuel_L

    Регистрация:
    6 окт 2012
    Сообщения:
    214
    Симпатии:
    131
    о каком именно модуле речь?
     
  19. fanton123

    fanton123

    Регистрация:
    24 дек 2012
    Сообщения:
    256
    Симпатии:
    29
    Делитесь если не жалко.
     
  20. KIa87

    KIa87

    Регистрация:
    15 окт 2012
    Сообщения:
    181
    Симпатии:
    52
     
    Последнее редактирование: 9 авг 2016
    Zulus и samuel_L нравится это.