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

Для создания шорткода нам понадобится модуль "Шорткоды" он должен быть установлен в системе, также наличие редакции 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]

HostCMS21.03.2015