Дух ur001 проснулся после бурных выходных...
aleksey.stepanov: я для чего-то подобного и создавал свой DocAPI. Сейчас тот сайт пока в офлайне, но могу рассказать как там что устроено.
1) Создаем шаблон документа для записи в FAQ, например "FAQTempleate"
2) Дополняем его TV для ответа. Например с именем "Comment" и типом RichText
3) Создаем папку в которой будут складываться посты
4) Создаем чанк с формой для отправки вопроса, что-то типа:
<form method="post" action="[~[*id*]~]">
<input name="GuestbookForm" type="hidden" value="on" />
Тема:<br/>
<input name="pagetitle" type="text" size="40" value="[+pagetitle+]" /><br />
Вопрос:<br/>
<textarea name="content" cols="50" rows="4">[+content+]</textarea><br />
<input name="send" type="submit" value="Отправить вопрос" />
</form>
5) Создаем снипет для добавления вопроса:
require_once('assets/libs/docapi/document.class.inc.php');
$isPostBack = isset($_POST['GuestbookForm']) ? true:false;
$formTpl = $modx->getChunk($formtpl);
if($isPostBack){
$doc = new Document();
$doc->Set('parent',$folder);
$doc->Set('alias','post'.time());
$doc->Set('template','FAQTempleate');
$doc->Set('published',0); // Если нужна премодерация, не публикуем по-умолчанию
foreach($_POST as $n=>$v){
// Проверка - то ли это поле, которое надо
// Экранирование спецсимволов в $v
// Проверка - заполнено ли поле, etc
// ....
$doc->Set($n,$v);
}
if(!isset($error)) $doc->Save();
else /* Выдача ошибки зполнения */
}
return $formTpl;
6) Весь FAQ можно выводить Ditto или NewsListing, соответственно в шаблоне вывода надо отвести место для комментария (tvComment):
<div class="summaryPost">
<h3>[+title+]</h3>
<div class="summary">[+summary+]</div>
<div class="comment"><i>Комментарий:</i> [+tvComment+]</div>
</div>
7) Создать чанк {{FAQ}} где будет вызываться NewsListing и созданный снипет:
[!NewsListing? &tpl=`FAQRecord` &startID=`29` &summarize=`10` &emptytext=`нет записей` &showarch=`0` &paginate=`1` &trunc=`false`!]
[!FAQ? &folder=`29` &formtpl=`FAQForm`!]
<div class="pagination">
Страницы: [+pages+]
</div>
Что-то в этом духе. В моем случае нет премодерации, и, следовательно, вопрос должен выводиться сразу после поста. Тут возникают проблемы с кешированием, мало того, вызов снипета NewsListing должен располагаться после снипета FAQ, т.к. новый пост создастся только после его отработки. По-этому всему я не привел полностью свой код. Да и понять так проще