Moдуль для Webasyst Shop-Script

Материал из Newman's WiKi.

Перейти к: навигация, поиск

В данной статье будем рассматривать о том как создать модуль для Webasyst Shop-Script. Так как толковой информации для разработчика найти не получилось, то в основном пришлось идти метод проб и ошибок, а так же путем анализа исходных кодов магазина.

Примечание: Все пути указаны относительно корневой директории магазина

Создание модуля

Модули находятся в поддиректориях внутри папки /modules/. Один модуль - одна папка. Создадим для нашего модуля папку с именем modulefolder. Внутри этой папки должно находится минимум два файла. Первый файл это описание модуля в формате XML. Называться этот файл может следующим образом connector.modulename.xml Ниже приведен пример такого файла.

<Connector>
	<Class>
		<Name>Modulename</Name>
		<File>class.modulename.php</File>
		<Title>My module</Title>
		<Description></Description>
		<SingleInstallation>true</SingleInstallation>
	</Class>
</Connector>

В файле class.modulename.php, который упоминается в файле описания находится класс модуля.

В минимальной версии этот файл может быть следующим.

class Modulename extends ComponentModule  {
	
	function initInterfaces(){
                $this->__registerComponent('modulename', 'My module', array('general_layout', 'home_page'), 'methodFShowModule');
	}

	function methodFShowModule(){
		$Register = &Register::getInstance();
		$smarty = &$Register->get(VAR_SMARTY);
		$smarty->assign("mymodule_var", 100);
		$smarty->display('customer_mymodule.tpl.html');
	}
}

Файл customer_mymodule.tpl.html это файл шаблона Smarty который находится в папке /templates/frontend/

Установка

Стандартной возможности для установки модуля в систему я не нашел. Поэтому пришлось лезть напрямую в базу. Итак приступим. Будем считать что у всех таблиц префикс SC. Именно такой префикс я буду использовать при нзавании таблиц и при написании запросов.

1. Добавим описание модуля в таблицу SC_modules

INSERT INTO `SC_modules` SET `ModuleVersion`=1, `ModuleClassName`='Modulename', `ModuleClassFile`='/modulefolder/class.modulename.php'

Теперь нам надо узнать идентификатор записи. Можем посмотреть его через phpMyAdmin или же узнать с помощью запроса

SELECT `ModuleID` FROM `SC_modules` WHERE `ModuleClassName`='Modulename';

Это значение MID пригодится нам на следующем этапе.

2. Добавим строку в таблицу SC_module_configs

INSERT INTO `SC_module_configs` SET `ModuleID`=MID, `ConfigKey`='modulename', `ConfigInit`=1002, `ConfigEnabled`=1;

Узнаем идентификатор ролученной записи.

SELECT `ModuleConfigID` FROM `SC_module_configs` WHERE `ModuleID`=MID;

Полученное значение MCID будем использовать на следующем этапе.

3. Добавим строку в таблицу SC_interface_interfaces

INSERT INTO `SC_interface_interfaces` SET `xInterfaceCaller`='51_cpt_connector', `xInterfaceCalled`='MCID_modulename';

Возможно на других установках магазина значение числа в строке "51_cpt_connector" будет другим. Но это надо смотреть на конкретной версии.

В результате должна появится возможность добавлять наш шаблон в редакторе дизайна.

Добавление на сайт

Добавить модуль на страницу можно либо через визуальный редактор дизайна страницы, либо вставив в шаблон следующий код

{cpt_modulename}

В результате этих действий у меня все заработало ;)