Перейти к содержанию
Vadya25

Дубль модуля. Но информация такая же как и в первом.

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

Здравствуйте.
Есть модуль персонализированные шаблоны. Делал дубль модуля, сделал он работает все хорошо...
Но проблема в том что в дубле информация такая же как и в первом, и при добавлении или удалении какойто персонализированной странички все повторяется и в первом.
Я понимаю может вопрос и глупый и легко решается, но так как я не опытный прошу помощи.
Заранее спасибо.

В модуле всего 4 файла:
контроллер (содержимое внизу)
языковый
и admin > view > template > module

а также файл vqmod

Может проблема в файле контроллера вот он

 

 

 

 

<?php
/**
* @author Shashakhmetov Talgat <talgatks@gmail.com>
*/
class ControllerModuleCustomTemplate2 extends Controller {
private $error = array(); 
private $template_dir;
 
public function __construct($registry){
        parent::__construct($registry);
        $this->template_dir = str_replace(array('/','\\'), DIRECTORY_SEPARATOR, DIR_CATALOG.'view'.DIRECTORY_SEPARATOR.'theme'.DIRECTORY_SEPARATOR.$this->config->get('config_template').DIRECTORY_SEPARATOR );
    }
 
public function index() {   
$this->load->language('module/custom_template_2');
 
$this->load->model('setting/setting');
 
if (($this->request->server['REQUEST_METHOD'] == 'POST') && $this->validate()) {
 
if (isset($this->request->post['custom_template_module'])) {
foreach ($this->request->post['custom_template_module'] as $key => $module) {
$this->request->post['custom_template_module'][$key]['template_name'] = str_replace(array('/','\\'), DIRECTORY_SEPARATOR, $module['template_name']);
}
}
 
$this->model_setting_setting->editSetting('custom_template_module', $this->request->post);
 
$this->session->data['success'] = $this->language->get('text_success');
 
$this->response->redirect($this->url->link('module/custom_template_2', 'token=' . $this->session->data['token'], 'SSL'));
}
$this->document->setTitle($this->language->get('heading_title'));
 
$data['heading_title'] = $this->language->get('heading_title');
 
$data['text_edit'] = $this->language->get('text_edit');
 
$data['button_save'] = $this->language->get('button_save');
$data['button_cancel'] = $this->language->get('button_cancel');
$data['button_add_module'] = $this->language->get('button_add_module');
$data['button_remove'] = $this->language->get('button_remove');
 
$data['text_select_all'] = $this->language->get('text_select_all');
$data['text_unselect_all'] = $this->language->get('text_unselect_all');
$data['text_unregistered'] = $this->language->get('text_unregistered');
 
//Module types
$data['module_types'] = array(
$this->language->get('module_type1'),
$this->language->get('module_type2'),
$this->language->get('module_type3'),
$this->language->get('module_type4'),
$this->language->get('module_type5'),
$this->language->get('module_type6')
);
 
//Entry
$data['entry_module_type'] = $this->language->get('entry_module_type');
$data['entry_category'] = $this->language->get('entry_category');
$data['entry_category_help'] = $this->language->get('entry_category_help');
$data['entry_customer_group'] = $this->language->get('entry_customer_group');
$data['entry_customer_group_help'] = $this->language->get('entry_customer_group_help');
$data['entry_information'] = $this->language->get('entry_information');
$data['entry_information_help'] = $this->language->get('entry_information_help');
$data['entry_manufacturer'] = $this->language->get('entry_manufacturer');
$data['entry_manufacturer_help'] = $this->language->get('entry_manufacturer_help');
$data['entry_product'] = $this->language->get('entry_product');
$data['entry_product_help'] = $this->language->get('entry_product_help');
$data['entry_template'] = $this->language->get('entry_template');
 
$data['button_check_file'] = $this->language->get('button_check_file');
 
$data['text_empty_field'] = $this->language->get('text_empty_field');
$data['text_file_success'] = $this->language->get('text_file_success');
$data['text_file_failed'] = $this->language->get('text_file_failed');
$data['text_file_demo'] = $this->language->get('text_file_demo');
 
//Load data from models (product, category, inforamtion)
$this->load->model('catalog/category');
$this->load->model('catalog/information');
$this->load->model('catalog/manufacturer');
$this->load->model('catalog/product');
$this->load->model('sale/customer_group');
 
$data['categories'] = $this->model_catalog_category->getCategories(0);
$data['informations'] = $this->model_catalog_information->getInformations();
$data['manufacturers'] = $this->model_catalog_manufacturer->getManufacturers();
$customer_groups = $this->model_sale_customer_group->getCustomerGroups();
 
//add unregistered users
$data['customer_groups'][] = array(
'name' => $this->language->get('text_unregistered'),
'customer_group_id' => null
);
 
foreach ($customer_groups as $key => $value) {
$data['customer_groups'][] = $value;
}
// end add 
// $data['customer_groups'] = $this->model_sale_customer_group->getCustomerGroups();
 
$modules = array();
 
if (isset($this->request->post['custom_template_module'])) {
$modules = $this->request->post['custom_template_module'];
} elseif ($this->config->get('custom_template_module')) {
$modules = $this->config->get('custom_template_module');
// $modules = $modules[''];
}
 
foreach ($modules as $key => $module) {
if (!isset($modules[$key]['categories'])) {
$modules[$key]['categories'] = array();
}
if (!isset($modules[$key]['informations'])) {
$modules[$key]['informations'] = array();
}
if (!isset($modules[$key]['manufacturers'])) {
$modules[$key]['manufacturers'] = array();
}
if (!isset($modules[$key]['customer_groups'])) {
$modules[$key]['customer_groups'] = array();
}
if (!isset($modules[$key]['product_manufacturers'])) {
$modules[$key]['product_manufacturers'] = array();
}
if (!isset($modules[$key]['product_categories'])) {
$modules[$key]['product_categories'] = array();
}
if (empty($modules[$key]['template_name'])) {
$modules[$key]['template_name'] = '';
}
$modules[$key]['parsed_products'] = array();
 
if (isset($this->request->post['custom_template_module'][$key]['products'])) {
$products = explode(',', $this->request->post['custom_template_module'][$key]['products']);
} else {
if (isset($module['products'])) {
$products = explode(',', $module['products']);
}else{
$products = array();
}
}
foreach ($products as $product_id) {
$product_info = $this->model_catalog_product->getProduct($product_id);
 
if ($product_info) {
$modules[$key]['parsed_products'][] = array(
'product_id' => $product_info['product_id'],
'name'       => $product_info['name']
);
}
}
}
 
$data['modules'] = $modules;
 
$data['template_dir'] = $this->template_dir;
$data['js_template_dir'] = $this->jsAddSlashes($this->template_dir);
 
if (isset($this->error['warning'])) {
$data['error_warning'] = $this->error['warning'];
} else {
$data['error_warning'] = '';
}
 
$data['token'] = $this->session->data['token'];
 
  $data['breadcrumbs'] = array();
 
    $data['breadcrumbs'][] = array(
        'text'      => $this->language->get('text_home'),
'href'      => $this->url->link('common/home', 'token=' . $this->session->data['token'], 'SSL'),
      'separator' => false
    );
 
    $data['breadcrumbs'][] = array(
        'text'      => $this->language->get('text_module'),
'href'      => $this->url->link('extension/module', 'token=' . $this->session->data['token'], 'SSL'),
      'separator' => ' :: '
    );
 
    $data['breadcrumbs'][] = array(
        'text'      => $this->language->get('heading_title'),
'href'      => $this->url->link('module/custom_template_2', 'token=' . $this->session->data['token'], 'SSL'),
      'separator' => ' :: '
    );
 
$data['action'] = $this->url->link('module/custom_template_2', 'token=' . $this->session->data['token'], 'SSL');
 
$data['cancel'] = $this->url->link('extension/module', 'token=' . $this->session->data['token'], 'SSL');
 
$data['header'] = $this->load->controller('common/header');
$data['column_left'] = $this->load->controller('common/column_left');
$data['footer'] = $this->load->controller('common/footer');
 
$this->response->setOutput($this->load->view('module/custom_template_2.tpl', $data));
}
private function jsAddSlashes($str) {
   $pattern = array(
       "/\\\\/"  , "/\n/"    , "/\r/"    , "/\"/"    ,
       "/\'/"    , "/&/"     , "/</"     , "/>/"
   );
   $replace = array(
       "\\\\\\\\", "\\n"     , "\\r"     , "\\\""    ,
       "\\'"     , "\\x26"   , "\\x3C"   , "\\x3E"
   );
   return preg_replace($pattern, $replace, $str);
}
private function validate() {
if (!$this->user->hasPermission('modify', 'module/custom_template_2')) {
$this->error['warning'] = $this->language->get('error_permission');
}
if (count($this->request->post, COUNT_RECURSIVE) >= ini_get('max_input_vars')) {
$this->error['warning'] = $this->language->get('error_max_input_vars');
}
if (!$this->error) {
return true;
} else {
return false;
}
}
public function check_file(){
$this->load->language('module/custom_template_2');
 
if (isset($this->request->post['path']) && $this->validate()) {
$path = str_replace(array('/','\\'), DIRECTORY_SEPARATOR, $this->template_dir . $this->request->post['path']);
if (is_file($path)) {
$result['success'] = sprintf($this->language->get('ajax_success'), $path);
}else{
$result['warning'] = sprintf($this->language->get('ajax_warning'), $path);
}
} else {
$result['warning'] = $this->language->get('error_permission');
}
 
$this->response->addHeader('Content-type: application/json');
$this->response->setOutput(json_encode($result));
}
}
?>

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


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

А зачем дубль, если не секрет, может быть проще все получится решить? При публикации кода пользуйтесь соответствующей кнопкой "<>".

Проблема в том, что оба модуля (оригинал и дубль) получают данные с одного источника (custom_template). Чтобы сделать дубликат модуля рекомендую удалить старый дубликат, создать новый, например, custom_template2. Далее во всех файлах дублированного модуля заменить custom_template на custom_template2 аналогично поступить с названиями файлов и названием контролера.

Но вам все равно придется столкнуться с проблемой несовместимости vqmod/ocmod модификации оригинала и дубликата модуля. В этом случае рекомендую поправить модификацию, чтобы она работала с настройками из сразу двух модулей. Для этого нужно будет как-то объединить массивы с данными модуля custom_template_module и custom_template2_module в vqmod/ocmod файле, а именно:

$custom_template_module = $this->model_setting_setting->getSetting('custom_template_module');

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


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

Спасибо за столь быстрый ответ.
Знайте все началось с того что при очередном добавление новой странички, мне выскочила вот такая надпись - 

 

Превышен лимит max_input_vars

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

Еще не все понял что вы посоветовали, но сейчас буду дерзать спасибо.


А по поводу проблемы с ....
 

Превышен лимит max_input_vars

      
 Кто сталкивался подскажите пожалуйста.

Превышен лимит max_input_vars

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


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

Лучше сначала попробуйте решить вопрос с max_input_vars, а то зря время потеряете. Вот тут я достаточно подробно описал как его решить.

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


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

Я уже по несколько раз пробывал эти варианты, никак не получается...
Все равно выскакивает ошибка.

Может это проблема на хостинге...

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

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


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

проблема в организации структуры информации.

дофига напичкали в товар (или где там это у вас вылетает?).

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


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

Ну да много пичкал, но не в товар а вообщем.
Ну я думал что это не проблема, можно загрузить хоть 100000 файлов...

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


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

Ну да много пичкал, но не в товар а вообщем.

Ну я думал что это не проблема, можно загрузить хоть 100000 файлов...

 

Так и есть, только max_input_vars нужно переплюнуть) Версию напишите, я сделаю дубликат. 

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


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

Я прошу прощения, версию чего?

 

Движка. В index.php посмотрите, в самом начале, если не знаете.

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


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

Ааа...2.0.1.1
Да смотрите я сделал дубль модуля и исправил так что теперь разная информация в первом и во втором.
Так что я думаю сейчас нету смысла заниматься max_input_vars, тем более тратить ваше время
Спасибо вам большое что помогли.






Знайте я то модуль изменил и все хорошо, но результатов нету.
Он работает но почему то изменения не вносит.
Может кто то подскажет как бы его сделать...

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

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


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

Я же вам говорил:

 

 

 

Но вам все равно придется столкнуться с проблемой несовместимости vqmod/ocmod модификации оригинала и дубликата модуля. В этом случае рекомендую поправить модификацию, чтобы она работала с настройками из сразу двух модулей. Для этого нужно будет как-то объединить массивы с данными модуля custom_template_module и custom_template2_module в vqmod/ocmod файле, а именно:

 

Модуль custom_template подменил код вывода шаблонов в поддерживаемых модулем разделах, на свой, если добавить туда такой же код от custom_template2, то работать разумеется ничего не будет. Нужно изменить vqmod/ocmod код, чтобы работал только один, но поддерживал cusom_template и custom_template2. Для этого в vqmod/ocmod модификации нужно изменить:

$custom_template_module = $this->model_setting_setting->getSetting('custom_template_module');

на:

$custom_template_module = $this->model_setting_setting->getSetting('custom_template_module');
$custom_template_module2 = $this->model_setting_setting->getSetting('custom_template2_module');

array_push($custom_template_module, array_values($custom_template2_module));

Не уверен, что приведенный мною код будет работать, нет возможности протестировать.

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


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

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

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

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

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

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

Войти

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

Войти

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

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


      Закрытое предложение после оформления
      Модуль «Закрытое предложение» позволяет создать специальное предложение для покупателей вашего магазина, купивших товар на определенную сумму.
      После оформления заказа на странице checkout/success выводится специальный блок с товаром со скидкой, который покупатель может добавить к только что созданному заказу в течении определенного времени. 
      Время, список товаров, диапазон сумм и уровень скидок - все это вы задаете в админке в самом модуле. При добавлении в 1 диапазон списка товаров будет выводиться 1 из товаров, рандомно. 
      Если под сумму заказа пользователя нет подходящих диапазонов - модуль не выводится. 
      В истории заказа при добавлении товара со скидкой пишется комментарий closed offer, чтобы администратор мог понять почему 1 из товаров в заказе со скидкой. 
      В заказ может быть добавлен только 1 товар со скидкой, после этого модуль скрывается. 
      Если покупатель не успевает в течении заданного времени - выводится текст, который вы можете задать в админке и модуль так же скрывается.
      Товары, которые были в заказе, в модуле не показываются, даже если заданы в настройках!

      Модуль не работает с онлайн оплатой, поэтому в настройках не забудьте указать, какие способы оплаты исключить!
       
      Обратите внимание, что при указании диапазона цен в настройках модуля, если у вас мультивалютный магазин - нужно указывать диапазон в основной валюте. Если у вас магазин работает в $, евро и рублях, но основная валюта $ - то именно в ней и должен указываться диапазон.
       
      Возможности:
      - Все необходимые настройки вынесены в админку.
      - Можно добавить неограниченное количество товаров и диапазонов сумм.
      - css стили вынесены в отдельный файл и их можно менять под себя.
      - Полная совместимость со стандартным шаблоном.
      - Уведомления администраторам о добавлении товара в заказ.
       
      Никакие системные файлы не затираются. Используется ocmod для изменения всего 1 файла!
       
      Демо http://oc2.7cub.ru
       
      Демо админки http://oc2.7cub.ru/admin/index.php?route=extension/module/closed_offer demo/demo
       
      Видео демо:
      https://www.youtube.com/watch?v=jbS9xcsqgSo
      Добавил fonclub Добавлено 06.11.2018 Категория Модули Системные требования php 5.4 и выше Сайт разработчика https://fonclub-blog.ru Старая цена Метод активации Без активации Ioncube Loader Нет OpenCart 3.0
      2.3 ocStore 3.0
      2.3 OpenCart.Pro, ocShop Opencart.pro 2.3  
    • От fonclub
      Модуль «Закрытое предложение» позволяет создать специальное предложение для покупателей вашего магазина, купивших товар на определенную сумму.
      После оформления заказа на странице checkout/success выводится специальный блок с товаром со скидкой, который покупатель может добавить к только что созданному заказу в течении определенного времени. 
      Время, список товаров, диапазон сумм и уровень скидок - все это вы задаете в админке в самом модуле. При добавлении в 1 диапазон списка товаров будет выводиться 1 из товаров, рандомно. 
      Если под сумму заказа пользователя нет подходящих диапазонов - модуль не выводится. 
      В истории заказа при добавлении товара со скидкой пишется комментарий closed offer, чтобы администратор мог понять почему 1 из товаров в заказе со скидкой. 
      В заказ может быть добавлен только 1 товар со скидкой, после этого модуль скрывается. 
      Если покупатель не успевает в течении заданного времени - выводится текст, который вы можете задать в админке и модуль так же скрывается.
      Товары, которые были в заказе, в модуле не показываются, даже если заданы в настройках!

      Модуль не работает с онлайн оплатой, поэтому в настройках не забудьте указать, какие способы оплаты исключить!
       
      Обратите внимание, что при указании диапазона цен в настройках модуля, если у вас мультивалютный магазин - нужно указывать диапазон в основной валюте. Если у вас магазин работает в $, евро и рублях, но основная валюта $ - то именно в ней и должен указываться диапазон.
       
      Возможности:
      - Все необходимые настройки вынесены в админку.
      - Можно добавить неограниченное количество товаров и диапазонов сумм.
      - css стили вынесены в отдельный файл и их можно менять под себя.
      - Полная совместимость со стандартным шаблоном.
      - Уведомления администраторам о добавлении товара в заказ.
       
      Никакие системные файлы не затираются. Используется ocmod для изменения всего 1 файла!
       
      Демо http://oc2.7cub.ru
       
      Демо админки http://oc2.7cub.ru/admin/index.php?route=extension/module/closed_offer demo/demo
       
      Видео демо:
      https://www.youtube.com/watch?v=jbS9xcsqgSo
    • От DRoVa
      View File


      OpenCart_Poll - Система голосований
      OpenCart_Poll 1.2
      проверено на ocStore-2.3.0.2.3 
       
      Установка:
      Через меню администрации -> Дополнения / Установщик дополнений OCMOD
      Файлы не переписываются. Не забываем обновлять дополнения.
       
      Описание:
      Система голосования для зарегистрированных пользователей.
      Используется AJAX, то есть голоса принимаются без перегрузки страницы.

      В наличии:
      - модуль вывода голосования (возможно выводить как отдельные голосования, так и все текущие или одно из не проголосованных).
      - страница создания и редактирования голосования (в том числе просмотр голосов).
       
      Особенности:
      - при включении модуля создаются таблицы и доступы, при выключении таблицы удаляются.
      - в голосовании у которого есть хоть один голос не редактируются описания, да бы не было шума типа "Я голосовал не за ЭТО".
          
      Submitter DRoVa Submitted 06/12/2018 Category Blogs, News & Articles Системные требования Сайт разработчика Старая цена Метод активации Без активации Ioncube Loader Нет OpenCart 2.3 ocStore 2.3 OpenCart.Pro, ocShop Opencart.pro 2.3
      OcShop 2.0.3.х  
    • От DRoVa
      OpenCart_Poll 1.2
      проверено на ocStore-2.3.0.2.3 
       
      Установка:
      Через меню администрации -> Дополнения / Установщик дополнений OCMOD
      Файлы не переписываются. Не забываем обновлять дополнения.
       
      Описание:
      Система голосования для зарегистрированных пользователей.
      Используется AJAX, то есть голоса принимаются без перегрузки страницы.

      В наличии:
      - модуль вывода голосования (возможно выводить как отдельные голосования, так и все текущие или одно из не проголосованных).
      - страница создания и редактирования голосования (в том числе просмотр голосов).
       
      Особенности:
      - при включении модуля создаются таблицы и доступы, при выключении таблицы удаляются.
      - в голосовании у которого есть хоть один голос не редактируются описания, да бы не было шума типа "Я голосовал не за ЭТО".
          
    • От Pavel666
      Скачать/Купить дополнение


      Блок поиска
      Встраиваемый в схемы ajax  блок поиска, ну в принципе на фото все видно, поиск используется стандартный от опенкарт.
      Со стилями как можно заметить сильно не заморачивался 
      В админке можно поменять все стили на свои.
      Добавил Pavel666 Добавлено 15.11.2018 Категория Поиск Системные требования Сайт разработчика Старая цена Метод активации Без активации Ioncube Loader Нет OpenCart 2.3 ocStore 2.3 OpenCart.Pro, ocShop Opencart.pro 2.3  
  • Последние посетители   0 пользователей онлайн

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

×

Важная информация

На нашем сайте используются файлы cookie и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности.