We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 30593
    • 119 Posts
    Столкнулся еще с одной проблемой, при реализации системы Вопросы-ответы на сайте.
    Подробнее про систему 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

    Результат не изменился(
      • 29487
      • 385 Posts
      $doc->Set(’parent’,ID папки в которую кладём вопросы);

      впишите ID цифрой
        • 30593
        • 119 Posts
        Quote from: Temus at May 04, 2010, 02:29 AM

        $doc->Set(’parent’,ID папки в которую кладём вопросы);

        впишите ID цифрой

        действительно, был не внимателен, ошибки исчезли! smiley
          • 30593
          • 119 Posts
          еще 1 вопрос:

          как сделать защиту от отправления пустых данных?
          это же так можно и сайт завалить.

          у разработчика тоже такая же трабла: http://shkola300-spb.ru/index.php?id=31
          нажмите на Послать, не заполняя данные.
          а в админке появляются пустышки: