We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 22388
    • 100 Posts
    Вот взялся немного доработать сниппет ShowUserList под свои нужды: заменил fullname на username, добавил поля для вывода: lastlogin, logincount и т.д.
    Но проблема возникла при попытке вывода всего этого дела через чанк-шаблон с использованием плейсхолдеров (не хватает знаний о выводе данных из mysql embarrassed ).
    Посему прошу помочь! При выводе прямо из сниппета всё работает как надо, а проблема возникает, когда пытаюсь вывести всё это дело через чанк с плейсхолдерами: получаю вывод вместо
    " id1 username1 .... logincount1 lastlogin1
    ....
    ....
    idN usernameN .... logincountN lastloginN"

    следующее:
    "id1id2...idN username1username2...usernameN .......... lastlogin1lastlogin2...lastloginN
    ....
    N строк
    ....
    id1id2...idN username1username2...usernameN .......... lastlogin1lastlogin2...lastloginN"

    Помогите подправить код!
    Вот мой код для вывода данных на данный момент:
    $uluserlist = '';
    $ulBlockeduntilFormat = '%d.%m.%y';
    $ulLastloginFormat = '%a, %d.%m.%y в %T';
    
    while($ulusers = $modx->db->getRow($ulresults)) {
    if(!isset($ultpl) || $ultpl == '') {
    // ЭТА ЧАСТЬ РАБОТАЕТ КАК НАДО:
     $uluserlist .= $ulusers['id'].' '.stripslashes($ulusers['username']).' '.$ulusers['blocked'].' '.strftime($ulBlockeduntilFormat, $ulusers['blockeduntil']).' '.$ulusers['logincount'].' '.strftime($ulLastloginFormat, $ulusers['lastlogin']).'<br />';
     }
    else {
    // А ЭТА - НЕ ТАК! :(
     $ulid .= $ulusers['id'];
     $ulusername .= $ulusers['username'];
     $ulblocked .= $ulusers['blocked'];
     $ulblockeduntil .= strftime($ulBlockeduntilFormat, $ulusers['blockeduntil']);
     $ullogincount .= $ulusers['logincount'];
     $ullastlogin .= strftime($ulLastloginFormat, $ulusers['lastlogin']);
    
     $uluserlist .= $modx->getChunk($ultpl);
    
    $modx->setPlaceholder('ul.id', $ulid);
    $modx->setPlaceholder('ul.username', $ulusername);
    $modx->setPlaceholder('ul.blocked', $ulblocked);
    $modx->setPlaceholder('ul.blockeduntil', $ulblockeduntil);
    $modx->setPlaceholder('ul.logincount', $ullogincount);
    $modx->setPlaceholder('ul.lastlogin', $ullastlogin);
     }
    }
    
    return $uluserlist;
      Sorry for my english! smiley
      • 9198
      • 100 Posts
      Не понял что хочешь сделать. Хочешь выводить данные из MySQL, где каждая строка формируется через чанк с плейсхолдерами?
      Если так, то делается это так:
       .... 
       else {
      	$params = array();
      	$params['ul.id'] = $ulusers['id'];
      	$params['ul.username'] = $ulusers['username'];
      	$params['ul.blocked'] = $ulusers['blocked'];
      	$params['ul.blockeduntil'] = strftime($ulBlockeduntilFormat, $ulusers['blockeduntil']);
      	$params['ul.logincount'] = $ulusers['logincount'];
      	$params['ul.lastlogin'] = strftime($ulLastloginFormat, $ulusers['lastlogin']);
      
       
        $uluserlist .= $modx->parseChunk($ultpl,$params,'[+','+]');
      
      
        • 22388
        • 100 Posts
        Да, именно!
        Спасибо!
          Sorry for my english! smiley
          • 22388
          • 100 Posts
          Вот теперь пытаюсь сделать сортировку вывода таблицы по разным полям:
          $ulsortusers = isset($ulsortby) ? $ulsortby : 'username';
          $ulsortusersorder = isset($ulsortorder) ? $ulsortorder : 'ASC';
          $ulresults = $modx->db->select("....", "....", "....", ''.$ulsortusers.' '.$ulsortusersorder.'');

          Когда в вызове сниппета &ulsortby и &ulsortorder меняю - работает, только как теперь сделать элемент управления сортировкой на страничке?
          Желательно чтобы было что-то типа:

          "Сортировать по: [выпадающий список полей]
          порядок сортировки: [выпадающий список (прямой/обратный)]
          применить: [OK]"
            Sorry for my english! smiley
            • 897
            • 1,620 Posts
            я думаю что эта статья должна натолкнуть на нужную мысль
            http://modx.ru/blog/409
              "Und wenn du lange in einen Abgrund blickst, blickt der Abgrund auch in dich hinein."

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

              Who can defeat the Russian bear?
              • 22388
              • 100 Posts
              Чё то ничего для себя не подчеркнул! undecided
              Ну, да, можно в админке через dropdown меню нужный TV выбирать, это понятно... но мне то надо во фронтенде!
                Sorry for my english! smiley
                • 897
                • 1,620 Posts
                Зрите в корень! там показан принцип работы с переменными $_GET и $_POST

                а сгенерировать урлу типа ?sortBy=что-то вообще просто
                  "Und wenn du lange in einen Abgrund blickst, blickt der Abgrund auch in dich hinein."

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

                  Who can defeat the Russian bear?
                  • 22388
                  • 100 Posts
                  Да, теперь и правда всё получилось, оказалось не так уж и сложно.
                    Sorry for my english! smiley