Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

SooR

Користувачі
  • Публікації

    1 508
  • З нами

  • Відвідування

Повідомлення, опубліковані користувачем SooR

  1. Тогда так должно сработать

     

    Спойлер
    
    <?php
    class ControllerExtensionModulePavautosearch extends Controller {
    
    	private $mdata = array();
    
    	public function index($setting = array()) {
        if (!$setting) {
        	$setting = $this->config->get('pavautosearch_module');
        }
    
        echo '<div style="display:none">';
    		echo '<pre>';
    		print_r($setting);
    		echo '</pre>';
    		echo '</div>';
    
    		// pavo 2.2 fix
    		$this->load->language('extension/module/themecontrol');
    
    		$config_theme = $this->config->get('theme_default_directory');
    
    		$this->mdata['objlang']   = $this->language;
    		$this->mdata['ourl']      = $this->url;
    		$this->mdata['sconfig']   = $this->config;
    		$this->mdata['themename'] = $config_theme;
    		// pavo 2.2 fix
    
    		static $module = 0;
    		$this->load->language('extension/module/pavautosearch');
    		$this->load->model('tool/image');
    		$this->load->model('catalog/category');
    		$this->load->model('catalog/manufacturer');
    
    		$this->mdata['objlang'] = $this->language;
    
    		if (file_exists('catalog/view/theme/' . $config_theme . '/stylesheet/pavautosearch.css')) {
    			$this->document->addStyle('catalog/view/theme/' . $config_theme . '/stylesheet/pavautosearch.css');
    		} else {
    			$this->document->addStyle('catalog/view/theme/default/stylesheet/pavautosearch.css');
    		}
    
    		$this->mdata['additional_class'] = isset($setting['class'])?$setting['class']:'';
    		$this->mdata['limit'] = isset($setting['limit'])?$setting['limit']:5;
    		$this->mdata['show_category'] = isset($setting['show_category'])?$setting['show_category']:'1';
    		$this->mdata['show_image'] = isset($setting['show_image'])?$setting['show_image']:'1';
    		$this->mdata['show_price'] = isset($setting['show_price'])?$setting['show_price']:'1';
    		$this->mdata['categories'] = $this->mdata["manufacturers"] = array();
    
    		if($this->mdata['show_category']){
    
    			// 3 Level Category Search
    			$this->mdata['categories'] = array();
    
    			$this->mdata['category_id'] = 0;
    
    			$categories_1 = $this->model_catalog_category->getCategories(0);
    
    			foreach ($categories_1 as $category_1) {
    				$level_2_data = array();
    
    				$categories_2 = $this->model_catalog_category->getCategories($category_1['category_id']);
    
    				foreach ($categories_2 as $category_2) {
    					$level_3_data = array();
    
    					$categories_3 = $this->model_catalog_category->getCategories($category_2['category_id']);
    
    					foreach ($categories_3 as $category_3) {
    						$level_3_data[] = array(
    							'category_id' => $category_3['category_id'],
    							'name'        => $category_3['name'],
    						);
    					}
    
    					$level_2_data[] = array(
    						'category_id' => $category_2['category_id'],
    						'name'        => $category_2['name'],
    						'children'    => $level_3_data
    					);
    				}
    
    				$this->mdata['categories'][] = array(
    					'category_id' => $category_1['category_id'],
    					'name'        => $category_1['name'],
    					'children'    => $level_2_data
    				);
    			}
    
    		}
    
    		$this->mdata['module'] = $module++;
    
    		return $this->load->view('extension/module/pavautosearch', $this->mdata);
    	}
    	public function autocomplete() {
    		$json = array();
    
    		$this->load->language('product/category');
    		if (isset($this->request->get['filter_name']) || isset($this->request->get['filter_manufacturer_id']) || isset($this->request->get['filter_category_id'])) {
    			$this->load->model('tool/image');
    			$this->load->model('catalog/product');
    
    			if (isset($this->request->get['filter_name'])) {
    				$filter_name = $this->request->get['filter_name'];
    			} else {
    				$filter_name = '';
    			}
    
    			if (isset($this->request->get['filter_category_id'])) {
    				$filter_category_id = $this->request->get['filter_category_id'];
    			} else {
    				$filter_category_id = '';
    			}
    			if (isset($this->request->get['description'])) {
    				$description = $this->request->get['description'];
    			} else {
    				$description = '';
    			}
    			if (isset($this->request->get['sub_category'])) {
    				$sub_category = $this->request->get['sub_category'];
    			} else {
    				$sub_category = '';
    			}
    
    			if (isset($this->request->get['limit'])) {
    				$limit = $this->request->get['limit'];
    			} else {
    				$limit = 20;
    			}
    
    			if (isset($this->request->get['width'])) {
    				$width = $this->request->get['width'];
    			} else {
    				$width = 100;
    			}
    
    			if (isset($this->request->get['height'])) {
    				$height = $this->request->get['height'];
    			} else {
    				$height = 100;
    			}
    
    			$data = array(
    				'filter_name'  => $filter_name,
    				'filter_tag'   => $filter_name,
    				'filter_description' => $description,
    				'filter_sub_category' => $sub_category,
    				'filter_category_id' => $filter_category_id,
    				'start'        => 0,
    				'limit'        => $limit
    			);
    
    			$results = $this->model_catalog_product->getProducts($data);
    			$total = $this->model_catalog_product->getTotalProducts($data);
    			foreach ($results as $result) {
    				if ($result['image']) {
    					$image = $this->model_tool_image->resize($result['image'], $width, $height);
    				} else {
    					$image = false;
    				}
    				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')), $this->session->data['currency']);
    				} 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')), $this->session->data['currency']);
    				} else {
    					$special = false;
    				}
    				if ($this->config->get('config_tax')) {
    					$tax = $this->currency->format((float)$result['special'] ? $result['special'] : $result['price'], $this->session->data['currency']);
    				} else {
    					$tax = false;
    				}
    
    				$json[] = array(
    					'total' => $total,
    					'product_id' => $result['product_id'],
    					'name'       => strip_tags(html_entity_decode($result['name'], ENT_QUOTES, 'UTF-8')),
    					'model'      => $result['model'],
    					'image'		 => $image,
    					'link'		 => $this->url->link('product/product','product_id='.$result['product_id']),
    					'special'	 => $special,
    					'tax'		 => $tax,
    					'price'      => $price
    				);
    			}
    
    		}
    
    		$this->response->setOutput(json_encode($json));
    	}
    }
    ?>

     

     

    • +1 1
  2. @abonnent , нужно изначально знать как подключается этот модуль, какого он типа? Если он добавляется в списке модулей, то должен получать $setting аргументом.

     

    Вы должны сперва правильно сохранить настройки этого модуля (не в setting?), затем использовать его.

  3. Есть два типа модулей: модули "одиночки" и модули, которые создаются добавлением в списке модулей.

    Настройки первого типа сохраняются в таблице setting, второго - в module.

     

    $setting идет в модулях второго типа (карусель, баннеры, последние...).

    Модули без "подмодулей" такой переменной не получают (категории, фильтр, аккаунт...).

     

    Чтобы получить настройки модуля из таблицы setting, используйте API конфига:

    $this->config->get('mymodule_status');

     

  4. Подозрение на то, что filemanager.php неверно считает количество файлов, создавая вторую страницу, на которой нет изображений.

    Проверьте по ftp, могут ли быть изображения на второй странице менеджера?

  5. Здравствуйте. Что происходит после нажатия на другую страницу?

    Откройте консоль браузера (F12) и посмотрите наличие ошибок JavaScript (вкладка Console), если их нет, то нужно смотреть куда уходит запрос (вкладка Network) и что он возвращает.

  6. @mmmtrade , Здравствуйте.

     

    === ВНИМАНИЕ ========================================================================
    
    Перед обновлением ОБЯЗАТЕЛЬНО сделайте резервную копию базы данных вашего магазина!
    
    Установка иными способами не гарантирует правильную работоспособность модуля фильтра.
    Используйте метод установки описанный ниже.
    
    === ОБНОВЛЕНИЕ ======================================================================
    
    1.  Перейдите в
          > Дополнения
            > Модули
              > Фильтр товаров OCFilter
                > "Редактировать"
                  > Выключите модуль (статус - отключено) и сохраните настройки
        ________________________________________________________________________________
    
    2. Перейдите в
          > Дополнения
            > Менеджер дополнений
              > Установите флажок напротив "OCFilter Modification"
              > Нажмите на "Удалить" в верхнем правом углу страницы
              > Нажмите "Очистить"
              > Затем "Обновить"
        ________________________________________________________________________________
    
    3.  Перейдите в
          > Дополнения
            > Установка дополнений
              > Установите ocfilter.update.ocmod.zip из папки UPDATE > ваша версия OpenCart
        ________________________________________________________________________________
    
    4.  Перейдите в
          > Дополнения
            > Менеджер дополнений
              > Нажмите "Очистить"
              > Затем "Обновить"
        ________________________________________________________________________________
    
    5.  Перейдите в
          > Дополнения
            > Модули
              > Фильтр товаров OCFilter
                > "Редактировать"
    
        Включите модуль и сохраните настройки
    

     

  7. Самый простой вариант - дублировать себе письмо покупателя.

     

    Идем в catalog/controller/mail/order.php и находим

    $mail->setHtml($this->load->view('mail/order_add', $data));
    $mail->send();

    после вставляем

    // Send to additional alert emails
    $emails = explode(',', $this->config->get('config_mail_alert_email'));
    
    $emails[] = $this->config->get('config_email');
    
    foreach ($emails as $email) {
      if ($email && filter_var($email, FILTER_VALIDATE_EMAIL)) {
        $mail->setTo($email);
        $mail->send();
      }
    }

    находим

    public function alert(&$route, &$args) {

    после вставляем

    return;

    Решение не проверялось. Применять с осторожностью.

  8. Вариант 1

     

    В common/menu.twig подгружать два шаблона

     

    {% include 'default/template/common/menu_desktop.twig' %}
    {% include 'default/template/common/menu_mobile.twig' %}

    Вариант 2

     

    В контроллере создать две переменные обработанных шаблонов

     

    $data['menu_desktop'] = $this->load->view('common/menu_desktop', $data);
    $data['menu_mobile'] = $this->load->view('common/menu_mobile', $data);
    

    В common/menu.twig

    <div id="menu-desktop">{{ menu_desktop }}</div>
    <div id="menu-mobile">{{ menu_mobile }}</div>

     

    • +1 3
×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.