We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 9673
    • 52 Posts
    Здравствуйте, мне нужно вывести несколько последних комментариев на главной странице. я нашел на странице http://community.modx-cms.ru/blog/questions/470.html#comment8058 что можно сделать это сниппетом, код:
    <?php
    $jc='modx_jot_content';
    $jf='modx_jot_fields';
    $sc='modx_site_content';
    $ua='modx_user_attributes';
    $sql="SELECT $jc.content, $jc.id, $jc.uparent, $jc.createdon, (SELECT $jf.content FROM $jf WHERE $jf.label='name' AND $jc.id=$jf.id ORDER BY $jf.id) AS guestname, (SELECT $sc.pagetitle FROM $sc WHERE $jc.uparent=$sc.id ORDER BY $sc.id) AS pagetitle, (SELECT $ua.fullname FROM $ua WHERE $jc.createdby=$ua.id ORDER BY $ua.id) AS regname FROM $jc WHERE $jc.published=1 ORDER BY $jc.createdon DESC LIMIT 3";
    
    $q=mysql_query($sql) or die(mysql_error());
    while($row = mysql_fetch_array($q)){
    
    echo '<div class="comment"><div class="ballbtm">';
    echo '<div class="content"><a href="'.$row[uparent].'" class="midtxt">'.$row[pagetitle].'</a>
    <a href="'.$row[uparent].'#'.$row[id].'" class="darkgrey xsmltxt">'.$row[content].'</a></div>';
    echo '</div>';
    echo '<div class="aboutpost author">';
    if ($row[guestname]==NULL)
    {
    echo $row[regname];
    } else {
    echo $row[guestname];
    }
    echo '</div></div>';
    }
    ?>

    сделал как написано, выводятся текст, тайтл, и имя автора. Но ссылка на комментарий и на статью делается в виде example.com/10 где 10 это id статьи. У меня на сайте включен ЧПУ. При переходе по ссылке с id на конце, показывает "ERROR: Too many forward attempts! The request could not be completed due to too many unsuccessful forward attempts."
    Подскажите как исправить ссылку на правильную?
      • 16289
      • 121 Posts
      Тут у вас антиоптимизированный код, используйте хоть API для формирования ссылки:

      global $modx;
      <a href="'.$modx->makeUrl($row[uparent]).'#'.$row[id].'" class="darkgrey xsmltxt">'.$row[content].'</a></div>';
      


      Вообще, если надо выводить последние комментарии, почитайте: http://community.modx-cms.ru/blog/88.html
        How could number of mysql queries be more than number of tables in DB???
        • 1035
        • 81 Posts
        И что мешает использовать обычный php при выборке?
        Просто написать некешируемый сниппет который использует запрос к базе с LIMIT=’сколько вам нужно комментов на главной’ и отсортировать вывод с последней записи? smiley
        Используя тот же API брать сразу и id пользователя и по нему брать имя юзера и так далее...
          Чем я занят на данный момент, читайте в этой теме: [EVO] Ресурс-контроллер?
          • 20380
          • 118 Posts
          Да просто тут поправьте:
          echo ’<div class="content"><a href="’.$row[uparent].’" class="midtxt">’.$row[pagetitle].’</a>
          <a href="’.$row[uparent].’#’.$row[id].’" class="darkgrey xsmltxt">’.$row[content].’</a></div>’;
          Меняем на (для Evo)
          echo ’<div class="content"><a href="/[~’.$row[uparent].’~]" class="midtxt">’.$row[pagetitle].’</a>
          <a href="/[~’.$row[uparent].’~]#’.$row[id].’" class="darkgrey xsmltxt">’.$row[content].’</a></div>’;