Рекомендуемые сообщения

Всем доброго времени суток!
Помогите решить проблемку, так как не являюсь программистом, а всего лишь владельцем ИМ OpenCart 2.0
Суть проблемы: клиент оставляет отзыв о товаре на сайте. Мне на мыло приходит уведомление о новом отзыве, но в админке этого нет, для того, чтобы его принять/отклонить.
Самое интересно то, что сам я из админки могу написать отзыв, но из открытой части магазина не могу сделать этого ни я, ни клиент.
Вот сам ИМ : http://ironpower.com.ua/

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Dotrox    330

Проблема из-а того, что у вас при отправке отзыва вместо product_id передаётся вот это:

"<b>Notice</b>: Undefined variable: product_id in <b>/var/www/olegshturmanuk/data/www/ironpower.com.ua/catalog/view/theme/pitaha/template/product/review.tpl</b> on line <b>77</b>"

Проверьте файл /catalog/controller/product/product.php. У вас там в функции index должна быть такая строка:

$data['product_id'] = (int)$this->request->get['product_id'];

Если её нет, добавьте её, например, перед

$data['model'] = $product_info['model'];

Если же строка есть, значит дело в модификаторах.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Нашел такую строку:
$data['product_id']    = (int)$this->request->get['product_id'];
Она правильно прописана?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Dotrox    330
1 час назад, Olegshturman сказал:

Нашел такую строку:
$data['product_id']    = (int)$this->request->get['product_id'];
Она правильно прописана?

Ну, вы же сами должны видеть, что она 1 в 1 соответствует той, которую я привёл выше.

Смотрите тогда в /system/storage/modification/catalog/controller/product/product.php.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А там что посмотреть? Если такую же строку, то она там тоже есть.

Изменено пользователем Olegshturman

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Dotrox    330
5 часов назад, Olegshturman сказал:

А там что посмотреть? Если такую же строку, то она там тоже есть.

Такую же строку. Этот файл - это копия предыдущего, но из кеша OCMOD (после обработки модификаторами).

Выложите сюда код из /system/storage/modification/catalog/controller/product/product.php и /catalog/view/theme/pitaha/template/product/review.tpl.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
В 06.02.2017 в 01:11, Dotrox сказал:

Такую же строку. Этот файл - это копия предыдущего, но из кеша OCMOD (после обработки модификаторами).

Выложите сюда код из /system/storage/modification/catalog/controller/product/product.php и /catalog/view/theme/pitaha/template/product/review.tpl.

Скрытый текст

 

<?php

class ControllerProductProduct extends Controller {

  private $error = array();

  public function index() {

    $this->load->language('product/product');

    $data['quick_buy'] = $this->load->controller('common/quick_buy');

    $data['breadcrumbs'] = array();

    $data['breadcrumbs'][] = array(

        'text' => $this->language->get('text_home'),

        'href' => $this->url->link('common/home'),

    );

    $this->load->model('catalog/category');

    if (isset($this->request->get['path'])) {

      $path = '';

      $parts = explode('_', (string)$this->request->get['path']);

      $category_id = (int)array_pop($parts);

      foreach ($parts as $path_id) {

        if (!$path) {

          $path = $path_id;

        } else {

          $path .= '_' . $path_id;

        }

        $category_info = $this->model_catalog_category->getCategory($path_id);

        if ($category_info) {

          $data['breadcrumbs'][] = array(

              'text' => $category_info['name'],

              'href' => $this->url->link('product/category', 'path=' . $path),

          );

        }

      }

      // Set the last category breadcrumb

      $category_info = $this->model_catalog_category->getCategory($category_id);

      if ($category_info) {

        $url = '';

        if (isset($this->request->get['sort'])) {

          $url .= '&sort=' . $this->request->get['sort'];

        }

        if (isset($this->request->get['order'])) {

          $url .= '&order=' . $this->request->get['order'];

        }

        if (isset($this->request->get['page'])) {

          $url .= '&page=' . $this->request->get['page'];

        }

        if (isset($this->request->get['limit'])) {

          $url .= '&limit=' . $this->request->get['limit'];

        }

        $data['breadcrumbs'][] = array(

            'text' => $category_info['name'],

            'href' => $this->url->link('product/category', 'path=' . $this->request->get['path'] . $url),

        );

      }

    }

    $this->load->model('catalog/manufacturer');

    if (isset($this->request->get['manufacturer_id'])) {

      $data['breadcrumbs'][] = array(

          'text' => $this->language->get('text_brand'),

          'href' => $this->url->link('product/manufacturer'),

      );

      $url = '';

      if (isset($this->request->get['sort'])) {

        $url .= '&sort=' . $this->request->get['sort'];

      }

      if (isset($this->request->get['order'])) {

        $url .= '&order=' . $this->request->get['order'];

      }

      if (isset($this->request->get['page'])) {

        $url .= '&page=' . $this->request->get['page'];

      }

      if (isset($this->request->get['limit'])) {

        $url .= '&limit=' . $this->request->get['limit'];

      }

      $manufacturer_info = $this->model_catalog_manufacturer->getManufacturer($this->request->get['manufacturer_id']);

      if ($manufacturer_info) {

        $data['breadcrumbs'][] = array(

            'text' => $manufacturer_info['name'],

            'href' => $this->url->link('product/manufacturer/info', 'manufacturer_id=' . $this->request->get['manufacturer_id'] . $url),

        );

      }

    }

    if (isset($this->request->get['search']) || isset($this->request->get['tag'])) {

      $url = '';

      if (isset($this->request->get['search'])) {

        $url .= '&search=' . $this->request->get['search'];

      }

      if (isset($this->request->get['tag'])) {

        $url .= '&tag=' . $this->request->get['tag'];

      }

      if (isset($this->request->get['description'])) {

        $url .= '&description=' . $this->request->get['description'];

      }

      if (isset($this->request->get['category_id'])) {

        $url .= '&category_id=' . $this->request->get['category_id'];

      }

      if (isset($this->request->get['sub_category'])) {

        $url .= '&sub_category=' . $this->request->get['sub_category'];

      }

      if (isset($this->request->get['sort'])) {

        $url .= '&sort=' . $this->request->get['sort'];

      }

      if (isset($this->request->get['order'])) {

        $url .= '&order=' . $this->request->get['order'];

      }

      if (isset($this->request->get['page'])) {

        $url .= '&page=' . $this->request->get['page'];

      }

      if (isset($this->request->get['limit'])) {

        $url .= '&limit=' . $this->request->get['limit'];

      }

      $data['breadcrumbs'][] = array(

          'text' => $this->language->get('text_search'),

          'href' => $this->url->link('product/search', $url),

      );

    }

    if (isset($this->request->get['product_id'])) {

      $product_id = (int)$this->request->get['product_id'];

    } else {

      $product_id = 0;

    }

    $this->load->model('catalog/product');

    $product_info = $this->model_catalog_product->getProduct($product_id);

    if ($product_info) {

      $url = '';

      if (isset($this->request->get['path'])) {

        $url .= '&path=' . $this->request->get['path'];

      }

      if (isset($this->request->get['filter'])) {

        $url .= '&filter=' . $this->request->get['filter'];

      }

      if (isset($this->request->get['manufacturer_id'])) {

        $url .= '&manufacturer_id=' . $this->request->get['manufacturer_id'];

      }

      if (isset($this->request->get['search'])) {

        $url .= '&search=' . $this->request->get['search'];

      }

      if (isset($this->request->get['tag'])) {

        $url .= '&tag=' . $this->request->get['tag'];

      }

      if (isset($this->request->get['description'])) {

        $url .= '&description=' . $this->request->get['description'];

      }

      if (isset($this->request->get['category_id'])) {

        $url .= '&category_id=' . $this->request->get['category_id'];

      }

      if (isset($this->request->get['sub_category'])) {

        $url .= '&sub_category=' . $this->request->get['sub_category'];

      }

      if (isset($this->request->get['sort'])) {

        $url .= '&sort=' . $this->request->get['sort'];

      }

      if (isset($this->request->get['order'])) {

        $url .= '&order=' . $this->request->get['order'];

      }

      if (isset($this->request->get['page'])) {

        $url .= '&page=' . $this->request->get['page'];

      }

      if (isset($this->request->get['limit'])) {

        $url .= '&limit=' . $this->request->get['limit'];

      }

      $data['breadcrumbs'][] = array(

          'text' => $product_info['name'],

          'href' => $this->url->link('product/product', $url . '&product_id=' . $this->request->get['product_id']),

      );

      $this->document->setTitle($product_info['meta_title']);

      $this->document->setDescription($product_info['meta_description']);

      $this->document->setKeywords($product_info['meta_keyword']);

      $this->document->addLink($this->url->link('product/product', 'product_id=' . $this->request->get['product_id']), 'canonical');

      $this->document->addScript('catalog/view/javascript/jquery/magnific/jquery.magnific-popup.min.js');

      $this->document->addStyle('catalog/view/javascript/jquery/magnific/magnific-popup.css');

      $this->document->addScript('catalog/view/javascript/jquery/datetimepicker/moment.js');

      $this->document->addScript('catalog/view/javascript/jquery/datetimepicker/bootstrap-datetimepicker.min.js');

      $this->document->addStyle('catalog/view/javascript/jquery/datetimepicker/bootstrap-datetimepicker.min.css');

      $data['heading_title'] = $product_info['name'];

                $data['NotifyWhenAvailable']  = $this->config->get('notifywhenavailable');
                $this->language->load('module/notifywhenavailable');
                $data['NotifyWhenAvailable_Button'] = $this->language->get('NotifyWhenAvailable_Button');
                        

      $data['text_select']       = $this->language->get('text_select');

      $data['text_manufacturer'] = $this->language->get('text_manufacturer');

      $data['text_model']        = $this->language->get('text_model');

      $data['text_reward']       = $this->language->get('text_reward');

      $data['text_points']       = $this->language->get('text_points');

      $data['text_stock']        = $this->language->get('text_stock');

      $data['text_discount']     = $this->language->get('text_discount');

      $data['text_tax']          = $this->language->get('text_tax');

      $data['text_option']       = $this->language->get('text_option');

      $data['text_minimum']      = sprintf($this->language->get('text_minimum'), $product_info['minimum']);

      $data['text_write']        = $this->language->get('text_write');

      $data['text_write_qaa']    = $this->language->get('text_write_qaa');

      $data['text_login']        = sprintf($this->language->get('text_login'), $this->url->link('account/login', '', 'SSL'), $this->url->link('account/register', '', 'SSL'));

      $data['text_note']         = $this->language->get('text_note');

      $data['text_tags']         = $this->language->get('text_tags');

      $data['text_related']      = $this->language->get('text_related');

      $data['text_loading']      = $this->language->get('text_loading');

      $data['entry_qty']    = $this->language->get('entry_qty');

      $data['entry_name']   = $this->language->get('entry_name');

      $data['entry_review'] = $this->language->get('entry_review');

      $data['entry_qaa']    = $this->language->get('entry_qaa');

      $data['entry_rating'] = $this->language->get('entry_rating');

      $data['entry_good']   = $this->language->get('entry_good');

      $data['entry_bad']    = $this->language->get('entry_bad');

      $data['button_cart']     = $this->language->get('button_cart');

      $data['button_wishlist'] = $this->language->get('button_wishlist');

      $data['button_compare']  = $this->language->get('button_compare');

      $data['button_upload']   = $this->language->get('button_upload');

      $data['button_continue'] = $this->language->get('button_continue');

      $this->load->model('catalog/review');

      $data['tab_description'] = $this->language->get('tab_description');

      $data['tab_attribute']   = $this->language->get('tab_attribute');

      $data['tab_review']      = sprintf($this->language->get('tab_review'), $product_info['reviews']);

      $data['tab_qaa']         = sprintf($this->language->get('tab_qaa'), $product_info['qaas']);

      $data['product_id']    = (int)$this->request->get['product_id'];

      $data['manufacturer']  = $product_info['manufacturer'];

      $data['manufacturers'] = $this->url->link('product/manufacturer/info', 'manufacturer_id=' . $product_info['manufacturer_id']);

      $data['model']         = $product_info['model'];

      $data['reward']        = $product_info['reward'];

      $data['points']        = $product_info['points'];

      $data['quick_buy_visible'] = TRUE;

      if ($product_info['quantity'] <= 0) {

        $data['stock'] = $product_info['stock_status'];

        $data['quick_buy_visible']   = FALSE;

      } elseif ($this->config->get('config_stock_display')) {

        $data['stock'] = $product_info['quantity'];

        

      } else {

        $data['stock'] = $this->language->get('text_instock');        

      }

      $data['stock_status_outstock'] = $product_info['stock_status'];
      $data['stock_status_instock'] = $this->language->get('text_instock'); 

        if ($product_info['quantity'] == 0) {

         $data['stock'] = $this->language->get('text_outstock');

        } 

      $this->load->model('tool/image');

      if ($product_info['image']) {

        $data['popup'] = $this->model_tool_image->resize($product_info['image'], $this->config->get('config_image_popup_width'), $this->config->get('config_image_popup_height'));

      } else {

        $data['popup'] = '';

      }

      if ($product_info['image']) {

        $data['thumb'] = $this->model_tool_image->resize($product_info['image'], $this->config->get('config_image_thumb_width'), $this->config->get('config_image_thumb_height'));

      } else {

        $data['thumb'] = '';

      }

      $data['images'] = array();

      $results = $this->model_catalog_product->getProductImages($this->request->get['product_id']);

      foreach ($results as $result) {

        $data['images'][] = array(

            'popup' => $this->model_tool_image->resize($result['image'], $this->config->get('config_image_popup_width'), $this->config->get('config_image_popup_height')),

            'thumb' => $this->model_tool_image->resize($result['image'], $this->config->get('config_image_additional_width'), $this->config->get('config_image_additional_height')),

        );

      }

      if (($this->config->get('config_customer_price') && $this->customer->isLogged()) || !$this->config->get('config_customer_price')) {

        $data['price'] = $this->currency->format($this->tax->calculate($product_info['price'], $product_info['tax_class_id'], $this->config->get('config_tax')));

      } else {

        $data['price'] = false;

      }

      if ((float)$product_info['special']) {

        $data['special'] = $this->currency->format($this->tax->calculate($product_info['special'], $product_info['tax_class_id'], $this->config->get('config_tax')));

      } else {

        $data['special'] = false;

      }

      if ($this->config->get('config_tax')) {

        $data['tax'] = $this->currency->format((float)$product_info['special'] ? $product_info['special'] : $product_info['price']);

      } else {

        $data['tax'] = false;

      }

      $discounts = $this->model_catalog_product->getProductDiscounts($this->request->get['product_id']);

      $data['discounts'] = array();

      foreach ($discounts as $discount) {

        $data['discounts'][] = array(

            'quantity' => $discount['quantity'],

            'price'    => $this->currency->format($this->tax->calculate($discount['price'], $product_info['tax_class_id'], $this->config->get('config_tax'))),

        );

      }


          $data['raw_price'] = $data['price'];
          $data['raw_special'] = $data['special'];
        
          if ($data['price']) {
              $data['price'] = '<span class=\'autocalc-product-price\'>' . $data['price'] . '</span>';
          }
          if ($data['special']) {
              $data['special'] = '<span class=\'autocalc-product-special\'>' . $data['special'] . '</span>';
          }
          if ($data['points']) {
              $data['points'] = '<span class=\'autocalc-product-points\'>' . $data['points'] . '</span>';
          }
          
          $data['price_value'] = $product_info['price'];
          $data['special_value'] = $product_info['special'];
          $data['tax_value'] = (float)$product_info['special'] ? $product_info['special'] : $product_info['price'];
          $data['points_value'] = $product_info['points'];
          
          $var_currency = array();
          $currency_code = !empty($this->session->data['currency']) ? $this->session->data['currency'] : $this->config->get('config_currency');
          $var_currency['value'] = $this->currency->getValue($currency_code);
          $var_currency['symbol_left'] = $this->currency->getSymbolLeft($currency_code);
          $var_currency['symbol_right'] = $this->currency->getSymbolRight($currency_code);
          $var_currency['decimals'] = $this->currency->getDecimalPlace($currency_code);
          $var_currency['decimal_point'] = $this->language->get('decimal_point');
          $var_currency['thousand_point'] = $this->language->get('thousand_point');
          $data['autocalc_currency'] = $var_currency;

          $currency2_code = $this->config->get('config_currency2');
          if ($this->currency->has($currency2_code) && $currency2_code != $currency_code) {
              $var_currency = array();
              $currency_code = $currency2_code;
              $var_currency['value'] = $this->currency->getValue($currency_code);
              $var_currency['symbol_left'] = $this->currency->getSymbolLeft($currency_code);
              $var_currency['symbol_right'] = $this->currency->getSymbolRight($currency_code);
              $var_currency['decimals'] = $this->currency->getDecimalPlace($currency_code);
              $var_currency['decimal_point'] = $this->language->get('decimal_point');
              $var_currency['thousand_point'] = $this->language->get('thousand_point');
              $data['autocalc_currency2'] = $var_currency;
          }
          
          $data['dicounts_unf'] = $discounts;

          $data['tax_class_id'] = $product_info['tax_class_id'];
          $data['tax_rates'] = $this->tax->getRates(0, $product_info['tax_class_id']);
        
          $data['autocalc_option_special'] = $this->config->get('config_autocalc_option_special');
          $data['autocalc_not_mul_qty'] = $this->config->get('config_autocalc_not_mul_qty');
      
      $data['options'] = array();

      foreach ($this->model_catalog_product->getProductOptions($this->request->get['product_id']) as $option) {

        $product_option_value_data = array();

        foreach ($option['product_option_value'] as $option_value) {

          if (!$option_value['subtract'] || ($option_value['quantity'] > 0) || (!empty($data['NotifyWhenAvailable']['Enabled']) && $data['NotifyWhenAvailable']['Enabled']=='yes')) {

            if ((($this->config->get('config_customer_price') && $this->customer->isLogged()) || !$this->config->get('config_customer_price')) && (float)$option_value['price']) {

              $price = $this->currency->format($this->tax->calculate($option_value['price'], $product_info['tax_class_id'], $this->config->get('config_tax') ? 'P' : false));

            } else {

              $price = false;

            }

            $product_option_value_data[] = array(

          'price_value'                   => $option_value['price'],
          'points_value'                  => intval($option_value['points_prefix'].$option_value['points']),
      

                'product_option_value_id' => $option_value['product_option_value_id'],

                'option_value_id'         => $option_value['option_value_id'],

                'name'                    => $option_value['name'],

                'image'                   => $this->model_tool_image->resize($option_value['image'], 50, 50),

                'price'                   => $price,

                'price_prefix'            => $option_value['price_prefix'],
                            'quantity'                  => $option_value['quantity'],

            );

          }

        }

        $data['options'][] = array(

            'product_option_id'    => $option['product_option_id'],

            'product_option_value' => $product_option_value_data,

            'option_id'            => $option['option_id'],

            'name'                 => $option['name'],

            'type'                 => $option['type'],

            'value'                => $option['value'],

            'required'             => $option['required'],

        );

      }

      if ($product_info['minimum']) {

        $data['minimum'] = $product_info['minimum'];

      } else {

        $data['minimum'] = 1;

      }

      $data['review_status'] = $this->config->get('config_review_status');

      $data['qaa_status'] = $this->config->get('config_qaa_status');

      if ($this->customer->isLogged()) {

        $data['customer_name'] = $this->customer->getFirstName() . '&nbsp;' . $this->customer->getLastName();

      } else {

        $data['customer_name'] = '';

      }

      $data['reviews']          = sprintf($this->language->get('text_reviews'), (int)$product_info['reviews']);

      $data['rating']           = (int)$product_info['rating'];

      $data['description']      = html_entity_decode($product_info['description'], ENT_QUOTES, 'UTF-8');

      $data['attribute_groups'] = $this->model_catalog_product->getProductAttributes($this->request->get['product_id']);

      $data['attribute_main_groups'] = $this->model_catalog_product->getProductAttributes($this->request->get['product_id'],true);

     

     

      $data['text_main_attribute'] = $this->language->get('text_main_attribute');

      $data['products'] = array();

      $results = $this->model_catalog_product->getProductRelated($this->request->get['product_id']);

      foreach ($results as $result) {

        if ($result['image']) {

          $image = $this->model_tool_image->resize($result['image'], $this->config->get('config_image_related_width'), $this->config->get('config_image_related_height'));

        } else {

          $image = $this->model_tool_image->resize('placeholder.png', $this->config->get('config_image_related_width'), $this->config->get('config_image_related_height'));

        }

        if (($this->config->get('config_customer_price') && $this->customer->isLogged()) || !$this->config->get('config_customer_price')) {

          $price = $this->currency->format($this->tax->calculate($result['price'], $result['tax_class_id'], $this->config->get('config_tax')));

        } else {

          $price = false;

        }

        if ((float)$result['special']) {

          $special = $this->currency->format($this->tax->calculate($result['special'], $result['tax_class_id'], $this->config->get('config_tax')));

        } else {

          $special = false;

        }

        if ($this->config->get('config_tax')) {

          $tax = $this->currency->format((float)$result['special'] ? $result['special'] : $result['price']);

        } else {

          $tax = false;

        }

        if ($this->config->get('config_review_status')) {

          $rating = (int)$result['rating'];

        } else {

          $rating = false;

        }

        $data['stickers'] = false;

        $sticker_new      = false;

        $sticker_special  = false;

        $sticker_rating   = false;

        $sticker_vip      = false;

        if ($this->config->get('stickers_status')) {

          $data['stickers'] = true;

          if ($this->config->get('stickers_new_status')) {

            $date_added = strtotime($result['date_added']);

            $date_now   = strtotime(date("Y-m-d H:i:s"));

            $days       = (int)date('d', $date_now - $date_added);

            if ($days < (int)$this->config->get('stickers_new_days')) {

              $sticker_new = array(

                  'status'  => true,

                  'z_index' => $this->config->get('stickers_new_sort_order'),

              );

            } else {

              $sticker_new = false;

            }

          }

          if ($this->config->get('stickers_special_status')) {

            if ($special) {

              $sticker_special = array(

                  'status'  => true,

                  'z_index' => $this->config->get('stickers_special_sort_order'),

              );

              true;

            } else {

              $sticker_special = false;

            }

          }

          if ($this->config->get('stickers_rating_status')) {

            switch ($this->config->get('stickers_rating_criteria')) {

              case 'view':

                if ($result['viewed'] >= (int)$this->config->get('stickers_rating_value')) {

                  $sticker_rating = array(

                      'status'  => true,

                      'z_index' => $this->config->get('stickers_rating_sort_order'),

                  );

                } else {

                  $sticker_rating = false;

                }

                break;

              case 'rating':

                if ($result['reviews'] >= (int)$this->config->get('stickers_rating_value')) {

                  $sticker_rating = array(

                      'status'  => true,

                      'z_index' => $this->config->get('stickers_rating_sort_order'),

                  );

                } else {

                  $sticker_rating = false;

                }

                break;

              case 'purchase':

                if ((int)$this->model_catalog_product->getNumberOfSales($result['product_id']) >= (int)$this->config->get('stickers_rating_value')) {

                  $sticker_rating = array(

                      'status'  => true,

                      'z_index' => $this->config->get('stickers_rating_sort_order'),

                  );

                } else {

                  $sticker_rating = false;

                }

                break;

            }

          }

          if ($this->config->get('stickers_vip_status')) {

            if (in_array($result['product_id'], $this->config->get('stickers_vip_products'))) {

              $sticker_vip = array(

                  'status'  => true,

                  'z_index' => $this->config->get('stickers_vip_sort_order'),

              );

            } else {

              $sticker_vip = false;

            }

          }

        }

        $data['products'][] = array(

            'product_id'      => $result['product_id'],

            'thumb'           => $image,

            'name'            => $result['name'],

            'description'     => utf8_substr(strip_tags(html_entity_decode($result['description'], ENT_QUOTES, 'UTF-8')), 0, $this->config->get('config_product_description_length')) . '..',

            'price'           => $price,

            'special'         => $special,

            'tax'             => $tax,

            'minimum'         => $result['minimum'] > 0 ? $result['minimum'] : 1,

            'rating'          => $rating,

            'reviews_count'   => sprintf($this->language->get('reviews_count'), $result['reviews']),

            'href'            => $this->url->link('product/product', 'product_id=' . $result['product_id']),

            'sticker_rating'  => $sticker_rating,

            'sticker_special' => $sticker_special,

            'sticker_new'     => $sticker_new,

            'sticker_vip'     => $sticker_vip,

        );

      }

      $data['tags'] = array();

      if ($product_info['tag']) {

        $tags = explode(',', $product_info['tag']);

        foreach ($tags as $tag) {

          $data['tags'][] = array(

              'tag'  => trim($tag),

              'href' => $this->url->link('product/search', 'tag=' . trim($tag)),

          );

        }

      }

      $data['text_payment_recurring'] = $this->language->get('text_payment_recurring');

      $data['recurrings']             = $this->model_catalog_product->getProfiles($this->request->get['product_id']);

      $this->model_catalog_product->updateViewed($this->request->get['product_id']);

      if ($this->config->get('config_google_captcha_status')) {

        $this->document->addScript('https://www.google.com/recaptcha/api.js');

        $data['site_key'] = $this->config->get('config_google_captcha_public');

      } else {

        $data['site_key'] = '';

      }

      $data['column_left']    = $this->load->controller('common/column_left');

      $data['column_right']   = $this->load->controller('common/column_right');

      $data['content_top']    = $this->load->controller('common/content_top');

      $data['content_bottom'] = $this->load->controller('common/content_bottom');

      $data['footer']         = $this->load->controller('common/footer');

      $data['header']         = $this->load->controller('common/header');

      $data['trust']         = $this->load->controller('module/trust');

      if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/product/product.tpl')) {

        $this->response->setOutput($this->load->view($this->config->get('config_template') . '/template/product/product.tpl', $data));

      } else {

        $this->response->setOutput($this->load->view('default/template/product/product.tpl', $data));

      }

    } else {

      $url = '';

      if (isset($this->request->get['path'])) {

        $url .= '&path=' . $this->request->get['path'];

      }

      if (isset($this->request->get['filter'])) {

        $url .= '&filter=' . $this->request->get['filter'];

      }

      if (isset($this->request->get['manufacturer_id'])) {

        $url .= '&manufacturer_id=' . $this->request->get['manufacturer_id'];

      }

      if (isset($this->request->get['search'])) {

        $url .= '&search=' . $this->request->get['search'];

      }

      if (isset($this->request->get['tag'])) {

        $url .= '&tag=' . $this->request->get['tag'];

      }

      if (isset($this->request->get['description'])) {

        $url .= '&description=' . $this->request->get['description'];

      }

      if (isset($this->request->get['category_id'])) {

        $url .= '&category_id=' . $this->request->get['category_id'];

      }

      if (isset($this->request->get['sub_category'])) {

        $url .= '&sub_category=' . $this->request->get['sub_category'];

      }

      if (isset($this->request->get['sort'])) {

        $url .= '&sort=' . $this->request->get['sort'];

      }

      if (isset($this->request->get['order'])) {

        $url .= '&order=' . $this->request->get['order'];

      }

      if (isset($this->request->get['page'])) {

        $url .= '&page=' . $this->request->get['page'];

      }

      if (isset($this->request->get['limit'])) {

        $url .= '&limit=' . $this->request->get['limit'];

      }

      $data['breadcrumbs'][] = array(

          'text' => $this->language->get('text_error'),

          'href' => $this->url->link('product/product', $url . '&product_id=' . $product_id),

      );

      $this->document->setTitle($this->language->get('text_error'));

      $data['heading_title'] = $this->language->get('text_error');

      $data['text_error'] = $this->language->get('text_error');

      $data['button_continue'] = $this->language->get('button_continue');

      $data['continue'] = $this->url->link('common/home');

      $this->response->addHeader($this->request->server['SERVER_PROTOCOL'] . ' 404 Not Found');

      $data['column_left']    = $this->load->controller('common/column_left');

      $data['column_right']   = $this->load->controller('common/column_right');

      $data['content_top']    = $this->load->controller('common/content_top');

      $data['content_bottom'] = $this->load->controller('common/content_bottom');

      $data['footer']         = $this->load->controller('common/footer');

      $data['header']         = $this->load->controller('common/header');

      if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/error/not_found.tpl')) {

        $this->response->setOutput($this->load->view($this->config->get('config_template') . '/template/error/not_found.tpl', $data));

      } else {

        $this->response->setOutput($this->load->view('default/template/error/not_found.tpl', $data));

      }

    }

  }

  public function review() {

    $this->load->language('product/product');

    $data['quick_buy'] = $this->load->controller('common/quick_buy');

    $this->load->model('catalog/review');

    $data['text_no_reviews'] = $this->language->get('text_no_reviews');

    $data['text_write']   = $this->language->get('text_write');

    $data['text_note']   = $this->language->get('text_note');

    $data['text_loading']   = $this->language->get('text_loading');

    $data['text_login']   = $this->language->get('text_login');

    $data['entry_name']   = $this->language->get('entry_name');

    $data['entry_review']   = $this->language->get('entry_review');

    $data['entry_rating']   = $this->language->get('entry_rating');

    $data['entry_bad']   = $this->language->get('entry_bad');

    $data['entry_good']   = $this->language->get('entry_good');

    $data['button_continue']   = $this->language->get('button_continue');

    if (isset($this->request->get['page'])) {

      $page = $this->request->get['page'];

    } else {

      $page = 1;

    }

    $data['reviews'] = array();

    $review_total = $this->model_catalog_review->getTotalReviewsByProductId($this->request->get['product_id']);

    $results = $this->model_catalog_review->getReviewsByProductId($this->request->get['product_id'], ($page - 1) * 5, 5);

    foreach ($results as $result) {

      $data['reviews'][] = array(

          'author'     => $result['author'],

          'text'       => nl2br($result['text']),

          'rating'     => (int)$result['rating'],

          'date_added' => date($this->language->get('date_format_short'), strtotime($result['date_added'])),

      );

    }

    $pagination        = new Pagination();

    $pagination->total = $review_total;

    $pagination->page  = $page;

    $pagination->limit = 5;

    $pagination->url   = $this->url->link('product/product/review', 'product_id=' . $this->request->get['product_id'] . '&page={page}');

    $data['pagination'] = $pagination->render();

    $data['results'] = sprintf($this->language->get('text_pagination'), ($review_total) ? (($page - 1) * 5) + 1 : 0, ((($page - 1) * 5) > ($review_total - 5)) ? $review_total : ((($page - 1) * 5) + 5), $review_total, ceil($review_total / 5));

    if ($this->config->get('config_review_guest') || $this->customer->isLogged()) {

      $data['review_guest'] = true;

    } else {

      $data['review_guest'] = false;

    }

    if ($this->config->get('config_google_captcha_status')) {

      $this->document->addScript('https://www.google.com/recaptcha/api.js');

      $data['site_key'] = $this->config->get('config_google_captcha_public');

    } else {

      $data['site_key'] = '';

    }

    if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/product/review.tpl')) {

      $this->response->setOutput($this->load->view($this->config->get('config_template') . '/template/product/review.tpl', $data));

    } else {

      $this->response->setOutput($this->load->view('default/template/product/review.tpl', $data));

    }

  }

  public function write() {

    $this->load->language('product/product');

    $data['quick_buy'] = $this->load->controller('common/quick_buy');

    $json = array();

    if ($this->request->server['REQUEST_METHOD'] == 'POST') {

      if ((utf8_strlen($this->request->post['name']) < 3) || (utf8_strlen($this->request->post['name']) > 25)) {

        $json['error'] = $this->language->get('error_name');

      }

      if ((utf8_strlen($this->request->post['text']) < 25) || (utf8_strlen($this->request->post['text']) > 1000)) {

        $json['error'] = $this->language->get('error_text');

      }

      if (empty($this->request->post['rating']) || $this->request->post['rating'] < 0 || $this->request->post['rating'] > 5) {

        $json['error'] = $this->language->get('error_rating');

      }

      if ($this->config->get('config_google_captcha_status') && empty($json['error'])) {

        if (isset($this->request->post['g-recaptcha-response'])) {

          $recaptcha = file_get_contents('https://www.google.com/recaptcha/api/siteverify?secret=' . urlencode($this->config->get('config_google_captcha_secret')) . '&response=' . $this->request->post['g-recaptcha-response'] . '&remoteip=' . $this->request->server['REMOTE_ADDR']);

          $recaptcha = json_decode($recaptcha, true);

          if (!$recaptcha['success']) {

            $json['error'] = $this->language->get('error_captcha');

          }

        } else {

          $json['error'] = $this->language->get('error_captcha');

        }

      }

      if (!isset($json['error'])) {

        $this->load->model('catalog/review');

        $this->model_catalog_review->addReview($this->request->get['product_id'], $this->request->post);

        $json['success'] = $this->language->get('text_success');

      }

    }

    $this->response->addHeader('Content-Type: application/json');

    $this->response->setOutput(json_encode($json));

  }

  public function qaa() {

    $this->load->language('product/product');

    $data['quick_buy'] = $this->load->controller('common/quick_buy');

    $this->load->model('catalog/qaa');

    $data['text_answer']  = $this->language->get('text_answer');

    $data['text_no_qaas'] = $this->language->get('text_no_qaas');

    $data['text_write_qaa'] = $this->language->get('text_write_qaa');

    $data['text_note'] = $this->language->get('text_note');

    $data['text_loading'] = $this->language->get('text_loading');

    $data['text_login'] = $this->language->get('text_login');

    $data['entry_name'] = $this->language->get('entry_name');

    $data['entry_qaa'] = $this->language->get('entry_qaa');

    $data['button_continue'] = $this->language->get('button_continue');

    $data['button_qaa'] = $this->language->get('button_qaa');

    if (isset($this->request->get['page'])) {

      $page = $this->request->get['page'];

    } else {

      $page = 1;

    }

    $data['qaas'] = array();

    $qaa_total = $this->model_catalog_qaa->getTotalQaasByProductId($this->request->get['product_id']);

    $results = $this->model_catalog_qaa->getQaasByProductId($this->request->get['product_id'], ($page - 1) * 5, 5);

    foreach ($results as $result) {

      $data['qaas'][] = array(

          'author'     => $result['author'],

          'text'       => nl2br($result['text']),

          'answer'     => $result['answer'],

          'date_added' => date($this->language->get('date_format_short'), strtotime($result['date_added'])),

      );

    }

    $pagination        = new Pagination();

    $pagination->total = $qaa_total;

    $pagination->page  = $page;

    $pagination->limit = 5;

    $pagination->url   = $this->url->link('product/product/review', 'product_id=' . $this->request->get['product_id'] . '&page={page}');

    $data['pagination'] = $pagination->render();

    $data['results'] = sprintf($this->language->get('text_pagination'), ($qaa_total) ? (($page - 1) * 5) + 1 : 0, ((($page - 1) * 5) > ($qaa_total - 5)) ? $qaa_total : ((($page - 1) * 5) + 5), $qaa_total, ceil($qaa_total / 5));

    if ($this->config->get('config_qaa_guest') || $this->customer->isLogged()) {

      $data['qaa_guest'] = true;

    } else {

      $data['qaa_guest'] = false;

    }

    if ($this->config->get('config_google_captcha_status')) {

      $this->document->addScript('https://www.google.com/recaptcha/api.js');

      $data['site_key'] = $this->config->get('config_google_captcha_public');

    } else {

      $data['site_key'] = '';

    }

    if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/product/qaa.tpl')) {

      $this->response->setOutput($this->load->view($this->config->get('config_template') . '/template/product/qaa.tpl', $data));

    } else {

      $this->response->setOutput($this->load->view('default/template/product/qaa.tpl', $data));

    }

  }

  public function writeQaa() {

    $this->load->language('product/product');

    $data['quick_buy'] = $this->load->controller('common/quick_buy');

    $json = array();

    if ($this->request->server['REQUEST_METHOD'] == 'POST') {

      if ((utf8_strlen($this->request->post['name']) < 3) || (utf8_strlen($this->request->post['name']) > 25)) {

        $json['error'] = $this->language->get('error_name');

      }

      if ((utf8_strlen($this->request->post['text']) < 25) || (utf8_strlen($this->request->post['text']) > 1000)) {

        $json['error'] = $this->language->get('error_text');

      }

      if ($this->config->get('config_google_captcha_status') && empty($json['error'])) {

        if (isset($this->request->post['g-recaptcha-response'])) {

          $recaptcha = file_get_contents('https://www.google.com/recaptcha/api/siteverify?secret=' . urlencode($this->config->get('config_google_captcha_secret')) . '&response=' . $this->request->post['g-recaptcha-response'] . '&remoteip=' . $this->request->server['REMOTE_ADDR']);

          $recaptcha = json_decode($recaptcha, true);

          if (!$recaptcha['success']) {

            $json['error'] = $this->language->get('error_captcha');

          }

        } else {

          $json['error'] = $this->language->get('error_captcha');

        }

      }

      if (!isset($json['error'])) {

        $this->load->model('catalog/qaa');

        $this->model_catalog_qaa->addQaa($this->request->get['product_id'], $this->request->post);

        $json['success'] = $this->language->get('text_success');

      }

    }

    $this->response->addHeader('Content-Type: application/json');

    $this->response->setOutput(json_encode($json));

  }

  public function getRecurringDescription() {

    $this->language->load('product/product');

    $this->load->model('catalog/product');

    if (isset($this->request->post['product_id'])) {

      $product_id = $this->request->post['product_id'];

    } else {

      $product_id = 0;

    }

    if (isset($this->request->post['recurring_id'])) {

      $recurring_id = $this->request->post['recurring_id'];

    } else {

      $recurring_id = 0;

    }

    if (isset($this->request->post['quantity'])) {

      $quantity = $this->request->post['quantity'];

    } else {

      $quantity = 1;

    }

    $product_info   = $this->model_catalog_product->getProduct($product_id);

    $recurring_info = $this->model_catalog_product->getProfile($product_id, $recurring_id);

    $json = array();

    if ($product_info && $recurring_info) {

      if (!$json) {

        $frequencies = array(

            'day'        => $this->language->get('text_day'),

            'week'       => $this->language->get('text_week'),

            'semi_month' => $this->language->get('text_semi_month'),

            'month'      => $this->language->get('text_month'),

            'year'       => $this->language->get('text_year'),

        );

        if ($recurring_info['trial_status'] == 1) {

          $price      = $this->currency->format($this->tax->calculate($recurring_info['trial_price'] * $quantity, $product_info['tax_class_id'], $this->config->get('config_tax')));

          $trial_text = sprintf($this->language->get('text_trial_description'), $price, $recurring_info['trial_cycle'], $frequencies[$recurring_info['trial_frequency']], $recurring_info['trial_duration']) . ' ';

        } else {

          $trial_text = '';

        }

        $price = $this->currency->format($this->tax->calculate($recurring_info['price'] * $quantity, $product_info['tax_class_id'], $this->config->get('config_tax')));

        if ($recurring_info['duration']) {

          $text = $trial_text . sprintf($this->language->get('text_payment_description'), $price, $recurring_info['cycle'], $frequencies[$recurring_info['frequency']], $recurring_info['duration']);

        } else {

          $text = $trial_text . sprintf($this->language->get('text_payment_cancel'), $price, $recurring_info['cycle'], $frequencies[$recurring_info['frequency']], $recurring_info['duration']);

        }

        $json['success'] = $text;

      }

    }

    $this->response->addHeader('Content-Type: application/json');

    $this->response->setOutput(json_encode($json));

  }

}

 

и вот  review.tpl :
 

<form class="form-horizontal" id="form-review">
  <div id="review">
    <?php if ($reviews) { ?>
      <?php foreach ($reviews as $review) { ?>
        <table class="table table-striped table-bordered">
          <tr>
            <td style="width: 50%;"><strong><?php echo $review['author']; ?></strong></td>
            <td class="text-right"><?php echo $review['date_added']; ?></td>
          </tr>
          <tr>
            <td colspan="2"><p><?php echo $review['text']; ?></p>
              <?php for ($i = 1; $i <= 5; $i++) { ?>
                <?php if ($review['rating'] < $i) { ?>
                  <span class="fa fa-stack"><i class="fa fa-star-o fa-stack-2x"></i></span>
                <?php } else { ?>
                  <span class="fa fa-stack"><i class="fa fa-star fa-stack-2x"></i><i class="fa fa-star-o fa-stack-2x"></i></span>
                <?php } ?>
              <?php } ?></td>
          </tr>
        </table>
      <?php } ?>
      <div class="text-right"><?php echo $pagination; ?></div>
    <?php } else { ?>
      <p><?php echo $text_no_reviews; ?></p>
    <?php } ?>
  </div>
  <h2><?php echo $text_write; ?></h2>
  <?php if ($review_guest) { ?>
    <div class="form-group required">
      <div class="col-sm-12">
        <label class="control-label" for="input-name"><?php echo $entry_name; ?></label>
        <input type="text" name="name" value="" id="input-name" class="form-control" />
      </div>
    </div>
    <div class="form-group required">
      <div class="col-sm-12">
        <label class="control-label" for="input-review"><?php echo $entry_review; ?></label>
        <textarea name="text" rows="5" id="input-review" class="form-control"></textarea>

        <div class="help-block"><?php echo $text_note; ?></div>
      </div>
    </div>
    <div class="form-group required">
      <div class="col-sm-12">
        <label class="control-label"><?php echo $entry_rating; ?></label>
        &nbsp;&nbsp;&nbsp; <?php echo $entry_bad; ?>&nbsp;
        <input type="radio" name="rating" value="1" />
        &nbsp;
        <input type="radio" name="rating" value="2" />
        &nbsp;
        <input type="radio" name="rating" value="3" />
        &nbsp;
        <input type="radio" name="rating" value="4" />
        &nbsp;
        <input type="radio" name="rating" value="5" />
        &nbsp;<?php echo $entry_good; ?></div>
    </div>
    <?php if ($site_key) { ?>
      <div class="form-group">
        <div class="col-sm-12">
          <div class="g-recaptcha" id="review_recaptcha" data-sitekey="<?php echo $site_key; ?>"></div>
        </div>
      </div>
    <?php } ?>
    <div class="buttons clearfix">
      <div class="pull-right">
        <button type="button" id="button-review" data-loading-text="<?php echo $text_loading; ?>" class="btn btn-primary"><?php echo $button_continue; ?></button>
      </div>
    </div>
  <?php } else { ?>
    <?php echo $text_login; ?>
  <?php } ?>
</form>
<script type="text/javascript">
$('#tab-review').delegate('#button-review', 'click', function () {
      $.ajax({
        url: 'index.php?route=product/product/write&product_id=<?php echo $product_id; ?>',
        type: 'post',
        dataType: 'json',
        data: $("#form-review").serialize(),
        beforeSend: function () {
          loader.start();
          $('#button-review').button('loading');
        },
        complete: function () {
          loader.end();
          $('#button-review').button('reset');
        },
        success: function (json) {
          $('.alert-success, .alert-danger').remove();

          if (json['error']) {
            $('#tab-review input[name=\'rating\']:checked').after('<div class="alert alert-danger"><i class="fa fa-exclamation-circle"></i> ' + json['error'] + '</div>');
          }

          if (json['success']) {
            $('#tab-review input[name=\'rating\']:checked').after('<div class="alert alert-success"><i class="fa fa-check-circle"></i> ' + json['success'] + '</div>');

            $('#tab-review input[name=\'name\']').val('');
            $('#tab-review textarea[name=\'text\']').val('');
            $('#tab-review input[name=\'rating\']:checked').prop('checked', false);
          }
        }
      });
    });
</script>

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Dotrox    330

Научитесь пользоваться кнопкой вставки кода!

Непонятно, где переменная теряется, но где-то теряется. Попробуйте и в контроллере и в шаблоне поменять название переменной. Например, $data['product_id_test'] и $product_id_test.

Меняйте в оригинальном контроллере, а не из кеша, а потом обновите кеш модификаторов.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
12 минут назад, Dotrox сказал:

Научитесь пользоваться кнопкой вставки кода!

Непонятно, где переменная теряется, но где-то теряется. Попробуйте и в контроллере и в шаблоне поменять название переменной. Например, $data['product_id_test'] и $product_id_test.

Меняйте в оригинальном контроллере, а не из кеша, а потом обновите кеш модификаторов.

Если не сложно, для особо одаренного, напишите в каких файлах поменять название переменной ))

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Dotrox    330
7 минут назад, Olegshturman сказал:

Если не сложно, для особо одаренного, напишите в каких файлах поменять название переменной ))

Вот в тех двух, которые выложили, в них и поменяйте.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
6 минут назад, Dotrox сказал:

Вот в тех двух, которые выложили, в них и поменяйте.

Так а во втором такого как  $data['product вроде бы как нет.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Dotrox    330

Читайте внимательно:

33 минуты назад, Dotrox сказал:

Например, $data['product_id_test'] и $product_id_test.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
1 минуту назад, Dotrox сказал:

Читайте внимательно:

 

Вы меня наверное возненавидите, но я окончательно запутался )
Я думал вы имеете в виду,  $data['product_id_test']  поменять на  $product_id_test
Что поменять в первом, а что во втором файле? )

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Dotrox    330
2 минуты назад, Olegshturman сказал:

Я думал вы имеете в виду,  $data['product_id_test']  поменять на  $product_id_test

Нет, это то, на что надо поменять. Первое - для контроллера, второе - для шаблона.

Чтоб было понятней - я просто добавил в конец к существующему названию _test. То есть, и вам надо сделать именно это.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
6 минут назад, Dotrox сказал:

Нет, это то, на что надо поменять. Первое - для контроллера, второе - для шаблона.

Чтоб было понятней - я просто добавил в конец к существующему названию _test. То есть, и вам надо сделать именно это.

Для контроллера что поменять на  $data['product_id_test']  и 
в шаблоне что поменять на  $product_id_test
Заранее благодарен!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Dotrox    330

Ох. Очевидно же, что $data['product_id'] и $product_id. Я же написал, что просто добавил _test.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
7 минут назад, Dotrox сказал:

Ох. Очевидно же, что $data['product_id'] и $product_id. Я же написал, что просто добавил _test.

А вы бы не могли в этих файлах поменять? ) 

product.php

review.tpl

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Dotrox    330
12 минут назад, Olegshturman сказал:

А вы бы не могли в этих файлах поменять? )

Нет. Вы либо всё делаете сами и обращаетесь на форум за советами, либо не делаете вообще ничего, а просто платите, и всё сделают за вас.

На самом деле, если возникли такие сложности с переименованием переменных (а это далеко не самое сложное, что может понадобиться), я думаю, что вам лучше всё же воспользоваться вторым вариантом, иначе решение проблемы может растянуться на очень длительный срок

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
8 минут назад, Dotrox сказал:

Нет. Вы либо всё делаете сами и обращаетесь на форум за советами, либо не делаете вообще ничего, а просто платите, и всё сделают за вас.

На самом деле, если возникли такие сложности с переименованием переменных (а это далеко не самое сложное, что может понадобиться), я думаю, что вам лучше всё же воспользоваться вторым вариантом, иначе решение проблемы может растянуться на очень длительный срок

Согласен с вами полностью. Просто я так и не понял какую строку на какую поменять.
В контроллере какую строку поменять на  $data['product_id']       ?
В шаблоне какую строку поменять на  $product_id     ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
markimax    1 481
30 минут назад, Dotrox сказал:

Нет. Вы либо всё делаете сами и обращаетесь на форум за советами, либо не делаете вообще ничего, а просто платите, и всё сделают за вас.

На самом деле, если возникли такие сложности с переименованием переменных (а это далеко не самое сложное, что может понадобиться), я думаю, что вам лучше всё же воспользоваться вторым вариантом, иначе решение проблемы может растянуться на очень длительный срок

Без обид. Я вот думал на какой минуте "матча" у вас сдадут нервы (у меня бы раньше сдали :-D)
ТС - вам реально просто надо нанять кого то
Если вы не разбираетесь в двигателях вы же не лезете им кап. ремонт делать. "Нанимаете" специалиста
Может лучше к спецам обратиться в этой области. К примеру к тому же Dotrox

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
4 минуты назад, markimax сказал:

Без обид. Я вот думал на какой минуте "матча" у вас сдадут нервы (у меня бы раньше сдали :-D)
ТС - вам реально просто надо нанять кого то
Если вы не разбираетесь в двигателях вы же не лезете им кап. ремонт делать

Нанял бы, были бы на это средства ) А так увы, приходится самому )

Изменено пользователем Olegshturman

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Dotrox    330
25 минут назад, Olegshturman сказал:

В контроллере какую строку поменять на  $data['product_id']       ?
В шаблоне какую строку поменять на  $product_id     ?

Эти строки там у вас уже есть. Именно их вам и надо поменять. И замена заключается просто в том, что к ним нужно дописать _test (а что в результате должно получиться я уже написал выше).

 

18 минут назад, markimax сказал:

Я вот думал на какой минуте "матча" у вас сдадут нервы (у меня бы раньше сдали :-D)

Есть на форуме люди, которые заряжают меня терпимостью :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
13 минут назад, Dotrox сказал:

Эти строки там у вас уже есть. Именно их вам и надо поменять. И замена заключается просто в том, что к ним нужно дописать _test (а что в результате должно получиться я уже написал выше).

Наконец-то до меня дошло ) 
Сделал все, как вы сказали. Ничего не произошло (

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Dotrox    330

Кажется, я понял в чём проблема. Вероятно, в этом шаблоне отзывы ни у кого не работают (либо у вас не сработал модификатор, который должен был поправить контроллер). Автор шаблона перенёс форму отзывов из шаблона страницы товара в шаблон вывода отзывов, за заполнение которого отвечает другой метод в контроллере.

Вот это

$data['product_id'] = (int)$this->request->get['product_id'];

должно быть в методе review, а не index.

 

Найдите в контроллере строку

public function review() {

И допишите этот код сразу после неё. Не забывайте, что делать это надо в оригинальном контроллере, а не из кеша, а затем обновлять кеш модификаторов.

 

И не забудьте в шаблоне название вернуть обратно.

 

Кстати, для справки: что в контроллере записано так - $data['product_id'], в шаблоне выводиться так - $product_id. А всё, что в контроллере не в таком формате, как я написал, то в шаблон вообще не попадает.

Изменено пользователем Dotrox

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
12 часов назад, Dotrox сказал:

Кажется, я понял в чём проблема. Вероятно, в этом шаблоне отзывы ни у кого не работают (либо у вас не сработал модификатор, который должен был поправить контроллер). Автор шаблона перенёс форму отзывов из шаблона страницы товара в шаблон вывода отзывов, за заполнение которого отвечает другой метод в контроллере.

Вот это


$data['product_id'] = (int)$this->request->get['product_id'];

должно быть в методе review, а не index.

 

Найдите в контроллере строку


public function review() {

И допишите этот код сразу после неё. Не забывайте, что делать это надо в оригинальном контроллере, а не из кеша, а затем обновлять кеш модификаторов.

 

И не забудьте в шаблоне название вернуть обратно.

 

Кстати, для справки: что в контроллере записано так - $data['product_id'], в шаблоне выводиться так - $product_id. А всё, что в контроллере не в таком формате, как я написал, то в шаблон вообще не попадает.

Горе мне окаянному! )
Прописал код 

$data['product_id'] = (int)$this->request->get['product_id'];

после 

public function review() {

Обновляю модификатор и код стирается (((
Что я не так сделал? )

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти


  • Похожий контент

    • От Mark54
      Здравствуйте, как реализовать возможность ответа администратора на отзыв? т е сделать еще одно поле «Ответ администратора» и выводить его после поля отзыва.
       
       
    • От Rammstein91

      500.00 руб
      Скачать/Купить дополнение


      Модуль «Отзывы покупателей из ВК» для OpenCart
      Модуль предназначен для отображения отзывов из группы интернет-магазина в социальной сети ВКонтакте, тем самым происходит связывание страницы (стены) в группе ВК со страницей на сайте. Отзывы на сайте повышают лояльность покупателей, отзывы реальных людей из социальных сетей повышают лояльность еще больше! Отзывы могут быть отображены на любой странице сайта как статично, так и со слайдером с поддержкой touch.
      Использует VQMod и библиотеку cURL (VQMod отвечает за добавление ссылок: на страницу отзывов в Футере, в админке на модуль в разделе «Каталог»; cURL работает с VK API). Требуется ionCube Loader 5 и выше.
       
      ВОЗМОЖНОСТИ:
      - Автоматическое обновление отзывов посетителями страницы отзывов. Новые отзывы добавляются, у существующих - обновляются количество лайков и статусы Онлайн у пользователей
      - Модерирование отзывов и пользователей
      - Публикация комментариев на сайт после одобрения Администратором
      - Оповещение Администратора о новых комментариях на почту (почта должна быть установлена в общих настройках магазина)
      - Назначение ролей пользователям (Администратор, Пользователь) для возможности включения/отключения отображения отзывов администраторов на страницах сайта. У нескольких администраторов можно выбрать фото одного из администраторов
      - Вывод отзывов на страницы сайта в случайном/обычном порядке как статично, так и со слайдером с поддержкой touch
      ПРОВЕРКА НАЛИЧИЯ БИБЛИОТЕКИ cURL:
      Создайте файл "curl_test.php" в корне сайта со следующим содержанием:
      <?php header('Content-Type: text/html; charset=utf-8'); $url = 'http://dothesite.ru/curl_ok.php'; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_TIMEOUT, 10); curl_setopt($ch, CURLOPT_POSTFIELDS, "domain=".$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI']); $page = curl_exec ($ch); echo $page;?>   Сохраните файл и откройте его по адресу http://www.site.ru/curl_test.php (вместо site.ru подставьте Ваше доменное имя).
      Если откроется пустая страница, то библиотека не установлена на Вашем сервере. Вам необходимо обратиться к Вашему хостеру с просьбой ее включения.
       
      УСТАНОВКА:
      1. Распаковать архив.
      2. Cодержимое папки «upload» скопировать в корень сайта.
       
      <<Для Opencart, ocStore 2>>
      2. В зависимости включена ли поддержка FTP в настройках магазина («Система» - «Настройки» - «Ваш магазин» - вкладка «FTP») есть два способа установки:
      2.1 С FTP: В админке магазина в разделе «Модули» - «Установка расширений» загрузите архив «vkreview_2_0.ocmod.zip».
      2.2 Без FTP: Cодержимое папки «upload» из архива «vkreview_2_0.ocmod.zip» скопировать в корень сайта. Затем в админке магазина в разделе «Модули» - «Установка расширений» загрузите файл «vkreview.ocmod.xml».
      <<Для Opencart, ocStore 2>>
       
      3. Выполнить установку для модуля «DoTheSite.ru | Отзывы покупателей из ВК» в пункте «Дополнения» – «Модули».
      4. Отправить запрос разработчикам модуля на получение лицензии (см. пункт «ПОЛУЧЕНИЕ ЛИЦЕНЗИИ»). Ввести полученные лицензионные данные в соответствующие поля на вкладке «О модуле» и нажать кнопку «Применить».
      5. Заполнить обязательные поля в настройках модуля. Сохранить.
      6. Перейти на страницу с отзывами http://www.site.ru/index.php?route=product/vkreview (вместо site.ru - Ваше доменное имя). Запустится процесс парсинга отзывов из группы в ВК и отзывы появятся на сайте.
      7. Зайти в модуль в раздел «Пользователи» и установить роль Администратора для тех пользователей, кто является администратором.
      8. По желанию добавить модули для отображения отзывов на страницах сайта.
       
      ДЕМО:
      Админка демо-сайта:
      Opencart 1.5 http://dothesite.ru/opencart-module/admin
      Opencart 2.0 http://dothesite.ru/opencart-module/2/admin
      ocStore 2.3 http://dothesite.ru/opencart-module/23/admin
      Логин: demoVR
      Пароль: demoVR
      Демо-сайт:
      Opencart 1.5 http://dothesite.ru/opencart-module
      Opencart 2.0 http://dothesite.ru/opencart-module/2
      ocStore 2.3 http://dothesite.ru/opencart-module/23
       
      ЛИЦЕНЗИЯ:
      1. Запрещается передавать файлы модуля третьим лицам, как на платной, так и на безвозмездной основе.
      2. Покупатель имеет право использовать приобретенный модуль только для установки на собственный интернет-магазин.
      3. Модуль реализуется по принципу "1 покупатель = 1 домен". Срок действия лицензии не ограничен.
      4. Если покупатель будет уличен в нарушении правил описанных выше – он автоматически лишается технической поддержки.
      5. При самостоятельном изменении файлов модуля, которые повлекли к его неработоспособности - покупатель также лишается технической поддержки.
      6. За нарушение пункта 1 данных правил, покупатель будет забанен на форуме и на сайте dothesite.ru. Читайте Правила форума.
       
      ПОЛУЧЕНИЕ ЛИЦЕНЗИИ:
      Для получения лицензии вам необходимо связаться с разработчиками удобным для Вас способом. В обращении вы должны указать на каком сайте, когда и каким пользователем была осуществлена покупка модуля и имя домена, на котором будет работать модуль. Контакты для получения лицензии:
      E-mail:
      get_license@dothesite.ru
      rammstein_91@bk.ru
      ctasy91@mail.ru
       
      ТЕХНИЧЕСКАЯ ПОДДЕРЖКА:
      Техническая поддержка модуля «Отзывы покупателей из ВК» доступна только пользователям, числящимся в списке покупателей.
       
      РАЗРАБОТКА МОДУЛЯ:
      Андрей Лежнетев - http://dothesite.ru
      Добавил Rammstein91 Добавлено 29.05.2015 Категория Социальные сети Системные требования Ioncube Loader 5 Сайт разработчика http://dothesite.ru Старая цена Метод активации По запросу на почту Ioncube Loader Требуется OpenCart ocStore OpenCart.Pro, ocShop  
    • От seregin

      360.00 руб
      Скачать/Купить дополнение


      Модуль Отзывы покупателей
      Модуль добавляет возможность покупателям оставлять отзывы о сайте. Также добавляет ссылку с призывом сделать отзыв в письме для покупателя со сделанным заказом.

      Совместим с Opencart: 2.0.3.1 - 3.0.2.0
      Совместим с ocStore: 2.1.0.1 - 2.3.0.2.3

      Демонстрация

      Страница с отзывами: Перейти на сайт
      Модуль на странице товара: Перейти на сайт
      Список отзывов в панели управления: Перейти на сайт
      Настройки (Смотреть во вкладке Опции): Перейти на сайт

      Доступ в Панель управления:

      Логин - demo
      Пароль — demo
      Добавил seregin Добавлено 09.03.2016 Категория Модули Системные требования Сайт разработчика http://seregin-pro.ru/ Старая цена Метод активации Без активации Ioncube Loader Нет OpenCart 3.0
      2.3
      2.2
      2.1
      2.0 ocStore 2.3
      2.2
      2.1 OpenCart.Pro, ocShop Не проверялось  
    • От seregin
      Модуль добавляет возможность покупателям оставлять отзывы о сайте. Также добавляет ссылку с призывом сделать отзыв в письме для покупателя со сделанным заказом.

      Совместим с Opencart: 2.0.3.1 - 3.0.2.0
      Совместим с ocStore: 2.1.0.1 - 2.3.0.2.3

      Демонстрация

      Страница с отзывами: Перейти на сайт
      Модуль на странице товара: Перейти на сайт
      Список отзывов в панели управления: Перейти на сайт
      Настройки (Смотреть во вкладке Опции): Перейти на сайт

      Доступ в Панель управления:

      Логин - demo
      Пароль — demo
    • От Orel
      Добрый вечер уважаемые форумчане,
       
      хотел бы немного видоизменить шаблон, а именно уменьшить расстояние для описания продукта внизу, и на освободившееся место вставить модуль/шаблон
       
      продемонстрирую на одном из сайтов на опенкарт (не мой сайт)
      1 Скриншот: так выглядит по дефолту
      2 Скриншот: так я хотел бы, чтоб выглядело (сдвинуть текст в правую часть а на освобдившемся месте разместить модули для рекомендуемых товаров / новости по эксплуатации/ видео)
       
      1 скриншот
       
       
      2 Скриншот
       
      Буду признателен за советы
  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу