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

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


Recommended Posts

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

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

а также файл vqmod

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

 

 

 

 

<?php
/**
* @author Shashakhmetov Talgat <[email protected]>
*/
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

Надіслати
Поділитися на інших сайтах


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

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

Змінено користувачем Vadya25
Надіслати
Поділитися на інших сайтах


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

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

Надіслати
Поділитися на інших сайтах

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

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

 

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

Надіслати
Поділитися на інших сайтах

Ааа...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));

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

Надіслати
Поділитися на інших сайтах

Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз

×
×
  • Створити...

Important Information

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