We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 12550
    • 107 Posts
    Пользователь №28 создал новую страницу на сайте.
    Если выводить на странице [+createdby+] , то выводится из таблицы modx_site_contents номер id-шник пользователя (цифра).
    Как выводить соответствующее id-шнику имя (колонка `fullname` из таблицы `modx_user_attributes`)? Просто [+fullname+] ничего не выводит.
      • 22301
      • 1,084 Posts
      поковыряй сниппет, который пользуешь...
      если у тебя работает конструкция вида [+createdby+], значит, в сниппете есть сточка подобная этой:

      $modx->setPlaceholder(’createdby’, $...[’createdby’]);

      вместо трёх точек какой-то идентификатор. setPlaceholder’ом устанавливается поле в шаблоне, куда выводить значение createdby, то есть значение $...[’createdby’] будет выводиться в поле [+createdby+].

      проще сделать так: если ты юзаешь сниппет, кинь в личку мне его код, я ковырну и помогу... вполне возможно, что под fullname прописан другой плейсхолдер, или не прописан вообще, или это поле не получено по id-ишнику...

        [img]http://jurist-info.ru/pic/rrr.jpg[/img]

        Безжалостный пияр!
        Artima -- неуч!
        Осторожно: преступная локализация -- modx-cms.ru
        Баштанник Андрей -- мегапрограммер из Белоруссии и поедатель говна, очень критично настроенный молодой человек!

        Дисклеймер для общительных: даю сам себе право транслировать в открытый эфир содержание лички, just for fun
        • 12550
        • 107 Posts
        Так никакой снипет не использую. Ну наверное главный модуль какой-нибудь используется.
        Просто страница. На ней если выводить в шаблоне [+content+] то выводится контент, если выводить [+createdby+], то выводится это самый крэйтедбай. Это все выводятся поля из таблицы modx_site_contents для страницы соответствующей.
        Все правильно, все логично. [+createdby+] в этом случае выводит цифру соответствующию номеру пользователя в системе.

        А в другой (!) таблице modx_user_attributes уже задано по этому номеру остальные параметры пользователя, например ФИО.

        Так вот в том и проблема как выводить именно это ФИО из другой таблицы, соответствующее цифре - номеру пользователя.
        Проблема именнно в том, что в разных таблицах данные то лежат я так понимаю.
        А выводить нужно именно ФИО, какой смысл в качестве автора выводить цифру. )

        Снипет никкой не хочется редактировать, потому что когда выйдет новая версия снипета, то автоматически не получится ведь уже обновлять, а опять редактировать его придется.

        Но еще раз скажу что никакого специального сниппета не использую.
        Задача то вроде бы простая - вывести текст страницы и автора, кто этот текст поместил.
        Можно конечно для этого завести отдельный TV в котором будет содержаться автор и каждый раз его текстом указывать.
        Но ведь каждый редактор сайта итак зарегистрирован и логично было бы просто указывать ФИО того, кто разместил статью автоматически.
          • 22301
          • 1,084 Posts
          про правку сниппетов: практика показывает, что без исправления сниппетов не обойтись sad к сожалению, если требуется что-то неординарное.

          далее, про вывод пользователя... можно чуток заморочиться. если ты заполучил id пользователя, то тебе ничего не стоит подключиться к таблице пользователей и выбрать соответствующее поле по id, надо сделать под это дело сниппет небольшой совсем, из двух строчек всего.

          если есть время, подожди чуток, я выложу сюда соответствующий код:) мне надо сниппеты свои поковырять, ибо в php и запросах я не рублю, и никак не могу запомнить, как и что я делал:) минуть дцать мне надо:)
            [img]http://jurist-info.ru/pic/rrr.jpg[/img]

            Безжалостный пияр!
            Artima -- неуч!
            Осторожно: преступная локализация -- modx-cms.ru
            Баштанник Андрей -- мегапрограммер из Белоруссии и поедатель говна, очень критично настроенный молодой человек!

            Дисклеймер для общительных: даю сам себе право транслировать в открытый эфир содержание лички, just for fun
            • 22301
            • 1,084 Posts
            вызываем сниппет [[snippet_name?createdby=`[+createdby+]`]]

            код сниппета:
            $uid = $createdby;
            $user = $modx->getUserInfo($uid); 
            $user_name = $user['username'];
            $modx->setPlaceholder ('user_name',$user_name);
            


            понятно, что сниппет как-нить назовёшь по-своему:)

            после сниппета достаточно будет вставить в шаблон [+user_name+]
              [img]http://jurist-info.ru/pic/rrr.jpg[/img]

              Безжалостный пияр!
              Artima -- неуч!
              Осторожно: преступная локализация -- modx-cms.ru
              Баштанник Андрей -- мегапрограммер из Белоруссии и поедатель говна, очень критично настроенный молодой человек!

              Дисклеймер для общительных: даю сам себе право транслировать в открытый эфир содержание лички, just for fun
              • 12550
              • 107 Posts
              Что-то не получилось как там. Но это мелочи. Направление копания хорошее, спасибо. )

              Вот так себе сделал, не универсально, но на данный момент вполне подходит:

              $q="SELECT `fullname` FROM `modx_user_attributes` WHERE `id`=’$createdby’";
              $q=mysql_query($q);$r=mysql_fetch_array($q);
              echo$r[fullname];

              И вызов:
              [!fullname? &createdby=`[*createdby*]`!]

              Заметь, звездочки в [**] - с плюсиками не хочет.
              Спасибо. )

              А что этот форум никак сам не умеет посылать сообщения, что на пост кто-то ответил или надо где-то галочку?
                • 22301
                • 1,084 Posts
                слева под окошком Additional Options grin

                grin я примерно такой скрипт, как у тебя изначально хотел вылить, но потом нашёл в документации вроде как стандартную функцию, но думаю, она к таблице active_users подключается...
                насчёт звёздочек -- да, ведь любое поле для текущей страницы из базы выводится с помощью такой конструкции.

                и чтоб не париться лишний раз, можно есчо вот такую хреньпользовать, для универсальности:

                $table = $modx->getFullTableName("user_attributes");

                а в скрипте просто FROM $table
                  [img]http://jurist-info.ru/pic/rrr.jpg[/img]

                  Безжалостный пияр!
                  Artima -- неуч!
                  Осторожно: преступная локализация -- modx-cms.ru
                  Баштанник Андрей -- мегапрограммер из Белоруссии и поедатель говна, очень критично настроенный молодой человек!

                  Дисклеймер для общительных: даю сам себе право транслировать в открытый эфир содержание лички, just for fun
                  • 12550
                  • 107 Posts
                  $modx->getFullTableName("user_attributes") - класс! )

                  А где посмотреть все остальные такие штуковины, которые бывают?
                  Только в самом коде или задокументированны где-нибудь?
                    • 22301
                    • 1,084 Posts
                    manager/includes/document.parser.class.inc.php smiley -- здесь
                    ну, есчо есть раздел с документацией на http://modxcms.com, но там не всё.
                      [img]http://jurist-info.ru/pic/rrr.jpg[/img]

                      Безжалостный пияр!
                      Artima -- неуч!
                      Осторожно: преступная локализация -- modx-cms.ru
                      Баштанник Андрей -- мегапрограммер из Белоруссии и поедатель говна, очень критично настроенный молодой человек!

                      Дисклеймер для общительных: даю сам себе право транслировать в открытый эфир содержание лички, just for fun
                      • 6272
                      • 95 Posts
                      Quote from: iamask at Aug 24, 2006, 07:31 AM

                      $q="SELECT `fullname` FROM `modx_user_attributes` WHERE `id`=’$createdby’";
                      $q=mysql_query($q);$r=mysql_fetch_array($q);
                      echo$r[fullname];

                      И вызов:
                      [!fullname? &createdby=`[*createdby*]`!]

                      Это работает, если юзер добавлял документ из админки. А если это веб юзер - нет. Нужно дописать пару строк:
                      if ($createdby>0)
                       {
                        $q="SELECT `fullname` FROM `modx_user_attributes` WHERE `id`='$createdby'";
                       }
                      else
                       {
                      $createdby=$createdby*-1;
                      $q="SELECT `fullname` FROM `modx_web_user_attributes` WHERE `id`='$createdby'";
                       }
                      $q=mysql_query($q); $r=mysql_fetch_array($q);
                      echo $r[fullname];