Евгений Лазарев

Евгений Лазарев

Был в сети 13 ноября 2025, 14:43
Заказы не принимаю
Решил. Если кому надо то ловите:
[[!pdoUsers?
                    &groups=`teacher`
                    &limit=`0`
                    &tpl=`@INLINE [[+id]] - [[+fullname]] ([[+count]])`
                    &innerJoin=`{
                        "Student":{
                            "class":"modUserProfile",
                            "on":"Student.extended LIKE CONCAT('%\"id_teacher\":\"',modUser.id,'\"%')"
                        },
                        "UserGroupMember": {
                            "class": "modUserGroupMember",
                            "on": "Student.internalKey = UserGroupMember.member"
                        },
                        "UserGroup": {
                            "class": "modUserGroup",
                            "on": "UserGroupMember.user_group = UserGroup.id"
                        }
                    }`
                    &select=`{
                        "modUser": "id",
                        "modUserProfile": "fullname",
                        "Student":"COUNT(Student.internalKey) as count"
                    }`
                    &where=`{
                        "UserGroup.name":"student"
                    }`
                    &sortby=`{ 
                        "count":"ASC"
                    }`
                    &showLog=`1`
                ]]
Допустим. Но тогда получается заводить еще один параметр. К примеру работать с ним с помощью switch case в зависимости от шаблона. Так то можно, но это +1 переменная и +1условие. Когда в принципе условием уже является выбор шаблона. Вариант рабочий, но усложненный на мой взгляд.
Спасибо. Но опять не подходит. Сниппет который отдельно у меня написан он в каждом шаблоне почти. Потому что в зависимости от роли пользователя будет выводиться различный контент, ну а соответственно вызываться различные сниппеты или одинаковые сниппеты с разными параметрами. Это все чтобы не плодить шаблоны которых и так не мало. А тут в таком варианте еще и сниппеты(одноразовые) плодить.
Ну так то оно так. Но я записываю просто его в сессию. Чтобы лишний раз к БД не обращаться. И после этого создаю плейсхолдер. А так к примеру допустим у меня 3 пользователя. Мне придется 3 условия писать isMember. И опять же это 3 обращения каждый раз.
Спасибо. Подход очень хороший. Я бы скорее всего переменные для снипетов не создавал — лишняя память. Хотя возможно я не прав. А по поводу выполнения частей не в курсе? Оба куска условия выполняются или только один, который истина?
Хорошо. Это конечно не принципиально, но все равно вопрос не решен. Я начал это делать через fenom по одной простой причине. Не могу выполнить условие с помощью phx.
[[+user_role:is=`student`:then=`
                [[!getImageList?
                	&tvname=`migx_contact`
                	&tpl=`tplContact`
                	&wrapperTpl=`@CODE:<div id="contacts" class="flx">[[+output]]</div>`
                	&where=`{ "title:!=":"", "phone:!=":"", "email:!=":"" }`
                ]]
                <h2 class="h1">Преподаватели</h2>
                [[!pdoUsers?
                    &groups=`teacher`
                    &tpl=`tplTeachers`
                    &tplWrapper=`@INLINE <div id="teachers">[[+output]]</div>`
                ]]
            `:else=`
                 [[!pdoUsers?
                    &groups=`student`
                    &tpl=`tplStudent`
                    &tplWrapper=`@INLINE <div id="student">[[+output]]</div>`
                ]]
            `]]
Ну и в результате непонятных мне причин то ли изза кавычек типа (`) не выполняются снипеты. Я конечно понимаю что можно создать чанки и в них уже написать то что содержится в then и в else, но на мой взгляд это глупо делать ради 3х строчек кода. Есть ли решение по этому поводу?
И еще вопрос как я понял, если представить, что этот код работоспособен то на сколько я знаю выполняются оба кода и в then и в else но потом выбирается и выводится из них который правильный. Так ли это? И при использовании fenom такого не происходит?
Добрый день. Требуется помощь. Не могу правильно настроить фильтрацию по полю в extended для сниппета pdoUsers. Знаю что уже создавались темы на этом сайте и что есть решения, но по какому то случаю они у меня убедительно не действуют. Мне нужно грубо говоря получить количество учеников у которых определенной учитель. Заранее спасибо.

Вот мой код:
[[!pdoUsers?
    &groups=`student`
    &where=`{"modUserProfile.extended.id_teacher":16}`
    &setTotal=`1`
]]