Внедрение форм в контент с помощью шорткодов

Для создания шорткода нам понадобится модуль "Шорткоды" он должен быть установлен в системе, также наличие редакции HostCMS содержащей модуль "Формы".

1. Создаем шорткод с тегом "form"  и с таким кодом:

Copy
<?phpfunction ShortCode_Handler_form($attr, $text){	if (!Core::moduleIsActive('form')) {		return ShortCode_Model::showmessage('Модуль "Формы" не установлен');	}	if (!is_array($attr)) {		return ShortCode_Model::showmessage('Параметры шорткода не выставлены');	}	$oXsl = ShortCode_Model::checkXSL($attr);	if (!($oXsl instanceof Xsl_Model)) {		return $oXsl;	}	if (isset($attr['id'])) {		$form_id = $attr['id'];	} else {		$form_id = $text;	}	$form_id = intval($form_id);	if (intval($form_id) > 0) {		$formID = intval($form_id);		$oForm = Core_Entity::factory('Form', $formID);		if (is_null($oForm->name)) {			return ShortCode_Model::showmessage('Указанной формы не существует');		}		$Form_Controller_Show = new Form_Controller_Show($oForm);		if (!is_null(Core_Array::getPost($oForm->button_name))) {			$Form_Controller_Show->values($_POST + $_FILES) // 0 - html, 1- plain text				->mailType(1)				->mailXsl(Core_Entity::factory('Xsl')				->getByName('ПисьмоКураторуФормы'))				->mailFromFieldName('email')				->process();		}		ob_start();		$Form_Controller_Show->xsl($oXsl)			->show();		$content = ob_get_clean();		return $content;	} else {		return ShortCode_Model::showmessage('Идентификатор формы указан неверно');	}}

2. В любом месте вставляем шорткод, где id - идентификатор формы и xsl - название шаблона

[form id="1" xsl="ОтобразитьФорму"] или [form xsl="ОтобразитьФорму"]1[/form]

21.03.2015