We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 15944
    • 88 Posts
    Вызов нет и страница тоже не кешируемая.
    В версии 0.9.6.3 и 1.0.2 одинаково не работает (
      • 21192
      • 1 Posts
      Quote from: ekz at Nov 06, 2009, 06:48 AM

      Как вывести несколько последних комментариев из всех документов с комментариями? Решение отсюда http://modxcms.com/forums/index.php/topic,15746.0.html не работает. Jot 1.1.4
      Ув. ekz, как же? Вот http://modxcms.com/forums/index.php/topic,15746.msg108349.html#msg108349 объясняется что нужно поправить в сходникаъ Jot, чтобы заработала ’*’. Но, ИМХО это не есть хорошо, поэтому я написал свой snippet:
      <?php
      global $modx;
      
      $tplComments	= isset($tplComments) ? $tplComments : null;
      $limitComments	= isset($limit) ? $limit : null;
      
      if ( $tplComments )
      {
      	$jotContentFullTableName		= $modx->getFullTableName( 'jot_content' );
      	
      	$sqlGetComments = "
      SELECT
        uparent, content
      FROM
        $jotContentFullTableName comments
      WHERE
        published = 1 AND deleted = 0
      ORDER BY createdon DESC" . 
      ($limitComments != null ? " LIMIT $limitComments;" : ';');
      
      	$output		= '';
      	$result		= $modx->db->query( $sqlGetComments );
      	$hashRes	= null;
      	
      	while( ($hashRes = mysql_fetch_assoc( $result )) != null )
      	{
      		$hashPlaceholders = $modx->getTemplateVarOutput( array( 'pagetitle' ), $hashRes['uparent'] );
      		
      		$chunkArr = array(
      			'id'			=> $hashRes['uparent'],
      			'pagetitle'		=> $hashPlaceholders['pagetitle'],
      			'comment_text'	=> $hashRes['content']
      		);
      		
      		$output .= $modx->parseChunk( $tplComments, $chunkArr, '[+', '+]' );
      	}
      	
      	echo $output;
      }
      ?>


      Код достаточно прозраный, посему думаю, объяснение не требуется.
        • 11101
        • 51 Posts
        Немного не догнал... Чтобы увидеть оставленный комментарий я, как модератор, должен обязательно зайти на ту страницу, где он оставлен? Или же можно как-то общим скопом все комменты просмотреть?
          • 1788
          • 1,103 Posts
          Quote from: Googa at Nov 24, 2009, 02:18 AM

          Немного не догнал... Чтобы увидеть оставленный комментарий я, как модератор, должен обязательно зайти на ту страницу, где он оставлен? Или же можно как-то общим скопом все комменты просмотреть?
          модуль JoCo поможет.
            • 11101
            • 51 Posts
            Quote from: antey at Nov 24, 2009, 07:21 AM

            Quote from: Googa at Nov 24, 2009, 02:18 AM

            Немного не догнал... Чтобы увидеть оставленный комментарий я, как модератор, должен обязательно зайти на ту страницу, где он оставлен? Или же можно как-то общим скопом все комменты просмотреть?
            модуль JoCo поможет.
            Спасибо, помогло smiley
              • 2509
              • 53 Posts
              Привет. выше был вопрос насчет обязательных полей.Чтобы не только "Комментарий", но и другие поля были обязательными.
              Как ее решить?
                • 17921
                • 101 Posts
                Quote from: nikolay.shabak at Jul 02, 2009, 08:15 AM

                Вниманию общественности предлагается Jot 1.1.4 с реализованной фичей "древовидные комментарии" :
                jot1.1.4rus-utf8.TreeEdition.zip
                Требования:
                1) Наличие подключенной библиотеки jquery в шаблоне, в котором выводится Jot.TreeEdition
                2) Стоит ли говорить, что вывод Jot НЕКЕШИРУЕМЫЙ

                Инсталляция:
                1) Перезаписать имеющиеся файлы Jot файлами из архива jot1.1.4rus-utf8.TreeEdition.zip
                2) Скопировать файл comments.js в папку с javascript на вашем сервере.
                3) Подключить его в шаблоне или чанке, в котором выводится Jot.TreeEdition
                4) Наслаждаться древовидными комментариями на вашем сайте

                Пожелания, критика, баги, замечания к оформлению приветствуются.


                Как подключить? не выложите пример кода?
                  samurai smiley
                  • 13940
                  • 11 Posts
                  neooleg, большое спасибо за сниппет http://modxcms.com/forums/index.php/topic,17843.msg255208.html#msg255208 !

                  Недавно мне потребовался вывод последних комментариев со всего сайта. Я попробовал вариант от lossendae http://modxcms.com/forums/index.php/topic,15746.msg199855.html#msg199855. В 1.0.2 (Jot 1.1.4) все работает, но с моим детсадовским PHP мне так и не удалось вывести pagetitle страницы с комментарием, при этом немыслимо выросло количество запросов к БД. И тут как раз ваше решение.
                  На то, чтобы успешно «допилить» ваш код, меня хватило smiley.
                  Синтаксис запроса к БД подсмотрел в сниппете showMembers. Теперь выводится еще имя веб-пользователя, кроме того, регулируется кол-во выводимых знаков заголовка и содержимого, выводимый пункт является ссылкой на сам коммент.
                  Ну, и написал комментарии к сниппету с примерами, так как полагаю, что найдется кто-то, кто соображает в разработке еще меньше меня.

                  <?php
                  /*
                  * snippet name: getComments
                  * written by  neooleg, 23.11.2009
                  * modified by jen, 30.11.2009
                  *
                  * Parameters:
                  * tplComments   - chunk to display comments output. Required.
                  * ** below parameters are optional **
                  * &limit        - qty of comments in output. All published comments in DB by default. :)
                  * &trunkPgtitle - number of characters to show of pagetitle. Any nonnegative integer. 60 by default.
                  * &truncComment - number of characters to show of text of comment. Any nonnegative integer. 200 by default.
                  * &dateFormat   - formats date output. See strftime() function for details. See snippet call example. "%d.%m.%Y, %H:%M" by default.
                  *
                  * Placeholders:
                  * id            - id of resource where comment placed.
                  * comment_id    - id of comment.
                  * pagetitle     - pagetitle of resource where comment placed.
                  * comment_text  
                  * comment_author- web-user username (login).
                  * comment_date  - comment creation date.
                  *
                  * Snippet call example: [!getComments? &tplComments=`getCommentsTpl` &trunkPgtitle=`30` &truncComment=`100` &dateFormat=`%Y-%m-%d, %H:%M` &limitComments=`10`!]
                  * Chunk example: <li><a href="[~[+id+]~]#comment.[+comment_id+]"><strong>[+pagetitle+] • </strong>[+comment_text+]…<strong> – <i>[+comment_author+],</i></strong> <small><i>[+comment_date+]</i></small></a></li>
                  * To make the above link operable add two pieces of code to assets/snippets/jot/templates/chunk.comment.inc.html
                  * e.g., <div class="jot-comment"  id="comment.[+comment.id+]">
                  * and         <a href="[~[+jot.docid+]~]#comment.[+comment.id+]" title="Link to this comment">#[+comment.postnumber+]</a>
                  * instead of  <a href="[~[+jot.docid+]~]#jc[+jot.link.id+][+comment.id+]"...
                  */
                  
                  // date_default_timezone_set('Europe/Helsinki');
                  mb_internal_encoding("UTF-8");
                  
                  global $modx;
                  
                  $tpl = isset($tplComments) ? $tplComments : null;
                  $limit = isset($limitComments) ? $limitComments : null;
                  $pgtLength = isset($trunkPgtitle) ? $trunkPgtitle : 60;
                  $length = isset($truncComment) ? $truncComment : 200;
                  $date = isset($dateFormat) ? $dateFormat : "%d.%m.%Y, %H:%M";
                  
                  if ($tpl)
                  {
                      $jc = $modx->getFullTableName('jot_content');
                      $wu = $modx->getFullTableName('web_users');
                      
                      $sql = "SELECT jc.id, jc.uparent, jc.content, jc.createdon, wu.username FROM {$jc} jc JOIN {$wu} wu ON wu.id = -jc.createdby AND jc.published = 1 AND jc.deleted = 0 ORDER BY jc.createdon DESC" . ($limit != null ? " LIMIT $limit;" : ';');
                  
                      $output = '';
                      $result = $modx->db->query($sql);
                      $hashRes = null;
                      
                      while(($hashRes = mysql_fetch_assoc($result)) != null)
                      {
                          $hashPlaceholders = $modx->getTemplateVarOutput(array('pagetitle'), $hashRes['uparent']);
                  
                          $chunkArr = array(
                              'id' => $hashRes['uparent'],
                              'comment_id' => $hashRes['id'],
                              'pagetitle' => mb_substr($hashPlaceholders['pagetitle'], 0, $pgtLength),
                              'comment_text' => mb_substr($hashRes['content'], 0, $length),
                              'comment_author' => $hashRes['username'],
                              'comment_date' => strftime($date, $hashRes['createdon'])
                          );
                          
                          $output .= $modx->parseChunk($tpl, $chunkArr, '[+', '+]');
                      }
                      
                      echo $output;
                  }
                  ?>


                  К сожалению, проблема, описанная в http://modxcms.com/forums/index.php/topic,17843.msg188967.html#msg188967 никуда не делась. Видимо, дело не столько в UTF-8, сколько в парсере Jot. Если уж умные дядьки не могут ее решить, то я просто смирился undecided.

                  Знатоки, поправьте, если что!
                  Может быть, можно оптимизировать запросы к БД. При подключении сниппета (6 выводимых комментов с заголовком страницы и веб-юзером) число запросов выросло на 13.
                  Если кому-то нужно выводить админские комменты — пилите дальше laugh.

                  P.S. Добавил дату создания коммента. В комментариях и примерах тоже прописал.
                    • 13940
                    • 11 Posts
                    1. При подключении сниппета getComments с добавленной опцией отображения даты на локальном сервере выскочила ошибка:

                    …[function.strftime]: It is not safe to rely on the system\’s timezone settings. Please use the date.timezone setting, the TZ environment variable or the date_default_timezone_set() function…

                    Нашел статью о работе с временными зонами на Хабре http://habrahabr.ru/blogs/php/19838/
                    Добавление строки
                    date_default_timezone_set(’Europe/Helsinki’);
                    решило проблему. Теперь она (закомментированная)присутствует в начале кода сниппета.

                    2. Решение проблемы символа � оказалось совсем рядом shocked http://modxcms.com/forums/index.php/topic,42297.0.html, за что спасибо AKots.
                    Соотв. изменения тоже внесены в код сниппета.
                    На этом, вроде бы, всё.
                      • 17921
                      • 101 Posts
                      Снова вопрос по древовидному Jot 1.1.4

                      Параметры canmoderate и canpost работают только по отношению к основной форме. Возможность ответить на пост есть у ВСЕХ - даже у незарегестрированных

                      Вывод

                      [!Jot? &action=`form`  &subscribe=`1` &pagination=`30` &notify=`2` &canedit=`teachers` &trusted=`teachers` &canpost=`teachers` &canmoderate=`teachers` !]
                      
                      [!Jot? &action=`comments`  &subscribe=`1` &pagination=`30` &notify=`2` &canedit=`teachers` &trusted=`teachers` &canpost=`teachers` &canmoderate=`teachers` !]
                        samurai smiley