We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 7772
    • 29 Posts
    Этап 1.
    Создаю дополнительной поле Rating, присваиваю значение по умолчанию 0
    Этап 2.
    Создаю сниппет для вывода и голосования за документы.
    <?php
    $id = $modx -> documentObject['id']; // Узнаю ID текущего документа
    $param = $modx->getTemplateVarOutput('Rating',$id); // Узнаю значение TV поля данного документа
    $output = $param['Rating'];
    $file = "assets/snippets/news_rate/rate.inc.php"; //скрипт обработки голосов
    if (isset ($output)){
    // Вывод кол-ва проголосовавших и формы голосования
    Print ("Проголосовало: $output"); 
    Print "<form name=\"rate\" method=\"post\" action=\"$file\" target=\"_blank\">
      <input type=\"submit\" name=\"Submit\" value=\"Голосовать\">
      <input name=\"action\" type=\"hidden\" id=\"action\" value=\"vote\">
      <input name=\"id\" type=\"hidden\" id=\"id\"  value=\"$id\">
    </form>
    ";
    }else{
    echo "К данному объекту не присвоено поле рейтинга"; // Вывод текста, если данному документу не присвоен TV параметр
    }
    ?>

    Этап 3.
    Скрипт обработки голосования.
    <?
    $Action = $action; // Получаю от формы тип действия (небольшая мера безопастности
    if ($Action==1) {
    $Id = $id; // Получаю текущий Ид документа
    $Count = $count + 1; // Получаю кол-во проголосовавших + 1 
    // А Теперь работаю через класс DocAPI (http://modxcms.com/forums/index.php/topic,5823.0.html)
    require_once('http://project/assets/libs/docapi/document.class.inc.php');
    $doc = new Document($Id,'content');
    $doc->Set('tvRating',$Count);
    $doc->Save();
    Print "Спасибо за голос!";
    }
    ?>

    И все не каких действий...в чем проблема??
    TV поле не увеличивается на +1...
    И классом нужно пользоваться строго по шаблону т.е. обязательно присутствие
    $content=$doc->Get(’content’);
    require_once('assets/libs/docapi/document.class.inc.php');
    $doc = new Document($id,'content');
    $content=$doc->Get('content');
    $doc->Set('content', '<p>'.$content.'</p>');
    $doc->Save();
      • 897
      • 1,620 Posts
      а у вас вызывается собственный файл сниппета. вам надо в форме высывать саму страницу, а в теле сниппета написать include ’assets/snippets/news_rate/rate.inc.php’
        "Und wenn du lange in einen Abgrund blickst, blickt der Abgrund auch in dich hinein."

        Не используйте Revo для "просто сайтов". Используйте Evo

        Who can defeat the Russian bear?
        • 7772
        • 29 Posts
        Quote from: aleksey.stepanov at Oct 14, 2006, 12:21 PM

        а у вас вызывается собственный файл сниппета. вам надо в форме высывать саму страницу, а в теле сниппета написать include ’assets/snippets/news_rate/rate.inc.php’
        Извеняюсь, неособо понял,
        т.е. в сниппете я только инклудю /assets/snippetsnews_rate/rate.inc.php, и весь код прописываю в rate.inc.php, или как?
          • 897
          • 1,620 Posts
          Print "<form name=\"rate\" method=\"post\" action=\"[~id~]\" target=\"_blank\">
            <input type=\"submit\" name=\"Submit\" value=\"Голосовать\">
            <input name=\"action\" type=\"hidden\" id=\"action\" value=\"vote\">
            <input name=\"id\" type=\"hidden\" id=\"id\"  value=\"$id\">
          </form>
          ";
          

          в сниппете:
          ....
          include 'assets/snippets/news_rate/rate.inc.php'
          ....
          
            "Und wenn du lange in einen Abgrund blickst, blickt der Abgrund auch in dich hinein."

            Не используйте Revo для "просто сайтов". Используйте Evo

            Who can defeat the Russian bear?
            • 897
            • 1,620 Posts
            теперь по-русски (как могу):
            у вас у формы указан обработчик на сервере совершенно отстраненный от MODx скрипт, при высове которого просто не существует контекста самой CMS, то есть таких контекстных переменных как $id, $modx не существует
              "Und wenn du lange in einen Abgrund blickst, blickt der Abgrund auch in dich hinein."

              Не используйте Revo для "просто сайтов". Используйте Evo

              Who can defeat the Russian bear?