Jump to content
Sign in to follow this  
RGB

Создание своего модуля и избавление от vqmod

Recommended Posts

У меня вопрос к опытным разработчикам - надоело ставить костыли в шаблоны и решил приобщиться к таинствам разработки человеческих модулей для перенесения настроек шаблона в админку. Я взял болванку готового модуля, очистил ее от лишнего и получилось нечто, что имеет в настройках лишь переключатель yes/no, соответственно если выбран yes, то значение единственного свойства модуля (mymoduleproperty) равно 1. Потом я добавил в контроллер product.php такой кусок

$this->data['mymodule_settings'] = $this->config->get('mymodule_settings');
if ($this->config->get('mymodule_mymoduleproperty')) {		
  $this->data['mymoduleproperty'] = $this->config->get('mymodule_mymoduleproperty');
} else {
 $this->data['mymoduleproperty'] = false;
}

и смог в шаблоне вывести в нужном мне месте значение свойства, но это изменение базового контроллера, для чего нужен vqmod (а в некоторых шаблонах, которые я видел, авторы вообще без тени смущения перезаписывают контроллер header.php), а его использовать не хотелось бы. 

 

Поэтому вопрос - как правильно это сделать БЕЗ vqmod и перезаписи, если мне модуль нужен лишь как место хранения и изменения настроек шаблона? 

Share this post


Link to post
Share on other sites

какого-то простого способа это сделать я не знаю.. потому что в опенкарте к огромному сожалению просто нету нормального апи с помощью которого можно программно из своего модуля изменить код какого-то другого контроллера.. 

 

как вариант, можно создать свой модуль, с контроллером и своим javascript файлом. Этот яваскрипт запускается на нужных страницах, дергает через аякс контроллер, передает значение клиенту которое яваскрипт вставляет в нужное место на странице.. но это не всегда поможет, особенно для шаблона. 

  • +1 1

Share this post


Link to post
Share on other sites

А почему нельзя вот так?

<?php
    $mymoduleproperty = $this->config->get('mymodule_mymoduleproperty'); 
    echo $mymoduleproperty;
?>

Без внесения изменений в контроллер, у меня вроде бы сработало и в шаблоне главной, и на странице товара (этот кусок кода внутри шаблона)

Share this post


Link to post
Share on other sites

А почему нельзя вот так?

<?php
    $mymoduleproperty = $this->config->get('mymodule_mymoduleproperty'); 
    echo $mymoduleproperty;
?>

Без внесения изменений в контроллер, у меня вроде бы сработало и в шаблоне главной, и на странице товара (этот кусок кода внутри шаблона)

как вариант, я даже не подумал об этом.. у меня просто уже наверное mvc головного мозга)) типа все должно делаться через контроллер, а в шаблон передаваться готовая переменная. 

Share this post


Link to post
Share on other sites

контроллер нужен для нормальной совместимости дополнений и тех же шаблонов. Все привыкли что переменные в целом всегда одинаковые и ими стало проще манипулировать. 
 

у меня уже недели две вертится в голове интересная идея по написанию одного модуля который будет  предлагать вносить коррективы в магазине. Но ввиду того что этих изменений будет очень много и в основном они касаются пользовательской части - я в панике, так как столько vqmod'ов писать бред, еще и сохранив 90% хотябы совместимость с большинством шаблонов. 

Предлагаю коллективно подумать над  альтернативой vqmod

Share this post


Link to post
Share on other sites

контроллер нужен для нормальной совместимости дополнений и тех же шаблонов. Все привыкли что переменные в целом всегда одинаковые и ими стало проще манипулировать. 

 

у меня уже недели две вертится в голове интересная идея по написанию одного модуля который будет  предлагать вносить коррективы в магазине. Но ввиду того что этих изменений будет очень много и в основном они касаются пользовательской части - я в панике, так как столько vqmod'ов писать бред, еще и сохранив 90% хотябы совместимость с большинством шаблонов. 

Предлагаю коллективно подумать над  альтернативой vqmod

Насколько я понимаю, вышеприведенный пример с $this->config->get позволяет не думать о совместимости, если речь идет о настройках пользовательской части, потому что не трогает существующие контроллеры, а значения того, что юзер настроит в админке, будут доступны в любом месте любого tpl-файла, хотя это и не правильно с точки зрения mvc. sv2109 еще выше написал способ с яваскриптом и аяксом, но сомневаюсь, что реализовать его будет просто  :-)

 

Насчет того, что контроллер нужен для совместимости.. ну не знаю, может быть можно и так сказать, но как-то звучит слишком абстрактно. Суть каждого из элементов архитектуры ОС легко понять по картинке в английской или русской вики:

 

Module%27sfolder.png

Share this post


Link to post
Share on other sites

что же делать если нужно заменить одну часть кода из шаблона (при этом некоторые классы или переменные могут отличаться от оригинала) - на свою из модуля...
Боюсь если делать автоматизированную систему - например анализ файла на наличие переменной или функции и при выявлении её - заменять на свою - может пострадать не только верстка, но и нестандартный функционал (например из шаблонов pav и еже с ними). 
Если же делать этот же анализ и предлагать пользователю самостоятельно внести рекомендуемые изменения - это еще хуже...так как никому не секрет сколько времени отнимает поддержка казалось бы совершенно простых и совместимых дополнений, что уж говорить если пользователь сам будет вносить правки.

Baco както предложил написать некий модуль, который будет делать бекап файла в который вносится изменение...но с таким же успехом можно и vqmod использовать, имхо

Share this post


Link to post
Share on other sites

Попробую скорректировать, $this->config->get('tvoj_config'); - это лишь конфиг, который значение (не только булево) вносит в БД, можно переполнять таблицу setting но достигнуть того эффекта, что имеет vQmod нельзя, так как виртуальный модификатор, парсит сам код, и вносит изменения (в вашем примере это ваш же $this->config->get('tvoj_config'); в нужное место, программно же реализовать такое, будет сложновато, тоесть написание модуля - это написание модуля с его конфигами, а использование vQmod-а - это отдельная тема для разговора, вот есть темка, где раньше поднимался вопрос об отказе от виртуального модификатора.

 

P.S. Использование же вызовов конфига непосредственно в TPL - даже не рассматриваю, и называю такой стандарт кодирования по определению, фекалиеподобным... мягкоговоря.

Share this post


Link to post
Share on other sites

P.S. Использование же вызовов конфига непосредственно в TPL - даже не рассматриваю, и называю такой стандарт кодирования по определению, фекалиеподобным... мягкоговоря.

А что вы предлагаете для тех же целей - без вкмода и перезаписи файлов? Напомню, изначально задача стояла в разработке модуля для набора настроек шаблона, как-то: цвет каких-то элеметов, расположение, вариант слайдшоу и т.п.

Share this post


Link to post
Share on other sites

Попробую скорректировать, $this->config->get('tvoj_config'); - это лишь конфиг, который значение (не только булево) вносит в БД

 

тут один момент:  все данные в $this->config заружаются при загрузке системы, а потом просто считываются готовые данные из массива, поэтому 

 

P.S. Использование же вызовов конфига непосредственно в TPL - даже не рассматриваю, и называю такой стандарт кодирования по определению, фекалиеподобным... мягкоговоря.

да, я тоже склоняюсь к строгому mvc но если есть варианты:

1. сложный: создать отдельный контроллер, яваскрипт файл, сделать какие-то аякс запросы итд. короче очень сильно усложнить код + это не всегда поможет

2. использовать vqmod со всеми последствиями

3. использовать в шаблоне $this->config->get('tvoj_config'); 

то я бы использовал 3 вариант, тем более что kiss + учитывая то что данные берутся из готового массива то конструкция 

echo $this->config->get('tvoj_config'); 

почти ничем не отличается от 

echo $my_array['var'];

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

 

  • +1 1

Share this post


Link to post
Share on other sites

А что вы предлагаете для тех же целей - без вкмода и перезаписи файлов? Напомню, изначально задача стояла в разработке модуля для набора настроек шаблона, как-то: цвет каких-то элеметов, расположение, вариант слайдшоу и т.п.

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

Практический пример №1:

catalog\controller\module\moj_config.php

<?php
class ControllerModuleMoj_config extends Controller {
	private $error = array();	
	
	public function index() {

        $config_data = array(
			'config_page_1',
			'config_page_2',
			'config_page_3',
			'config_page_4',				
			'config_page_5',		
			'config_page_6',	
			'config_page_7',
			'config_page_8',
			'config_page_9',
			'config_page_10',
			'config_page_11',
			'config_page_12',
			'config_page_13',
			'config_page_14',
			'config_page_15'
        );


     foreach ($config_data as $conf) {
        $config = $this->cache->get('config.my_page' . (int) $this->config->get('config_language_id'));
		
		if (!$config) {
			$this->data[$conf] = $this->config->get($conf);
			$this->cache->set('config.my_page' . (int) $this->config->get('config_language_id'),$conf);
		} else {		
			$this->data[$conf] = $config[$conf];
		}
            
    }
...

в самом ТПЛ файле уже выводим по типу <?php echo $config_page_12; ?> в нужном месте...

 

P.S. Валидность кода не проверял, писал из головы логику...

Share this post


Link to post
Share on other sites

А зачем кешировать настройки шаблона? Вы представляете, сколько раз юзер может "играться" с цветами или отступами, пока подберет подходящую комбинацию и настроит шаблон так, как ему нравится, и что - ему придется каждый раз чистить кеш? Но фиг с ним, с кешем, я все равно не понимаю другой момент:

 

в самом же модуле, разобрать сам массив из кеша, присвоив значения переменных соотвественным значениям view файла

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

Share this post


Link to post
Share on other sites

А зачем кешировать настройки шаблона? Вы представляете, сколько раз юзер может "играться" с цветами или отступами, пока подберет подходящую комбинацию и настроит шаблон так, как ему нравится, и что - ему придется каждый раз чистить кеш? Но фиг с ним, с кешем, я все равно не понимаю другой момент:

 

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

согласен, с кешированием - перегнул... а вот по поводу пользовательского, то ничего не мешает создать вам пустой тпл, где в качестве кода, распишите стили своего конфига, будет а-ля "модуль-стайлшит" (©) где в клас подгружаються <?php echo $config_page_12; ?>, по крайней мере хоть кодеру проще будет ориентироваться в вашем шабе, с таким модулем, чем читать между строк 

<?php

$mymoduleproperty = $this->config->get('mymodule_mymoduleproperty');

echo $mymoduleproperty;

?>

P.S. Если что, могу подсобить с конструкцией.
  • +1 1

Share this post


Link to post
Share on other sites

Я приблизительно понял идею - в catalog/controller этого пустого модуля передаются настройки шаблона, соответственно я смогу их использовать в tpl-файле этого модуля, но как мне получить к ним доступ в других файлах шаблона, в том же header.tpl например? Разве для этого не нужно будет модифицировать контроллер header.php?

Share this post


Link to post
Share on other sites

Здесь есть несколько путей, можно просто в контроллере header.php подключить тут:

$this->children = array(
			'module/language',
			'module/currency',
			'module/cart',
                        'module/mine_conf'
		);

можно в админке, присвоить вывод модуля на всех схемах без разницы в какой позиции - это я думаю оптимальный вариант, ведь "рендёринга" в модуле не будет никакого, чисто переменные... для использования же по шаблону, вам надо поприсваивать всего навсего классы, а в модуле текущем сделать типа:

<style>
. body {
background: #<?php echo $config_page_14; ?>;
}
</style>

Share this post


Link to post
Share on other sites

Здесь есть несколько путей, можно просто в контроллере header.php подключить тут

 

..и в результате сделать именно то, от чего я предлагаю избавиться в первом сообщении этой темы :)

 

вам надо поприсваивать всего навсего классы

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

Share this post


Link to post
Share on other sites

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

 

файл конфига должен лежать в /system/config

подгрузить можно через $this->load->config('filename');

или через $this->config->load('filename');

после чего все данные из этого файла будут доступны в массиве конфига через $this->config->get('foo');

 

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

Share this post


Link to post
Share on other sites

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

 

файл конфига должен лежать в /system/config

подгрузить можно через $this->load->config('filename');

или через $this->config->load('filename');

после чего все данные из этого файла будут доступны в массиве конфига через $this->config->get('foo');

 

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

Альтернатива хорошая, но... подключать доп. класс в startup.php - нагружает, тем более когда массивный проект получается и оптимизируется чуть ли не каждый запрос (тут я про кеш подумал и написал ранее).

 

..и в результате сделать именно то, от чего я предлагаю избавиться в первом сообщении этой темы :)

 

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

catalog\controller\module\moj_config.php

вставляем что то типа этого:

<?php
class ControllerModuleMoj_config extends Controller {
	private $error = array();	
	
	public function index() {

        $config_data = array(
			'config_page_1',
			'config_page_2',
			'config_page_3',
			'config_page_4',				
			'config_page_5',		
			'config_page_6',	
			'config_page_7',
			'config_page_8',
			'config_page_9',
			'config_page_10',
			'config_page_11',
			'config_page_12',
			'config_page_13',
			'config_page_14',
			'config_page_15'
        );


		 foreach ($config_data as $conf) {
					
			$this->data[$conf] = $config[$conf];
			  
		}
		
		if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/module/moj_config.tpl')) {
			$this->template = $this->config->get('config_template') . '/template/module/moj_config.tpl';
		} else {
			$this->template = 'default/template/module/moj_config.tpl';
		}
		$this->render();
	}
?>

а уже в самом catalog/view/theme/default/template/module/moj_config.tpl

Пишем что то типа этого:

<style type="text/css">
#id-form {display:<?php echo $config_page_5; ?>;}
#id-form_2 {background-color:#<?php echo $config_page_11; ?>; cursor:wait;}
#id-content {height:
<?php if ($theme_config == 1 && $config_page_10 == 1) {?>
450
<?php } elseif ($theme_config == 1 && $config_page_10 == 0) { ?>
330
<?php } elseif ($theme_config == 0 && $config_page_10 == 1) { ?>
370
<?php } else { ?>
250
<?php } ?>px; width:560px;
.class-header {background: #<?php echo $config_page_14; ?>;}
</style>

ну а сами классы - по шаблону стандартно, например <div class="box-heading"> заменить на <div class="class-header">

Share this post


Link to post
Share on other sites

...

ну а сами классы - по шаблону стандартно, например <div class="box-heading"> заменить на <div class="class-header">

Спасибо конечно, но мне кажется, вы до сих пор не поняли, о чем я писал в самом начале темы. Я думал вы про классы, которые в контроллере, а не цсс :) Таким образом стили и классы изменить не проблема, это же очевидно, поскольку стили глобальны и влияют на весь документ, но речь шла совсем о другом, о более серьезных изменениях непосредственно в шаблоне. Попробую придумать пример на ходу.

 

Скажем, в админке в настройках шаблона может быть переключатель colorbox или fancybox или cloudzoom, соответственно для каждого случая в product.tpl код вывода изображений будет разным, будут разные атрибуты rel и т.п., соответственно понадобится ставить условие внутрь шаблона, что мол если юзер в админке выбрал colorbox, то вывести все так и так, а если fancybox, то иначе. И для вывода значений для проверки этого условия использовать контроллер модуля (даже скрытого) не получится, потому что он будет действовать лишь в пределах нашего файла шаблона moj_config.tpl, понимаете?

 

Или вот пример настроек из демки шаблона sellegance, там даже тип слайдшоу есть:

9kds+.png

 

 

 

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

Вот не знаю, для разработчика то это удобно, но юзеру должно быть проще и привычнее в админке на галочки и кнопочки пощелкать, а не в файле ковыряться.

Share this post


Link to post
Share on other sites

Вопрос более глобальный...

Для переключалки библиотек, использовать те же конфиги через модуль, но с помощью функции:

$this->document->addScript

и стилей (прямо в хедер) с помощью:

$this->document->addLink

Так как в каждом header.tpl есть код типа:

<?php foreach ($links as $link) { ?>
<link href="<?php echo $link['href']; ?>" rel="<?php echo $link['rel']; ?>" />
<?php } ?>

и 

<?php foreach ($scripts as $script) { ?>
<script type="text/javascript" src="<?php echo $script; ?>"></script>
<?php } ?>

то есть с помощью нужных конфигов, вполне можно переключать нужные библиотеки и нужные стили, а вот нюансы уже типа rel и т.д., то тут вопрос сложный, я в верстке не особо смекалист, но думаю так же решить можно.

  • +1 1

Share this post


Link to post
Share on other sites

У меня вопрос к опытным разработчикам - надоело ставить костыли в шаблоны и решил приобщиться к таинствам разработки человеческих модулей для перенесения настроек шаблона в админку. Я взял болванку готового модуля, очистил ее от лишнего и получилось нечто, что имеет в настройках лишь переключатель yes/no, соответственно если выбран yes, то значение единственного свойства модуля (mymoduleproperty) равно 1. Потом я добавил в контроллер product.php такой кусок

$this->data['mymodule_settings'] = $this->config->get('mymodule_settings');if ($this->config->get('mymodule_mymoduleproperty')) {		  $this->data['mymoduleproperty'] = $this->config->get('mymodule_mymoduleproperty');} else { $this->data['mymoduleproperty'] = false;}

и смог в шаблоне вывести в нужном мне месте значение свойства, но это изменение базового контроллера, для чего нужен vqmod (а в некоторых шаблонах, которые я видел, авторы вообще без тени смущения перезаписывают контроллер header.php), а его использовать не хотелось бы. 

 

Поэтому вопрос - как правильно это сделать БЕЗ vqmod и перезаписи, если мне модуль нужен лишь как место хранения и изменения настроек шаблона? 

 

Можно вообще ничего не перезаписывать. Главное иметь управление над registry (именно слушать класс) (там отслеживаются все вызовы, в принципе, это как "семафор").

Вообще можно, через библиотеки и модели "прослушивать", - перехватить вначале registry управление, для того чтобы потом отслеживать передачу управления всем кто затребует стандартную "библиотеку". А контроллеры не обязательно перехватывать, можно через модели подсовывать нужные данные а если не хватает, то досчитывать через перехват registry engine. Задача далеко не тривиальная правда, надо много моментов и нюансов иметь ввиду.

 

P.S. ... дело в том что даже когда вы вызываете $this->model_catalog_category->getCategory

То метод get в классе Registry - получает параметр model_catalog_category, а как подменить или прослушать уже дело техники

Самая большая задача стояла как перехватить без изменений файлов системы class Registry - он то ведь final и его параметр private ($data), но данную задачу решил.

Edited by markimax
  • +1 2

Share this post


Link to post
Share on other sites

Чтобы не плодить темы, спрошу здесь - продолжая "строительные" работы, столкнулся с еще одним препятствием. Хочу в шаблоне вывести текст "Рейтинг", но беда в том, что в самом ОС такой текст в любой локализации (именно одно слово) хранится лишь в языковом файле сравнения, соответственно чтобы вывести это слово в нужном месте на странице категорий например, нужно подгрузить в контроллере категорий значение этой языковой переменной (через вкмод или напрямую в шаблоне) 

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

Но в каждом из 5 контроллеров категорий, поиска, акций и т.п. мне кажется избыточным делать это, ради одного лишь слова. Поэтому вопрос - создавать в своем языковом файле то, что уже есть в родных файлах? Или еще появилась идея - может создать глобальную переменную $GLOBALS['supertemplate_text_rating'], которой сразу в контроллере header например присваивать нужный мне текст, чтобы потом эту глобальную переменную с уже присвоенным текстом использовать во всех нужных местах - т.е. на страницах каталога, поиска, акций, брендов?

Share this post


Link to post
Share on other sites

Сам спросил - сам отвечу :) После гугления оф. форума пришел к выводу, что глобальные переменные лучше вообще не использовать для таких целей, а поскольку в самом ОС одинаковые куски кода с получением языковых переменных и других данных спокойно используются во всех контроллерах категорий, поиска и т.п., то возможная избыточность в шаблоне не должна пугать.

Share this post


Link to post
Share on other sites

вы можете добавить свой текст в файл языка /language/russian/rissian.php например, а в шаблоне использовать так

<?php echo $this->language->get('supertemplate_text_rating')?>

в модуле всплывающей корзины загрузка всех текстовых констант реализована одной строкой

$this->data += $this->load->language('module/cartpopup');

для простоты разработки я бы добавил аналогичный код в system/engine/front.php перед вызовом index

Edited by freelancer
  • +1 1

Share this post


Link to post
Share on other sites

Спасибо, думал насчет этого (использовать основной файл языка), но очень хочется обойтись вообще без изменения файлов движка (не считая шаблона) и без vqmod. У вас в модуле интересно все сделано, и все таки его текстовые константы ведь нельзя вывести в произвольном месте шаблона, а значит придется все равно в каждом из контроллеров (или шаблонов, если не трогать контроллеры) загружать его язык.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
You are posting as a guest. If you have an account, please sign in.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

  • Similar Content

    • By zcell
      300.00 руб
      Скачать/Купить дополнение


      Списание остатков товара только при изменении статуса в админке
      Что делает модуль:
      Убирает списание товаров при оформлении заказа. Списывает остатки товара из заказа и остатки опций только при изменении на заданный в админке статус (стандартная настройка, см скриншот) Для чего это нужно:
      Если вы продаете товары, которые бывают в наличии в небольших количествах, то будет удобно списывать остатки товара по опреденному статусу, вместо автосписывания при оформления заказа клиентом.
      Например: оформлен заказ, но клиент отказался от него, либо что-то не подошло. В стандарте - товар уже будет списан, и если остаток был равен одному, другой клиент не сможет заказать товар. С модулем - товар спишется, только если вы поставили в заказе статус "Обработка" (зависит от настроек).
      То есть подтвердился заказ, тогда и бронируем товар за клиентом.
      Как установить:
      Залить файл в папку vqmod/xml Требования:
      opencart/ocstore 1.5.5 установленный vqmod Добавил zcell Добавлено 16.01.2016 Категория Прочее Системные требования Метод активации Без активации Ioncube Loader Нет OpenCart 1.5.5.1
      1.5.5 ocStore 1.5.5.1.2
      1.5.5.1.1
      1.5.5.1 OpenCart.Pro, ocShop Обращение к серверу разработчика  
    • By zcell
      750.00 руб
      Скачать/Купить дополнение


      Мультивалютный магазин с автоконвертацией по курсу ЦБ РФ и Yahoo (автообновление и фиксированные курсы валют)
      Цены по курсу ЦБ РФ и Yahoo | Разные валюты у товаров | Фиксированные курсы валют |
      100% совместимость | Пакетное назначение валюты |  Легкая установка
       
      Новая версия от 21 ноября!

      ВОЗМОЖНОСТИ:
      - Актуальные цены по курсу ЦентроБанка РФ и Yahoo
      - Пакетное редактирование валюты товаров по категории и/или бренду
      - Автоподсчет сконвертированной цены при редактировании цен товара;
      - Разные валюты для опций, скидок, акций и основной цены;
      - Возможность указать разные валюты у товаров;
      - Возможность использовать валюты с фиксированным курсом;
      - Клиенты видят суммы в валюте по умолчанию (рассчитанные по актуальному курсу);
      - Автоматическое обновление курса валют.
       
       
      ПРЕИМУЩЕСТВА:
      - Простая установка;
      - Интеграция в ядре системы, что позволяет получить интеграцию с подавляющим большинством модулей и шаблонов;
      - Не грузит систему, всего один файл.
        
       
      ПОДДЕРЖКА:
      В случае, если модуль не заработает в вашем магазине (1% вероятность), могу оказать бесплатную помощь по интеграции, но не более 30 минут (в 99% случаев этого времени достаточно).
      Сообщения без адреса сайта будут игнорируются. Для помощи по интеграции потребуется доступ по FTP и доступ в административную панель.
       
         
       
       
      УСТАНОВКА:
      0. Сделать БЕКАП базы данных!
      Для Opencart 1.5.x:
      1. Закачать через FTP файл модуля в папку vqmod/xml
      Для Opencart 2.1.x, 2.2.x, 2.3.x,3.x.x:
      1. Воспользоваться стандартным установщиком дополнений Opencart.
      Для всех версий:
      2. Открыть раздел Система - Локализация - Валюты
       
      КАК ПОЛЬЗОВАТЬСЯ:
      - После установки, зайдите в раздел (Система - Локализация - Валюты) - модуль автоматически проверит и создаст необходимые для функционирования поля
      - Зайдите в Система - Настройка -> Локализация и выберите подходящий метод обновления валют
      - Добавьте валюты (Система - Локализация - Валюты), если отсутствую необходимые валюты. Необходимо указать правильно код валюты - большими буквами, например RUB, USD, EUR
      - Выберите в каждом товаре, у которого валюта отлична от основной, нужную валюты (селектор находится справа от поля цены)
      - Если вам нужна фиксированная валюта (например 1 уе = 65 руб), то создаете новую валюту, пишите вымышленный код валюты, например FIX, FIC, FIE, чтобы система обновления не меняла курс автоматом, в поле значения курса пишите значение курса в рублях, далее выбираете эту валюту в нужных товарах.
        
      КАК РАБОТАЕТ МОДУЛЬ (для программистов и интеграторов):
      - Модуль создает дополнительные поля price_value и currency в таблице product, product_special, product_discount и product_option_value.
      - В поле price вышеуказанных таблиц хранится вычисленное значение цены по указанному значение price_value для валюты currency.
      - При обновлении курса валют во всех таблицах запускается перерасчет цены согласно новому курсу
      - При каждом сохранении товара поля для данного товара пересчитываются по текущему курсу
      - Фронт никак не модифицируется модулем, в связи с чем получаем 100% совместимость
       
      Административная панель: 
      - Цены товаров могут задавать в разных валютах (например указываете 10 USD в админке - на фронте будет цена по актуальному курсу доллара в рублях);
      - Валюты задаются как индивидуально для каждого товара, так и работает пакетное назначение, например в BatchEditor;
      - В заказах фиксируется сумма в рублях, по курсу соответствующему моменту оформления заказа (то есть цена товаров в заказе будет фиксирована).
       
      Фронт: 
      - Все цены автоматически показываются в основной валюте сайта;
      - Работает конвертация цены Опций, Скидки за количество;
      - Работает конвертация в мини-корзине, корзине и оформлении заказа;
      - Также корректно работает переключение между валютами в интернет магазине с пересчетом по актуальным курсам.
       
      Обновление курса валют:
      - Происходит при открытии главной страницы административной панели;
      - Источником курса валют является ЦБ РФ и Yahoo (если не удалось получить данные у ЦБ РФ, получит у Yahoo).
       
      Валюты:
      1. Стандартные валюты
      Любые валюты, которые поддерживаются ЦБ РФ или Yahoo
      2. Фиксированные курсы валют
      Например, если поставщик зафиксировал курс на 75 руб.
      Можно будет завести валюту и указать ей нужный курс, при обновлении курс будет сохраняться.
       

       

       


       
      Добавил zcell Добавлено 28.12.2015 Категория Цены, скидки, акции, подарки Системные требования Сайт разработчика Старая цена 900 Метод активации Автоматическая активация Ioncube Loader Нет OpenCart 3.0
      2.3
      2.2
      2.1
      2.0
      1.5.6.4
      1.5.6.3
      1.5.6.2
      1.5.6.1
      1.5.6
      1.5.5.1
      1.5.5
      1.5.4.1
      1.5.3.1 ocStore 3.0
      2.3
      2.2
      2.1
      1.5.5.1.2
      1.5.5.1.1
      1.5.5.1
      1.5.4.1.2
      1.5.4.1.1
      1.5.4.1
      1.5.3.1
      1.5.2.1
      1.5.1.3 OpenCart.Pro, ocShop Не проверялось Обращение к серверу разработчика Нет  
    • By balukoff
      300.00 руб
      Скачать/Купить дополнение


      Стрелки изменения порядка товаров в модуле "Рекомендуемые"
      Обработка добавляет стрелки к стандартному модулю "Рекомендуемые" в административной части opencart для изменения порядка товаров в списке.
      Например, нам нужно, чтобы товар Ipad был выше iMac, но тогда приходится удалять весь список и проходить всю операцию добавления. Однако модуль эту проблему решает.
      Необходим vqmod.
      - Не меняет исходные файлы
      - Использует "легкую" модель изменения DOM-структуры "на лету"
      - Сохранение модуля и вывод в шаблон - в стандартном режиме
      - Возможны доработки и обновления
      - Тестировалось на opencart/ocstore 1.5.x
      - Добавлена поддержка opencart 2.x
      Установка: просто поместите файл featured.xml в каталог vqmod\xml на Вашем сервере
      Для версии 2.x неоходимо установить модификатор через панель администрирования
      Добавил balukoff Добавлено 01.12.2015 Категория Прочее  
    • By savage4pro
      Скачать/Купить дополнение


      Замена символа рубля vQmod
      Мод заменяет знак валюты рубля на симпатичный почти уже стандартный символ (U+20BD), представленный в наборе "PT Sans" от google fonts.
      Подходит для любого шаблона OpenCart версий 1.5.x при отсутствии прямых модификаций ядра.
      Схема работы:
      добавляет в БД новую таблицу `oc_currency_modsymbols` с одной записью - для валюты с кодом RUB
      на этапе выборки данных о валютах оборачивает оригинальный символ в конструкцию для обработки подключаемыми при загрузке страницы стилями
      проверка таблицы (в случае отсутствия таблицы - создание, если пустая - заполнение) при каждом вызове конструктора класса Currency
      не ломает возможность менять оригинальный символ в админке, который будет показан при выводе шаблонов, в которых нет возможности подключать дополнительные стили (например, почтовые уведомления), пробелы до/после оригинального символа выносятся за пределы конструкции, т.е. сохраняются
      после установки можно вручную добавлять записи в таблицу `oc_currency_modsymbols` для форматирования символов валют по желанию (для включения в конечную строку стандартного значения, т.е. для автозамены, вместо него следует указать "_default_symbol_")
      мод можно безболезненно отключать/удалять, функциональность при этом вернется к стандартной
      Требуется vQmod версии 2.4.1.
      Установка:
      скопируйте содержимое папки "upload" в корень вашего сайта
      удалите файлы "/vqmod/vqcache/vq2-*"
      зайдите в панель администратора и очистите кэш vqmod и системный

      В случае некорректного отображения блока с форматированной ценой (например, вылезающие закрывающие теги вида: руб." />") необходимо в шаблоне, где эта цена выводится, оборачивать её вывод в strip_tags();
      Добавил savage4pro Добавлено 06.11.2015 Категория Прочее  
    • By LIAL
      Скачать/Купить дополнение


      Очистка кэша для OC 1.5.6.x
      Очистка кэша для Opencart 1.5.6.x
      Локализация: Русский, Английский
      Очистка кеша: Системный, Vqmod, mods.cache, кэш изображений.
      Директории проходит рекурсивно, удаляя затем пустые.
      НЕ удаляет файлы: index.*, .gitignore, .htaccess, .hgignore
      Для установки скопируйте корень папки upload в корень сайта, далее в панели администратора дайте права для доступа и изменения к модулю cache/cleaner.
      Очистка кэша находится в меню Администратора -> Система -> Очистка кэша
      Добавил LIAL Добавлено 11.09.2015 Категория Кэширование, сжатие, ускорение  
  • Recently Browsing   0 members

    No registered users viewing this page.

×

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.