Как вывести отзывы в карточку товара?

Тема в разделе "Дизайн, оформление и шаблоны", создана пользователем artem-d13, 19 мар 2015.

  1. artem-d13

    artem-d13 Новичок

    Сообщения:
    4
    Симпатии:
    0
    В карточке товара под изображением выводится поле описания товара, а чтобы посмотреть отзыв о товаре - необходимо нажать "Отзывов". (Версия 2.0.1.1 rs6 дефолтная тема).
    1. Как вывести отзывы о товаре (если имеются) на той же вкладке под описанием?
    2. название "Отзывов" поменять на "Добавить отзыв"?
    print-review.png
    Еще - при добавлении отзыва к товару на странице товара не происходит никаких действий (только капча меняется[Даже предупреждение об ошибке (красная строка) при вводе короткого отзыва остается на месте]), в результате непонятно, отправился отзыв на модерацию или нет.
    3. Как при отправке отзыва вывести сообщение о том, что отзыв отправлен на модерацию (в отдельное окно или всплывающее сообщение)?
    Если человек вошел в свой аккаунт и оставляет отзыв о товаре - появляется обязательное поле "Ваше имя"...
    info-review.png
    4. Как сделать что-бы это поле не отображалось или по умолчанию туда вводился ник пользователя?
    5. Как в это поле по умолчанию добавить "Анонимный" если человек не вошел в аккаунт?

    Спасибо всем отвечающим!
     
  2. Ravilr

    Ravilr Специалист

    Сообщения:
    3.879
    Симпатии:
    1.064
    в контролере \catalog\controller\product\product.php

    где то после
    PHP:
    $data['entry_captcha'] = $this->language->get('entry_captcha');
    добавляем
    PHP:
    $data['first_name'] = $this->customer->getFirstName();

    а в шаблоне \catalog\view\theme\default\template\product\product.tpl

    меняем это
    Код:
     <input type="text" name="name" value="" id="input-name" class="form-control" />
    на это
    Код:
    <input type="text" name="name" value="<?php echo $first_name; ?>" id="input-name" class="form-control" />
     
  3. artem-d13

    artem-d13 Новичок

    Сообщения:
    4
    Симпатии:
    0
    Ravilr, спасибо за столь скорый ответ. Сделал как ты написал - получилось. Теперь если покупатель залогинился, при нажатии на кнопку "отзывы" в поле появляется ник. 4й вопрос можно считать закрытым.

    Сам отвечу на вопрос №2.
    В файле русификаторе по адресу catalog\language\russian\product\product.php находим:


    // Tabs
    $_['tab_description'] = 'Описание';
    $_['tab_attribute'] = 'Характеристики';

    $_['tab_review'] = 'Отзывов (%s)';

    и меняем на необходимое
    $_['tab_review'] = '
    Добавить отзыв';
    Вуаля!

    Теперь немного об инструментах...
    Пользуюсь редактором Notepad++
    Недавно узнал об его замечательной функции: ПОИСК в файлах (Найти в файлах).
    Нажимаем поиск/ найти в файлах
    поиск.png
    вводим любое искомое слово, выбираем папку с файлами (в моем случае разархивированную папку с дистрибутивом opencart), жмем "Найти все", и получаем подробнейший ответ с активными ссылками на искомое слово в документе!
    rezult.png
    Ничего удобнее пока не видел! Век живи - век учись! пользуюсь Notepad++ более года, а всех его удобных функций так и не знаю...
     
  4. Ravilr

    Ravilr Специалист

    Сообщения:
    3.879
    Симпатии:
    1.064
    в шаблоне \catalog\view\theme\default\template\product\product.tpl
    находим <div id="review"></div>
    и переносим к, после <?php echo $description; ?>

    Тогда сами отзывы будут сразу после описания.
     
  5. Ravilr

    Ravilr Специалист

    Сообщения:
    3.879
    Симпатии:
    1.064
    лучше так.
    в шаблоне \catalog\view\theme\default\template\product\product.tpl
    После
    Код:
    $('#review').after('<div class="alert alert-danger"><i class="fa fa-exclamation-circle"></i> ' + json['error'] + '</div>');
    добавить
    Код:
    $('html, body').animate({ scrollTop: $("#tab-review").offset().top}, 'slow');
    ну и тоже самое для if (json['success']) {
     
  6. Ravilr

    Ravilr Специалист

    Сообщения:
    3.879
    Симпатии:
    1.064
    в 4 пункте в контроллере делаем так
    PHP:
    $data['first_name'] = ($this->customer->getFirstName() ) ? $this->customer->getFirstName() : "Анонимный";
     
  7. artem-d13

    artem-d13 Новичок

    Сообщения:
    4
    Симпатии:
    0
    Ravilr, ОГРОМНОЕ спасибо за помощь.
    И так отписываюсь.
    по пункту 1. Все прекрасно заработало, карточка выводится как нужно!
    пункт 5. внес изменения ($data['first_name'] = ($this->customer->getFirstName() ) ? $this->customer->getFirstName() : "Анонимный";), но заметил что более удачный вариант по первому совету $data['first_name'] = $this->customer->getFirstName();, а в файле шаблона \catalog\view\theme\default\template\product\product.tpl в поле <input type="text" name="name" value="<?php echo $first_name; ?>" id="input-name" class="form-control" /> изменил на <input type="text" name="name" value="<?php echo $first_name; ?>" id="input-name" class="form-control" placeholder="Анонимный" />. Стало совсем замечательно!

    Теперь буду разбираться с пунктом №3. т.к. JavaScript для меня - только знакомые буквы... пошел читать мануал.
     
  8. artem-d13

    artem-d13 Новичок

    Сообщения:
    4
    Симпатии:
    0
    Пункт 5. Вернул как написал Ravilr, т.к. placeholder не заполняет поле и соответственно не отправляет данные.
     
  9. Romek

    Romek Новичок

    Сообщения:
    7
    Симпатии:
    0
    Ребят извините написано почти все тоже что и мне нужно, но мне чуть по другому. Нужно чтобы вкладок не было на карточке товаров, а вся информация выводилась одна под другой, т..е описани-характеристики-отзывы были без в вкладок.
    upload_2016-7-22_11-30-46.png