Столкнулся еще с одной проблемой, при реализации системы Вопросы-ответы на сайте.
Подробнее про систему
http://community.modx-cms.ru/blog/addons/72.html
Чанк Anketa:
<p class="error"></p>
<form action="[(site_url)]voprosy-otvety.php?id=13" method="post" enctype="multipart/form-data">
<input type="hidden" name="formid" value="newArticle" />
<p>Автор *</p>
<p><input class="field" type="text" name="avtor" maxlength="60" eform="Имя автора:string:1:Имя автора нужно обязательно!"/></p>
<p>Email *</p>
<p><input class="field" type="text" name="email" maxlength="40" eform="Адрес почты:email:0" /></p>
<p>Тема вопроса *</p>
<p><input name="pagetitle" type="text" eform="Название:string:0:Название обязательно!" /></p>
<p>Вопрос *</p>
<p><textarea name="introtext" cols="40" rows="5" eform="Вопрос:string:0:Вопрос обязателен!"></textarea></p>
<p><input type="submit" name="frmGo" value="Послать" /></p>
</form>
Снипет NewArticleEvent:
<?php
function CreateNewArticle(&$fields){
require_once('assets/libs/docmanager/document.class.inc.php');
$doc = new Document(); // создаем документ
$doc->Set('parent',ID папки в которую кладём вопросы); // определяем в какую папку положить
$doc->Set('template','имя шаблона'); // задаем шаблон
$doc->Set('pagetitle',$fields['pagetitle']); // краткое название
$doc->Set('introtext',$fields['introtext']); // вопрос
// Далее пойдут TV-параметры
$doc->Set('tvAvtor',$fields['avtor']); // автор
$doc->Set('tvEmail',$fields['email']); // e-mail
$doc->Save(); // сохраняем
return true; // Говорим eForm, что все в порядке.
}
?>
Сниппет Faq:
<?php
$results = $modx->getDocumentChildren(
$id = 13, // ID родительского документа (папки в которую кидаются все вопросы)
$active = 1, // Выбираем только опубликованные документы
$deleted = 0, // Выбираем только неудаленные документы
'id, pagetitle, published, introtext, content, menuindex, createdby, createdon, deleted, menutitle', // Выбираем поля из БД
$where = '', // Дополнительные условия не требуются
$sort='createdon', // Сортируем документы по полю createdon
$dir='DESC', // Сортируем документы по убыванию
$limit = '5' // Ограничения не устанавливаем (параметр LIMIT в SQL запросе)
);
foreach($results as $key => $value) {
if ($value["menutitle"] != "") {
$title = $value["menutitle"];
}
else {
$title = $value["pagetitle"];
}
if($value["content"]!=NULL){
$items .= "
<div class=\"Faq\">
<h3><span>".$title."</span></h3>
<b>Вопрос :</b> ".$value["introtext"]."
<hr class=\"noscreen\" />
<b>Ответ :</b> ".$value["content"]."
</div>
<hr class=\"noscreen\" />
";
}}
$output = "
";
return $items.$output;
?>
вызов такой:
[!Faq!]
[!NewArticleEvent!]
[!eForm? &formid=`newArticle` &subject=`Посетители прислали новый вопрос` &tpl=`Anketa` &eFormOnBeforeMailSent=`CreateNewArticle`!]
на странице вызова выдает ошибку:
Parse error: syntax error, unexpected T_STRING in /home/www/z137540/htdocs/manager/includes/document.parser.class.inc.php(770) : eval()'d code on line 5
после отправки вопроса выдает ошибку:
Fatal error: Call to undefined function CreateNewArticle() in /home/www/z137540/htdocs/assets/snippets/eform/eform.inc.php on line 378
Пытался исправить, обновил версию docmanager на
http://code.google.com/p/modxmods/source/browse/DocManager/trunk/assets/libs/docmanager/document.class.inc.php
Результат не изменился(