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_новыйМодуль}.


Нет аватара

grernenia 18 августаа в 12:46 #

Phu Buy Viagra Usa Html Buy Viagra Usa ivermectin for lice These granules increase in allergic responses and engulf substances that trigger the allergies.

Нет аватара

grernenia 18 августаа в 12:46 #

Phu Buy Viagra Usa Html Buy Viagra Usa ivermectin for lice These granules increase in allergic responses and engulf substances that trigger the allergies.

Нет аватара

aroumnirm 02 сентября в 12:13 #

generic cialis online Many other medications may also interact with sildenafil, so be sure to tell your doctor about all the medications you are taking, even those that do not appear on this list

Нет аватара

aroumnirm 02 сентября в 12:13 #

generic cialis online Many other medications may also interact with sildenafil, so be sure to tell your doctor about all the medications you are taking, even those that do not appear on this list

Нет аватара

PROPECORN 04 сентября в 17:31 #

PEDT scores after 1 month order priligy online usa

Нет аватара

PROPECORN 04 сентября в 17:31 #

PEDT scores after 1 month order priligy online usa

Нет аватара

untolla 06 сентября в 16:13 #

Average savings on sildenafil over the last 30 days best price cialis It marks the first time the island has full access to those funds

Нет аватара

untolla 06 сентября в 16:13 #

Average savings on sildenafil over the last 30 days best price cialis It marks the first time the island has full access to those funds

Нет аватара

encance 09 сентября в 00:28 #

Once your order is shipped, you will receive an email link to track your shipment generic 5mg cialis best price It s also slightly less likely to cause common ED medication side effects, such as headache and dyspepsia indigestion

Нет аватара

encance 09 сентября в 00:28 #

Once your order is shipped, you will receive an email link to track your shipment generic 5mg cialis best price It s also slightly less likely to cause common ED medication side effects, such as headache and dyspepsia indigestion

Нет аватара

snosque 11 сентября в 16:47 #

Describe your experience with your nurse at Shady Grove Fertility. over the counter clomid substitute Levonorgestrel intrauterine system for endometrial protection in women with breast cancer on adjuvant tamoxifen.

Нет аватара

snosque 11 сентября в 16:47 #

Describe your experience with your nurse at Shady Grove Fertility. over the counter clomid substitute Levonorgestrel intrauterine system for endometrial protection in women with breast cancer on adjuvant tamoxifen.

Нет аватара

cimaanymn 14 сентября в 18:23 #

tamoxifen over the counter

Нет аватара

cimaanymn 14 сентября в 18:23 #

tamoxifen over the counter

Нет аватара

Seatefkal 18 сентября в 11:05 #

Physicians may adjust your dose based on a measure of your kidney function known as creatinine clearance CrCl. doxycycline for staph

Нет аватара

Seatefkal 18 сентября в 11:05 #

Physicians may adjust your dose based on a measure of your kidney function known as creatinine clearance CrCl. doxycycline for staph


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