Сергей Шлоков · 26 декабря 2015, 12:21 Ну самое простое это сделать сниппет, в котором запрашивать группы <?php if ($modx->user->get('id')) { $q = $modx->newQuery('modUser',array('`modUser`.`id`'=>$modx->user->get('id'))); $q->innerJoin('modUserGroupMember','UserGroupMembers'); $q->innerJoin('modUserGroup','UserGroup','`UserGroupMembers`.`user_group` = `UserGroup`.`id`'); $q->select('UserGroup.name'); $groupsArray = array(); if ($q->prepare() && $q->stmt->execute()) { while($row = $q->stmt->fetch(PDO::FETCH_ASSOC)) { $groupsArray[] = $row['name']; } } // Список групп через запятую $userGroups = implode(',',$groupsArray); } else { $userGroups = 'Аноним'; } return $userGroups;и вставлять его в нужное место. Вопросы / Как вывести список групп пользователя? 4 +2 3
Сергей Скат · 01 декабря 2015, 14:56 в общем если поле ТВ, нужно писать его с префиксом и без скобок, примерно так [[!pdoResources? &parents=`0` &includeTVs=`opinion_view` &tpl=`standart_news_block` &tplCondition=`tv.opinion_view` &tplOperator=`==` &conditionalTpls=`{"1":"first_opinion", "2":"second_opinion", "3":"standart_news_block"}` ]]Подсказал Володя , за что ему большое спасибо! Вопросы / Как в &tplCondition указать ТВ поле ? 1 +2 2
Василий Наумкин · 19 ноября 2015, 10:23 My quick example: <?php $tplWrapper = '@INLINE <ul>{{+output}}</ul>'; $tplYear = '@INLINE <li>{{+year}}<sup>({{+count}})</sup><ul>{{+resources}}</ul></li>'; $tplMonth = '@INLINE <li>{{+month}}<sup>({{+count}})</sup><ul>{{+resources}}</ul></li>'; $tpl = '@INLINE <li><a href="{{+uri}}">{{+pagetitle}}</a></li>'; $pdo = $modx->getService('pdoFetch'); $resources = $pdo->getCollection( 'modResource', array('published' => true, 'deleted' => false), array('parents' => 0, 'sortby' => 'createdon', 'sortdir' => 'DESC') ); $tree = array(); foreach ($resources as $resource) { $year = date('Y', $resource['createdon']); $month = date('m', $resource['createdon']); $tree[$year][$month][] = $resource; } $output = ''; foreach ($tree as $year => $months) { $tmp1 = ''; $count = 0; foreach ($months as $month => $resources) { $tmp2 = ''; foreach ($resources as $resource) { $tmp2 .= $pdo->getChunk($tpl, $resource); $count++; } $tmp1 .= $pdo->getChunk($tplMonth, array( 'month' => $month, 'count' => count($resources), 'resources' => $tmp2, )); } $output .= $pdo->getChunk($tplYear, array( 'year' => $year, 'count' => $count, 'resources' => $tmp1, )); } return $pdo->getChunk($tplWrapper, array('output' => $output)); Result: Вопросы / Archive 11 +7 10
Сергей Шлоков · 13 ноября 2015, 11:47 А вот как пользователя добавить в группу «Покупатель товара N» — уже не знаюЕсть 2 часа времени? Поехали $modx->user->joinGroup('Покупатель товара N')Всё. Поезд дальше не идет. Просьба освободить вагоны. :) П.С. Когда сделаю, выложу. Мне не жалко. Объявления о работе / Доставка цифрового товара на E-mail покупателю 33 +4 1
Wassi Wassinen · 18 апреля 2015, 01:27 [[+modx.user.id:userinfo=`username`]] подставляй в userinfo любое нужное поле. Готовые решения / Получаем поля из профиля текущего пользователя 13 +4 2
Wassi Wassinen · 16 апреля 2015, 09:06 Нет, не удалось. Нашел решение, которое мне показалось более изящным и масштабируемым — публикую товары minishop2 через вот этот чудесный компонент https://modstore.pro/packages/users/ms2form Умеет публиковать категории товаров (раздел тикетов) и сами товары (тикет). Поддерживает тэги, мультикатегории, крутой редактор и т.д. Вместе с автором всё еще шлифуем компонент. На выходе, надеюсь, получится интересно. Новые дополнения и их версии / [Tickets] Версия 1.5.0-pl 53 0 1
Максим Кузнецов · 03 февраля 2015, 11:08 Отлично, значит результат есть. Теперь, если дату необходимо представить с возможностями «тикетов» — (сегодня/вчера, 5 минут назад) и так далее, то вам необходимо поставить дополнение DateAgo modstore.pro/packages/utilities/dateago и вызывать в нужном месте таким: [[!dateAgo? &input=`[[+pub_date:default=`[[+publishedon]]`]]`]]или таким образом: [[+pub_date:default=`[[+publishedon:dateAgo]]`:dateAgo]] Если же такой необходимости нет, то преобразовать текущий результат (unix timestamp) в обычную дату можно следующим образом: [[+pub_date:default=`[[+publishedon:strtotime:date=`%a %b %e, %Y`]`:strtotime:date=`%a %b %e, %Y`]](возможно, без последнего ":strtotime:date=`%a %b %e, %Y`", но точно не скажу). Формат даты, соответственно, настраивается по желанию (вот перечень доступных). Вопросы / Проблема с отложенной публикацией Tickets 28 0 1
Максим Кузнецов · 10 января 2015, 09:34 С вашего позволения, приведу сюда пример реализации большинства пунктов (не отрицаю востребованнось решения данных задач сразу из коробки, т.к. работы для реализации этих пунктов нужно сделать прилично): Страницы пользователей с нормальными урл 1. Создаем страницу «профиль пользователя» (не путаем с личным кабинетом), выставляем ему псевдоним, допустим users, к которой будут обращаться в виде site.ru/users?profile=имя 2. Ставим дополнение pdoTools 3. Создаем сниппет user.Profile и добавляем его в шаблон вывода <?php $count = $modx->getCount('modUser', array('username' => $_GET[profile])); if($count <= 0){ echo' <h2> <a>Ошибка</a> </h2> <div> Пользователя не существует. </div>'; } else { $params = array(); $params['users'] = $_GET[profile]; $params['showBlocked'] = '1'; $params['tpl'] = 'user.Profile'; $params['prepareSnippet'] = 'user.Profile.Prepare'; $result = $modx->runSnippet('pdoUsers', $params); if (!empty($result)) { return $result; } else { return '<h2> <a>Ошибка</a> </h2> <div> Что-то сломалось.. Сейчас починим. </div>'; } } — насколько я помню, сразу вызвать pdoUsers с параметром конкретного пользователя нежелательно, т.к. если пользователя не существует, он выдает по-умолчанию весь список пользователей. Возможно, сейчас что-то поменялось или это можно обойти — не проверял. Для данного сниппета также можно дописывать условия, если пользователь не активирован и тд и тп. При помощи параметров tpl и prepareSnippet кастомизируем до нужного уровня. 4. Дописываем в .htaccess RewriteRule ^users/([^/]+)$ /users?profile=$1 [L] — чтобы ссылка приняла вид site.ru/users/Имя_пользователя Возможность добавлять поля в профиль пользователя При регистрации: дополнение login Для редактирования пользователем (личный кабинет) — дополнение office Возможность указывать шаблон для оформления страницы пользователя 1. Добавляем дополнительное поле в личный кабинет пользователя (шаблон отображения) 2. В шаблоне отображения профиля пользователя дописываем классы, завязанные на полученном значении (class=«userInfo-[[+tpl.style]]») 2.А. Если необходимо менять структуру шаблона в зависимости от выбранного пользователя значением, то в сниппете в первой части дописываем до $params = array();получение extended-поля по id пользователя с вытекающими условиями if, внутри которых будет разный параметр $params['tpl'] Добавить «из коробки» дату регистрации и дату последней активности Дату регистрации — сниппет логин и 1 доп. поле. С датой последней активности сложнее, т.к. в таблицах Modx'a, насколько я помню, есть только поле последней авторизации. Возможно, нужно завязывать на сессии +временной промежуток. Возможность сделать станицу пользователя общедоступной для просмотра Аналогично пункту 2.А. в разделе «шаблона отображения» Краудфандинг / Отображение страницы пользователя 68 +2 4
Евгений · 03 ноября 2014, 13:01 getComments — то что нужно, я его и не заметил, а читал документацию о других сниппетах tickets где среди них не было getComments теперь [[!getComments? &tpl=`Tickets.comment.latest.custom` &limit=`3`]]Выводит как и было задумано 3 последних комментария. сам сниппет заворачивается: ... <ul> [[!getComments? &tpl=`Tickets.comment.latest.custom` &limit=`3`]] </ul> ...а чанк Tickets.comment.latest.custom оборачивается в тег li В итоге чудовищный восторг: Вопросы / Вывод последних комментариев на главной 27 0 1
Abu · 28 августа 2013, 19:19 Оставлю памятку разграничения тикетов между пользователями и менеджерами. 1) Создается 2 группы пользователей: Users и Managers *все действия в контексте web, роль Member 2) Создается группа ресурсов Restricted -при создании можно сразу автоматически дать доступ Administrator, анонимный доступ, дать доступ нашим группам Users,Managers (в результате в группах появляется доступ к группе ресурсов — Restricted и все пользователи могут их load,list,view (Resource)) 3) Создается группа ресурсов Editable — автоматически дать доступ Administrator, дать анонимный доступ, дать доступ группам Users,Managers (в результате в группах появляется доступ к группе ресурсов — Editable) 4) Далее, чтобы можно было добавлять секции, добавляем в группах Administrator, Managers, Users — еще один доступ к ресусам Editable, уже с политикой — TicketSectionPolicy. 5) Группам Administrator, Managers — дадим доступ и к ресурсам Restricted с политикой TicketSectionPolicy 6) Добавляем разрешенные к редактированию пользователями и менеджерами ресурсы в группу Editable, а разрешенные только к редактированию менеджерами ресурсы в Restricted — например Новости сайта в Restricted, а Вопросы пользователей в Editable. Вопросы / TicketForm ограничить доступные юзерам секции! 6 0 6
Возможно ли реализовать возможность предоплаты за доставку на сайте? Так ради этого мне и нужно это все, чтобы клиент платил сразу при оформлении заказа, чтобы избавить себя от мусорных заявок (когда человек оставляет заявку, а предоплату делать не ...
Редизайн сообщества На больших экранах основной текст статьи я бы сделал 18 px. Да и текст комментариев можно таким сделать. Для меня лично 16 — мелковато на больших экранах (в комментариях вообще 15 ...
MiniShop3 1.11.0 при клике на radio идет пересчет итоговой суммы в orderUI, в зависимости от способов(оплаты доставки) я так поняла. попробуй код запуска события поставить ниже чем orderUI, после
ImageOptimizer - WebP/AVIF и responsive <picture> для MODX 3 Дополнение доступно modstore.pro/packages/photos-and-files/imageoptimizer
Localizator3 для MODX 3: перевод полей и TV без отдельного context на язык, Vue 3 + PrimeV... Добавил localizator3_default_language
msInShopNotify Начиная с версии 3.0.0-beta добавлена поддержка MiniShop3 Минимальные требования: PHP 8.4 MODX 3.2 MiniShop3
MaxNotify Обновление 1.2.0-pl (03.07.2026) — добавлены уведомления о заявках FormIt через hook-сниппет `maxNotifyFormIt`; — добавлены уведомления о заявках SendIt через hook-...
[msBonus2] 1.3.0 Бонус-коды, уведомления о сгорании и совместимость с msMultiCurre... Да, планируется. Даже чуть больше, чем просто бонусная система)
и вставлять его в нужное место.
Подсказал Володя , за что ему большое спасибо!
Result:
Всё. Поезд дальше не идет. Просьба освободить вагоны. :)
П.С. Когда сделаю, выложу. Мне не жалко.
подставляй в userinfo любое нужное поле.
https://modstore.pro/packages/users/ms2form
Умеет публиковать категории товаров (раздел тикетов) и сами товары (тикет). Поддерживает тэги, мультикатегории, крутой редактор и т.д. Вместе с автором всё еще шлифуем компонент. На выходе, надеюсь, получится интересно.
Теперь, если дату необходимо представить с возможностями «тикетов» — (сегодня/вчера, 5 минут назад) и так далее, то вам необходимо поставить дополнение DateAgo modstore.pro/packages/utilities/dateago и вызывать в нужном месте таким:
или таким образом:
Если же такой необходимости нет, то преобразовать текущий результат (unix timestamp) в обычную дату можно следующим образом:
(возможно, без последнего ":strtotime:date=`%a %b %e, %Y`", но точно не скажу).
Формат даты, соответственно, настраивается по желанию (вот перечень доступных).
Страницы пользователей с нормальными урл
1. Создаем страницу «профиль пользователя» (не путаем с личным кабинетом), выставляем ему псевдоним, допустим users, к которой будут обращаться в виде site.ru/users?profile=имя
2. Ставим дополнение pdoTools
3. Создаем сниппет user.Profile и добавляем его в шаблон вывода
— насколько я помню, сразу вызвать pdoUsers с параметром конкретного пользователя нежелательно, т.к. если пользователя не существует, он выдает по-умолчанию весь список пользователей. Возможно, сейчас что-то поменялось или это можно обойти — не проверял.
Для данного сниппета также можно дописывать условия, если пользователь не активирован и тд и тп. При помощи параметров tpl и prepareSnippet кастомизируем до нужного уровня.
4. Дописываем в .htaccess
— чтобы ссылка приняла вид site.ru/users/Имя_пользователя
Возможность добавлять поля в профиль пользователя
При регистрации: дополнение login
Для редактирования пользователем (личный кабинет) — дополнение office
Возможность указывать шаблон для оформления страницы пользователя
1. Добавляем дополнительное поле в личный кабинет пользователя (шаблон отображения)
2. В шаблоне отображения профиля пользователя дописываем классы, завязанные на полученном значении (class=«userInfo-[[+tpl.style]]»)
2.А. Если необходимо менять структуру шаблона в зависимости от выбранного пользователя значением, то в сниппете в первой части дописываем до
получение extended-поля по id пользователя с вытекающими условиями if, внутри которых будет разный параметр $params['tpl']
Добавить «из коробки» дату регистрации и дату последней активности
Дату регистрации — сниппет логин и 1 доп. поле.
С датой последней активности сложнее, т.к. в таблицах Modx'a, насколько я помню, есть только поле последней авторизации. Возможно, нужно завязывать на сессии +временной промежуток.
Возможность сделать станицу пользователя общедоступной для просмотра
Аналогично пункту 2.А. в разделе «шаблона отображения»
теперь
Выводит как и было задумано 3 последних комментария.
сам сниппет заворачивается:
а чанк Tickets.comment.latest.custom оборачивается в тег li
В итоге чудовищный восторг:
1) Создается 2 группы пользователей: Users и Managers
*все действия в контексте web, роль Member
2) Создается группа ресурсов Restricted -при создании можно сразу автоматически дать доступ Administrator, анонимный доступ, дать доступ нашим группам Users,Managers (в результате в группах появляется доступ к группе ресурсов — Restricted и все пользователи могут их load,list,view (Resource))
3) Создается группа ресурсов Editable — автоматически дать доступ Administrator, дать анонимный доступ, дать доступ группам Users,Managers (в результате в группах появляется доступ к группе ресурсов — Editable)
4) Далее, чтобы можно было добавлять секции, добавляем в группах Administrator, Managers, Users —
еще один доступ к ресусам Editable, уже с политикой — TicketSectionPolicy.
5) Группам Administrator, Managers — дадим доступ и к ресурсам Restricted с политикой TicketSectionPolicy
6) Добавляем разрешенные к редактированию пользователями и менеджерами ресурсы в группу Editable, а разрешенные только к редактированию менеджерами ресурсы в Restricted — например Новости сайта в Restricted, а Вопросы пользователей в Editable.