Всего 125 942 комментария

Артур Шевченко
07 июля 2022, 01:40
+1
Вероятно потому, что у страницы изменился адрес. В верхнем меню, в разделе Управление, найдите пункт Перегенерировать урлы
Zulya
07 июля 2022, 01:37
0
Спасибо большое! Оказывается так просто).
Как думаете, почему после добавления тикета в дочернюю категорию, на сайте страница тикета может выдавать ошибку 404? site.ru/faq/cat1/701-vopros-1.html в таком вложении находится тикет, но выдает ошибку 404.
Артур Шевченко
07 июля 2022, 00:58
+1
У вас на данный момент как я понимаю есть 1 раздел с тикетами, не надо внутри него создавать другие разделы, создайте рядом, и рядом же создайте простой ресурс, а потом мышкой перетащите все разделы тикетов в простой ресурс.
Zulya
07 июля 2022, 00:54
0
Внутри ресурса у меня не получается создать простые дочерние ресурсы, чтобы их сделать категориями.
Получается простой ресурс и категории необходимо вне раздела тикетов? Если да, то как потом их привязывать к разделу тикетов?
Артур Шевченко
06 июля 2022, 23:05
0
Раздел тикетов это и есть категория, если вы хотите, чтобы пользователь мог выбрать категории — добавьте разделов, и создайте простой ресурс, в котором эти разделы будут сгруппированы.
Zulya
06 июля 2022, 22:33
0
К разделу Tickets не возможно добавить категории? Можете ответить? Если знаете решение, пожалуйста, подскажите. Очень нужно. Спасибо!
Артур Шевченко
06 июля 2022, 13:16
+1
1. Установить Console, если не.
2. Запустить в ней код
$resources = $modx->getIterator('modResource', array('parent' => 29));
foreach($resources as $resource){
    $resource->remove();
}
Игорь
06 июля 2022, 10:48
0
Есть ещё передача параметров POST (в будущем) — я как бы сразу написал…
Думаю, что замена (int) $_GET[ на (int) $_POST[ в PHP и ссылок на формы с кнопками с передачей POST снимет эту проблему.
Александр
06 июля 2022, 09:36
0
Поддержка хостинга ответила, что у них лимит в 30 одновременных подключений к БД. Как найти то, что могло создать такое кол-во обращений.
Просветов Игорь
06 июля 2022, 09:30
0
Привет, уже и не помню…
Александр
06 июля 2022, 09:25
0
Добрый день. Удалось решить вопрос?
Артур Шевченко
06 июля 2022, 08:46
0
применяется там, где вывод страницы зависит от наличия (состояния значений) параметров.
Я делал мультилэндинг на migx, где параметром была utm метка. У этого был практический смысл и привязка с парпметрам URL вполне оправдана. Ты говоришь что параметров может быть куча и предлагаешь хранить их в адресной строке, а зачем? Это квест, где, как ты сам писал, читерства быть не должно, убрав параметры из урла ты пресечешь читерство.
Артур Шевченко
06 июля 2022, 08:37
0
Ладно, сам когда-нибудь запилю)))
Николай Савин
06 июля 2022, 07:52
0
Что там пилить. Генерируешь произвольную строку пользователю. Отдаешь на фронт.
Теперь фронт каждый раз при авторизации подписывает запросы токеном. На базе него происходит проверка прав и выдача ответа. В отличие от куки — токен можно быстро, массово отозвать, сменить и так далее.
Игорь
06 июля 2022, 07:16
0
«сохранять состояние можно в куки, в сессию или local storage» — зачем?
Все необходимые для работы программы параметры передаются в браузерной строке при переходе на следующую страницу.

«migx, как и в твоём варианте, будет просто интерфейсом редактирования» — да, просто интерфейс редактирования.

«не хватает описания практического применения» — квест является примером реализации.
Конечно же, есть определённые чанки для вывода HTML-блоков, которые размещаются в шаблоне (у меня — в одном шаблоне для всего квеста).

При размещении в шаблоне MODX при помощи formirfrommigx выведет HTML-блоки для основного экрана

[[*content]]
[[$formirfrommigx?&tipokna=`1`&nomerknigi=`0`]]
В окне для записной книжки

<!-- HTML-код модального окна -->
<div id="myModalzapis" class="modal fade">
  <div class="modal-dialog">
    <div class="modal-content">
      <!-- Заголовок модального окна -->
      <div class="modal-header">
        <button type="button" class="close" data-dismiss="modal" aria-hidden="true">X</button>
        <h4 class="modal-title">Записная книжка</h4>
      </div>
      <!-- Основное содержимое модального окна -->
      <div class="modal-body">
[[$formirfrommigx?&tipokna=`3`&nomerknigi=`0`]]
[[$formirfrommigxinterf?&tipokna=`3`&tipinter=`3`&nomerknigi=`0`]]
    <hr>
      </div>
      <!-- Футер модального окна -->
      <div class="modal-footer">
        <button type="button" class="btn btn-default" data-dismiss="modal">Закрыть</button>
      </div>
    </div>
  </div>
</div>
[[$formirfrommigx?&tipokna=`3`&nomerknigi=`0`]] — вывести HTML-блоки для ЗАПИСНОЙ книжки именно на этой странице — в самом верху
[[$formirfrommigxinterf?&tipokna=`3`&tipinter=`3`&nomerknigi=`0`]] — вывести HTML-блоки для ЗАПИСНОЙ книжки для ВСЕХ страниц — глобальный интерфейс

чанк formirfrommigx

[[getImageList?
    &tvname=`sobit`
    &tpl=`formirscenariotpl`
    &where=`{"sobitie_tip:=":"[[+tipokna]]","sobitie_tip_int:<":"2"}`
    &prmnomerknigi=`[[+nomerknigi]]`
]]
tpl formirscenariotpl

[[!newformirpostuslovienew?&nomerknigi=`[[+property.prmnomerknigi]]`&imachunk=`formirscenariotc[[+sobitie_ssilkatip]]`&uslovieprov=`[[+sobitie_uslovie]]`
&sobitie_html=`[[+sobitie_html]]`
&sobitie_text=`[[+sobitie_text]]`
&sobitie_this_text=`[[+sobitie_this_text]]`
&sobitie_obrabotka=`[[+sobitie_obrabotka]]`
&sobitie_stranica=`[[+sobitie_stranica:is=`0`:then=`[[*id]]`:else=`[[!getmoiparamphp?&mp=`[[+sobitie_stranica]]`]]`]]`
&sobitie_ssilkatip=`[[+sobitie_ssilkatip]]`
&sobitie_kod=`[[+sobitie_kod]]`
&sobitie_uslovie_true=`[[+sobitie_uslovie_true]]`
&sobitie_uslovie_false=`[[+sobitie_uslovie_false]]`
&sobitie_obrabotka_true=`[[+sobitie_obrabotka_true]]`
&sobitie_obrabotka_false=`[[+sobitie_obrabotka_false]]`
&imiapar=`[[+imiapar]]`
&sobitie_dtext_ssilki=`[[+sobitie_dtext_ssilki:is=``:then=``:else=`[[+sobitie_dtext_ssilki]]`]]`
]]

«Только текстовые квесты?» — применяется там, где вывод страницы зависит от наличия (состояния значений) параметров.

Вместо текста — любой HTML-код (или я что-то не так понял?).

Пример с кучей параметров (пока игрок подошёл к дракону, он успел получить два заклинания, подсказку о наличии клада, волшебную флягу в три порции воды, кошелёк вместимостью в 50 монет, деньги — 35 золотых, почти бодрый и с «флагами» о прохождении определённых шагов — n1=1 — загадка короля решена — при встрече с единорогом это обыгрывается, n2=1 — игрок раскопал клад — в слухах в это обыгрывается)

maple4.ru/knigi/put-geroya/452-tryoxgolovyij-drakon/?&zklpolet=1&zklplav=1&dveberez=1&flg=1&flgzn=3&flgzntip=1&flgznpar=3&ksl=1&kslzn=35&kslznpar=50&ust=997&n1=1&n2=1

Можно открыть записную книжку или вещмешок для доп действий

ну, и без параметров
maple4.ru/knigi/put-geroya/452-tryoxgolovyij-drakon/
Артур Шевченко
06 июля 2022, 00:27
0
Допустим сохранять состояние можно в куки, в сессию или local storage. Что касается программирования, то если известен алгоритм, можно написать универсальный скрипт, который будет уметь работать с любыми параметрами, а migx, как и в твоём варианте, будет просто интерфейсом редактирования. Я думаю, что нужно оптимизировать, пока, лично для меня, логика работы до конца не ясна. Ещё не хватает описания практического применения. Только текстовые квесты? А на них есть спрос?
Игорь
06 июля 2022, 00:02
0
Представим ситуацию — я НЕ хочу (или не могу) напрямую работать с параметрами (да и самим PHP), тем более, начиная проект, я ещё НЕ ЗНАЮ, какие параметры мне понадобятся.

Я знаю, что HTML страница, уже как ИГРОВОЙ элемент, состоит из, собственно, самой страницы ПЛЮС параметры.

Сама страница — это просто шаблон.
Я же в MODX (поле MIGX) размещаю HTML-блоки, условия их показа на странице и отработку кликов (нажатий) по ссылкам/кнопкам/формам, НЕ КОДИРУЯ в PHP напрямую — в рисунке ВЫШЕ был пример — рекомендую открыть в новом окне.

Нужен мне какой-то параметр — в РОДИТЕЛЬСКОЙ странице (поле MIGX в MODX) его добавляю, а потом использую там, где НАДО (при помощи условий, опять же в поле MIGX в MODX).

Ну и самое главное — параметры при переходе на новую страницу не «теряются», если они НЕ РАВНЫ нулю.
Игорь
05 июля 2022, 23:36
0
Делая квест я НЕ ЗНАЛ, чем он закончится, какие параметры мне понадобятся и т.д.

Открывая новую страницу, бумажную версию квеста, вижу «Вы находите амулет со звездой, если понадобится — добавьте 5 к номеру страницы».

Ок, ТУТ же, в MODX, добавляю ИГРОВОЙ объект amlzvz

В MODX добавляю реакцию на получение амулета и его потерю (а вдруг его отберут?), отображение в малом интерфейсе на главном экране и в модальном окне — НЕ ЗАНИМАЯСЬ напрямую непосредственно кодированием кода PHP, прописывая только условия отображения на экране или том же модальном окне.
Мне это НЕ ИНТЕРЕСНО, у меня есть HTML-код, который я должен вывести.
И «забываю» об амулете.

Потом, в процессе прохождения квеста (точнее — последовательного переноса каждой бумажной страницы в электронный вариант), я вижу такое:

«Вы заходите в комнату с изображением звезды»

Ок, я понимаю, что должен «воспользоваться» амулетом, поэтому в Вещмешке добавляю ИМЕННО НА ЭТОЙ странице добавляю кнопку «Использовать амулет звезды» — опять же, в MODX, никакого кодирования напрямую в PHP — и для кнопки задаю действие — что должно произойти при использовании амулета (скорее всего — переход на новую страницу с новыми параметрами).

ВСЁ. Я НЕ РАБОТАЮ напрямую с параметрами из строки браузера, не объявляю переменных PHP, я всего лишь проверяю условия срабатывания и изменение при использовании.

Могу ради интереса прямо сейчас добавить куда-то объект и реакцию на его использование :)
Павел Бигель
05 июля 2022, 22:56
+1
Отличительная особенность MODX сообщества заключается в том, что ребята изобретают такие велосипеды, от которых волосы на голове начинают выпадать.

Откинем вообще код, архитектурные «особенности» проекта и т.д т.п

Возьмем первоначальную задачу — «удобная работа с URL параметрами из под MODX»

Преположим, что логика работы игры вынесена в сервисы и остается только работать с URL параметрами.

Я просто оставлю этот тут
www.php.net/manual/en/function.parse-str.php