COVID2019 и это вот все. Друзья, вся эта история начинает плохо пахнет. Мойте руки, не ходите в люди. Отложите все плановые покупки и положите в носок заначку. Заприте ваших родителей, бабушек-дедушек на даче. Лучше перебдеть чем недобдеть. Берегите себя!

BuslikDrev

Соучастники
  • Публикации

    2484
  • Зарегистрирован

  • Посещение

  • Days Won

    133

Сообщения, опубликованные пользователем BuslikDrev

  1. ИЗОБРАЖЕНИЯ

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

    cover36.png



    ИНФОРМАЦИЯ
    Название
    модуля: Приложение для сайта - "App for website"
    Версия модуля1.0
    Тип лицензии: Full (полная версия)
    Тип установки: ocmod
    Язык: Беларуская мова, English, Русский язык, Українська мова
    Дата создания: 2.12.2020

    Был протестирован на: OpenCart.cms 2.1.0.2.2 и OpenCart.pro 2.3.0.2.6 шаблон (default)
    Название архива: App for website v1.0 Full OpenCart 2.X-3.1.X.zip

    ОБЛАДАТЕЛЯМ OpenCart.pro 2.x СКИДКА 20%

    для получения скидки обратитесь к Admin

     

    ДЕМОНСТРАЦИЯ

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

    ДЕМО САЙТ
    ДЕМО АДМИНКА
    Логин: demo
    Пароль: demo



    ОПИСАНИЕ

    Модуль предназначен для возможности использования технологии manifest (developer.mozilla.org/ru/docs/Web/Manifest), то есть
    будет возможность создавать иконку (ссылку) сайта на рабочем столе устройства.

     


    ВНИМАНИЕ!

    Оригинальные файлы магазина не заменяет!
     

    auto.png

     

    Модификатор "вносит изменения" в следующие файлы:

    Скрытый текст
    
    catalog/controller/common/header.php
    catalog/view/theme/*/template/common/header*
    system/engine/loader.php
    system/library/document.php
    



    УСЛОВИЯ СОГЛАШЕНИЯ
    - Beta версии устанавливаете на свой страх и риск - бэкап базы данных (далее - БД) обязателен;
    - Модуль (модификатор, дополнение, расширение, приложение) (далее - Модуль) можно устанавливать на 1 домен включая поддомены (одна покупка - один домен);
    - Редактировать код можно только под нужды своего магазина;
    - Распространение модуля запрещено;
    - Техническая поддержка (далее - ТП) осуществляется только при появлении ошибки, бага, глюка (зависания) и не совместимости модуля с заявленными версиями Opencart и шаблонов на момент продажи, при установке на боевой сайт (рабочий хостинг);
    - Адаптация модуля под другую версию Опенкарта, нестандартный шаблон и сторонние модули - платная;
    - Автор модуля оставляет за собой право в любое время внести изменение в настоящее условие, описание и исходный код модуля;
    - Автор модуля оставляет за собой право прекратить ТП пользователям по истечению 365 календарных дней со дня последнего обновления модуля (Full или Beta версии), или со дня окончания продления ТП, или при форс-мажорных обстоятельств;
    - Автор не несёт ответственности за потерю или находку дохода пользователя из-за работы модуля;
    - ТП осуществляется при условии соблюдения данного соглашения, пишите в личные сообщения.


    Приобрести модуль можно ЗДЕСЬ!
    Вопросы и пожелания можно задавать в данной теме.

  2. 33 минуты назад, Dicomp сказал:

    Сделал как вы описали, но никаких изменений, в поиске по ключу ничего не находит ?  http://prntscr.com/vsd0fa

    Скрытый текст
    
    		if (substr(str_replace('\\', '/', realpath($directory) . '/' . $filter_name), 0, strlen(DIR_IMAGE . 'catalog')) == str_replace('\\', '/', DIR_IMAGE . 'catalog')) {
    			// Get directories
    			$directories = glob($directory . '/' . $filter_name . '*', GLOB_ONLYDIR);
    
    			if (!$directories) {
    				$directories = array();
    			}
    
    			// Get files
    			$files = glob($directory . '/*' . $filter_name . '*.{jpg,jpeg,png,gif,JPG,JPEG,PNG,GIF}', GLOB_BRACE);
    
    			if (!$files) {
    				$files = array();
    			}
    		}

     

     

  3. 23/ обходим ограничение max_Input_vars в своих модулях.

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

    Если кто-то желает можете создать отдельный модуль, как тут: https://opencartforum.com/files/file/2831-knopka-primenit-v-adminke/

     

    Как узнать информацию об ограничении параметров max_input_vars подсмотрите тут: https://opencartforum.com/topic/98360-podderzhka-kontrol-prevysheniya-max_input_vars-v-formah/

    Также это пример для модулей данные которых сохраняются в таблице oc_module, а не oc_setting, значит нам нужно вывести module_id в шаблон.

    Ещё нужно вывести языковую переменную для кнопки: $button_apply_piecemeal и обратить внимание на наличие пути модуля <?php echo $action; ?>

     

    Далее в контроллере модуля ищем:

    
    public function index () {

     

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

    Вставить после:

    
    		if (($this->request->server['REQUEST_METHOD'] == 'POST') && $this->validate() && isset($this->request->post['apply'])) {
    			if ($this->request->post['apply'] == 2 || $this->request->post['apply'] == 3) {
    				$post_data = array();
    
    				$posts = $this->cache->get('apply_piecemeal');
    
    				if ($posts) {
    					foreach ($posts as $key => $post) {
    						if (is_array($post)) {
    							foreach ($post as $k => $p) {
    								$post_data[$key][$k] = $p;
    							}
    						} else {
    							$post_data[$key] = $post;
    						}
    					}
    
    					foreach ($this->request->post as $key => $post) {
    						if (is_array($post)) {
    							foreach ($post as $k => $p) {
    								$post_data[$key][$k] = $p;
    							}
    						} else {
    							$post_data[$key] = $post;
    						}
    					}
    				} else {
    					$post_data = $this->request->post;
    				}
    
    				if ($this->request->post['apply'] == 3) {
    					$this->request->post = $post_data;
    					if (isset($this->request->post['module_id']) && $this->request->post['module_id']) {
    						$this->request->get['module_id'] = $this->request->post['module_id'];
    					}
    					$this->cache->delete('apply_piecemeal');
    				} else {
    					$cache = new Cache('file', 60);
    					$cache->set('apply_piecemeal', $post_data);
    					$this->response->addHeader('Content-Type: application/json');
    					$this->response->setOutput(json_encode(array(), JSON_HEX_AMP));
    					exit();
    				}
    			}
    		}

     

    В шаблоне модуля перед кнопкой сохранения или любое место вставить ( не забываем изменить id формы на свой ) :

    
    <button type="button" onclick="savePiecemeal('form-mymodule');" data-toggle="tooltip" title="<?php echo $button_apply_piecemeal; ?>" class="btn btn-default"><i class="fa fa-save"></i></button>

     

    В нужную форму нужно добавить input:

    
    <input type="hidden" id="apply" name="apply" value="0">

     

    В шаблоне модуля перед <?php echo $footer; ?> вставить:

    
    <script type="text/javascript"><!--
    	function savePiecemeal(id) {
    		var form = document.querySelectorAll('form[id="'+ id + '"] input, form[id="'+ id + '"] select, form[id="'+ id + '"] textarea');
    		//var formData = new FormData(document.forms[id]);
    
    		if (form.length >= <?php echo $max_input_vars; ?>) {
    			var savePiecemealAjax = function(stage, plus) {
    				text = document.createElement('i');
    				text.innerHTML = '<i>' + stage + '</i>';
    				document.querySelector('button[title="<?php echo $button_apply_piecemeal; ?>"] i, button[data-original-title="<?php echo $button_apply_piecemeal; ?>"] i').replaceWith(text);
    
    				data = new FormData();
    
    				if (!plus) {
    					var plus = 0;
    				}
    
    				for (var i = (0 + plus); i < (<?php echo $max_input_vars-2; ?> + plus); i++) {
    					if (form[i] && form[i].getAttribute('disabled') != 'true') {
    						data.append(form[i].name, form[i].value);
    					}
    				}
    
    				data.append('module_id', <?php echo $module_id; ?>);
    				if (stage > 2) {
    					plus = plus + <?php echo $max_input_vars-2; ?>;
    					data.append('apply', '2');
    				} else if (stage > 1) {
    					plus = plus + form.length - <?php echo $max_input_vars-2; ?> * (Math.ceil(form.length/<?php echo $max_input_vars-2; ?>) - 1);
    					data.append('apply', '2');
    				} else if (stage == 1) {
    					data.append('apply', '3');
    				}
    
    				var request = new XMLHttpRequest();
    				request.open('POST', '<?php echo $action; ?>'.replace('amp;', ''));
    				request.send(data);
    				request.onload = function(oEvent) {
    					if (request.status == 200) {
    						//request.response;
    						if (stage > 1) {
    							stage--;
    							savePiecemealAjax(stage, plus);
    						} else {
    							text = document.createElement('i');
    							text.innerHTML = '<i class="fa fa-save"></i>';
    							document.querySelector('button[title="<?php echo $button_apply_piecemeal; ?>"] i, button[data-original-title="<?php echo $button_apply_piecemeal; ?>"] i').replaceWith(text);
    							location.href = location.href;
    						}
    					} else {
    						alert("Error " + request.status + " occurred when trying to upload your file.<br \/>");
    					}
    				};
    			}
    
    			savePiecemealAjax(Math.ceil(form.length/<?php echo $max_input_vars-2; ?>));
    		} else {
    			document.querySelector('form input[name="apply"]').value = 1;
    			document.getElementById(id).submit();
    		}
    	}
    //--></script>

     

     

  4. 3 часа назад, bracula сказал:

    А может быть один и тот же вирус на телефоне и компьютере?

    21 век - конечно может из-за разных родов синхронизаций, одного интернета (wifi) и т.д. Также может из-за вашего хостинга, который заражён.