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

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