25 марта 2017, 11:25 Возможно, коллекция — не лучший инструмент для данной задачи, на случай, если статьи могут пересекаться для разных пользователей. На мой взгляд, лучше реализовать задачу таким образом: — у вас есть единый раздел с тикетами «Статьи» — на главной страницы с помощью MIGX вы реализуете таблицу вида: айди_пользователя | привязанные_для_него_айди_статей Далее, в шаблоне, где вы хотите отображать статьи для пользователя: {if $_modx->user.id > 0} {set $migx_tv = $_modx->resource.migx_tv_name | fromJSON} //не помню точно, по какому полю формируется ключ в MIGX, возможно, получение статей для конкретного пользователя будет выглядеть чуть иначе {set $user_articles = $migx_tv[$_modx->user.id]} {$_modx->runSnippet('!pdoResources', [ 'resources' => $user_articles, ... ])} {else} //форма авторизации {/if} Вопросы / Вывод ресурсов для определенного пользователя 3 +2
25 марта 2017, 11:17 Если использовать минимальное количество запросов, то можно воспользоваться fenom'ом примерно таким образом: //Собираем ресурсы, из которых необходимо будет сформировать табы {var $resource_list = $_modx->runSnippet('!pdoResources', [ ... 'return' => 'json' ])} //Родитель, от которого формируем табы {set $tab_parent = '11'} {set $tabs = ''} {foreach $resource_list | fromJSON | split as $item} {set $parent = $item['parent']} {set $id = $item['id']} {set $pagetitle = $item['pagetitle']} //Настроить оформление по вкусу {if $parent == $tab_parent} {set $tabs = $tabs ~ '<a data-id="' ~ $id ~ '" class="tab-selector">' ~ $pagetitle ~ '</a>'} {else} {set $tab_childs[$parent][$id] = '<div class="body">' ~ $pagetitle ~ '</div>'} {/if} {/foreach} <div class="wrapper"> <div class="tabs">{$tabs}</div> <div class="items"> {foreach $tab_childs as $parent_id => $tab_content} <div data-parent="{$parent_id}" class="body"> {foreach $tab_content as $tab_item} {$tab_item} {/foreach} </div> {/foreach} </div> </div> Вопросы / Как сделать табы из ресурсов? 8 +3 3
25 марта 2017, 10:31 Избавьтесь от тега base, и все заработает. Вопросы / Bootstrap ScrollSpy перезагружает страницу! 7 +1
24 марта 2017, 17:20 Добрый день, готов взяться. Дизайнер в комплекте. Объявления о работе / Необходимо переделать дизайн и переделать сайт 17 +1
21 марта 2017, 13:18 На правах предложения: может сделать аватарку в блоке «автор дополнения» кликабельной с переходом в профиль? Третий раз ловлю себя на попытке кликнуть по ней..) Сайты на MODX / Новый modstore.pro 150 +2
21 марта 2017, 12:24 Вариант 1: в чанках заменить href="[[+link]]"на href="/[[+link]]" Вариант 2: В системных настройках изменить параметр link_tag_scheme на full. Вариант 3: для сниппета pdoTools задать параметр &pageLinkScheme. Вопросы / Revo не правильное формирование урлов 2 +4 1
21 марта 2017, 01:28 На самом деле, идея с опциональностью предоставляемой техподдержки звучит вполне интересно, равно как и старт отсчета таймера с момента первого запроса. Возьмем для примера достаточно сложное (потенциально вызывающее вопросы) и в тоже время популярное дополнение: mSearch2. Ценник на него без учета скидок ~2000. Вычитаем 30% modstore — итого 1400 рублей идет автору. Предположим, что час среднебюджетного программиста стоит 700 рублей. Итого 2 часа сведут на нет всю прибыль от дополнения, что вполне достижимо, учитывая, что для решения ~половины запросов потребуется внедрение в админку. И все это без учета того, что под одним ключом могут задавать вопросы с разных сайтов. В итоге в текущей ситуации, с одной стороны, стимулируется написание хорошей документации, но с другой — повышение итоговой стоимости. На мой взгляд, все сведется ко второму, учитывая, что данный вопрос уже поднимался. Что в итоге делает менее выгодным реализацию больших дополнений (или покупателя отпугивает высокая цена, или объем вопросов — разработчика). К слову, все это подводит к идее реализации независимой от автора техподдержки (процентно от стоимости дополнения как раньше, или «общую техподдержку» за отдельную стоимость). Сайты на MODX / Новый modstore.pro 150 +6
20 марта 2017, 20:53 Тогда выходит не совсем логично — англоязычный пользователь не может даже узнать о существовании дополнение (без языковой поддержки), чтобы для себя решить — хочет ли он установить его в таком варианте или нет. Сайты на MODX / Новый modstore.pro 150 +2
20 марта 2017, 20:45 Вопрос: то, что сейчас при переключении языка пропадают все дополнения — это фича или ...? Сайты на MODX / Новый modstore.pro 150 0
20 марта 2017, 20:45 Да, на 10-ке + Chrome с ними все тоже ок. Сайты на MODX / Новый modstore.pro 150 +1
20 марта 2017, 17:25 Ну, проблема довольно распространенная с имитацией скролла, согласен, но вполне решаемая: — вот здесь (страница со скроллом / без скролла, попап по нажатию на кнопку «вход») я аналогичную ситуацию решил с помощью слегка модифицированного Magnific Popup'a + верстка html-контейнера со свойством box-sizing: border-box; (затрудняюсь сказать точнее, уже не помню полную реализацию) Сайты на MODX / Новый modstore.pro 150 +1
20 марта 2017, 17:14 Chrome, Windows 10, 1600x900, g.recordit.co/ObEaIYKtlV.gif (происходит как при открытии, так и закрытии) Сайты на MODX / Новый modstore.pro 150 +2
20 марта 2017, 17:09 Классно, сайт теперь выглядит куда интереснее..) Из того, что сразу попалось на глаза: На странице дополнения, при просмотре кол-ва загрузок (лупа) весь сайт передергивает (проблема со скриптом всплывающего окна и padding'a для имитации сдвига скролла). Также, вероятно, лишнее подчеркивание лупы при наведении: Сайты на MODX / Новый modstore.pro 150 +4
16 марта 2017, 00:47 1. Регистрируем плагин на событие OnManagerPageInit: <?php if ($modx->event->name != 'OnManagerPageInit') return; $modx->regClientCSS('/design/admin.css'); 2. В файле admin.css добавляем: .x-form-item.modx-tv {padding-left: 0 !important;} .modx-tv-reset {display: none !important;} Вопросы / Убрать кнопочку «Установить по умолчанию» у ТВ 6 +2
10 марта 2017, 00:20 Лучше сделать так (в плагине): меняем строку (в двух местах) $modx->user->addSessionContext($modx->context->key); на следующую $contexts = $modx->getCollection('modContext', array('key:!=' => 'mgr')); foreach($contexts as $context) { $modx->user->addSessionContext($context->key); } Новые дополнения и их версии / [switchUser] Версия 1.1.0 14 +4 1
03 марта 2017, 11:09 <!--minishop2_popular <i class="glyphicon glyphicon-star" title="[[%ms2_frontend_popular]]"></i>--> <!--minishop2_new <i class="glyphicon glyphicon-flag" title="[[%ms2_frontend_new]]"></i>--> <!--minishop2_favorite <i class="glyphicon glyphicon-bookmark" title="[[%ms2_frontend_favorite]]"></i>--> — с помощью этого. Вопросы / Условие для minishop2 7 0
02 марта 2017, 05:30 Вы еще легко отделались: я последний ~месяц занимаюсь разработкой системы управления заказов минишопа — после продолжительного программирования теряю возможность нормально склонять и расставлять ударения в словах на какое-то время %) Вопросы / Профиль пользователя ModX 23 +3
02 марта 2017, 05:21 Не совсем понял, что именно нужно расписать… 1. У вас есть раздел с тикетами (допустим, новости), доступный по адресу '/news/'. Создаете в древе ресурсов новую страницу (не тикет), после чего перетаскиваете ее в раздел с тикетами, делая ее дочерней. 2. Изменяете алиас для страницы и создаете для нее отдельный шаблон. 3. Исключаете страницу из поиска и выборок pdoResources/getTickets по данному разделу. 4. Вызываете в шаблоне сниппет TicketForm c параметром &parents, равным айди раздела с тикетами. Вопросы / Профиль пользователя ModX 23 0
02 марта 2017, 04:40 Это зависит от того, как вы планируете редактировать материал. Если вы хотите редактировать тикеты из дополнения Tickets, то: 1. создаете страницу для управления тикетами (допустим, news/admin), на которой вызываете сниппет TicketForm 2. прописываете в примере выше ссылку в следующем формате: <a href="[[~айди_страницы_из_пункта_1]]?tid=[[*id]]"></a> Вопросы / Профиль пользователя ModX 23 +1
02 марта 2017, 03:59 С помощью фильтров MODX'a: [[!+modx.user.id:is=`[[*createdby]]`:or:memberof=`Administrator`:then=`Редактировать`]] С помощью фенома: {if $_modx->user.id | ismember : 'Administrator' || $_modx->user.id == $_modx->resource.createdby} Редактировать {/if} Вопросы / Профиль пользователя ModX 23 +1 1
Возможно ли реализовать возможность предоплаты за доставку на сайте? В любом случаем стандартный флоу минишоп2 рассчитан на оплату по ссылке, т.е. чтобы получить информацию об оплате, нужно чтобы заказ существовал. Чтобы сделать иначе, нужно использ...
Редизайн сообщества На больших экранах основной текст статьи я бы сделал 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... Да, планируется. Даже чуть больше, чем просто бонусная система)
На мой взгляд, лучше реализовать задачу таким образом:
— у вас есть единый раздел с тикетами «Статьи»
— на главной страницы с помощью MIGX вы реализуете таблицу вида:
Далее, в шаблоне, где вы хотите отображать статьи для пользователя:
в чанках заменить
на
Вариант 2:
В системных настройках изменить параметр link_tag_scheme на full.
Вариант 3:
для сниппета pdoTools задать параметр &pageLinkScheme.
Возьмем для примера достаточно сложное (потенциально вызывающее вопросы) и в тоже время популярное дополнение: mSearch2. Ценник на него без учета скидок ~2000. Вычитаем 30% modstore — итого 1400 рублей идет автору.
Предположим, что час среднебюджетного программиста стоит 700 рублей. Итого 2 часа сведут на нет всю прибыль от дополнения, что вполне достижимо, учитывая, что для решения ~половины запросов потребуется внедрение в админку. И все это без учета того, что под одним ключом могут задавать вопросы с разных сайтов.
В итоге в текущей ситуации, с одной стороны, стимулируется написание хорошей документации, но с другой — повышение итоговой стоимости. На мой взгляд, все сведется ко второму, учитывая, что данный вопрос уже поднимался. Что в итоге делает менее выгодным реализацию больших дополнений (или покупателя отпугивает высокая цена, или объем вопросов — разработчика).
К слову, все это подводит к идее реализации независимой от автора техподдержки (процентно от стоимости дополнения как раньше, или «общую техподдержку» за отдельную стоимость).
— вот здесь (страница со скроллом / без скролла, попап по нажатию на кнопку «вход») я аналогичную ситуацию решил с помощью слегка модифицированного Magnific Popup'a + верстка html-контейнера со свойством box-sizing: border-box; (затрудняюсь сказать точнее, уже не помню полную реализацию)
Из того, что сразу попалось на глаза:
На странице дополнения, при просмотре кол-ва загрузок (лупа) весь сайт передергивает (проблема со скриптом всплывающего окна и padding'a для имитации сдвига скролла).
Также, вероятно, лишнее подчеркивание лупы при наведении:
2. В файле admin.css добавляем:
меняем строку (в двух местах)
на следующую
1. У вас есть раздел с тикетами (допустим, новости), доступный по адресу '/news/'. Создаете в древе ресурсов новую страницу (не тикет), после чего перетаскиваете ее в раздел с тикетами, делая ее дочерней.
2. Изменяете алиас для страницы и создаете для нее отдельный шаблон.
3. Исключаете страницу из поиска и выборок pdoResources/getTickets по данному разделу.
4. Вызываете в шаблоне сниппет TicketForm c параметром &parents, равным айди раздела с тикетами.
Если вы хотите редактировать тикеты из дополнения Tickets, то:
1. создаете страницу для управления тикетами (допустим, news/admin), на которой вызываете сниппет TicketForm
2. прописываете в примере выше ссылку в следующем формате:
С помощью фенома: