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

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

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

<?php
function 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