Всего 125 945 комментариев

Игорь
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
Артур Шевченко
05 июля 2022, 22:52
0
Эх… вот бы кто-нибудь статейку с примером запилил)))
Николай Савин
05 июля 2022, 22:31
0
Согласен работа с токенами — самый простой и достаточно надежный способ авторизации через API
Его очень легко реализовать для MODX.
Максим
05 июля 2022, 20:19
0
Я бы выбрал JWT. А вообще рекомендую посмотреть реализациюэтого пакета
Ну и не забудьте прочитать описание предварительно, что бы понять что это и для чего.
Евгений Лазарев
05 июля 2022, 20:15
0
Авторизация для каждого из приложений кто захочет воспользоваться rest дабы дать возможность с ним взаимодействовать только определённым.
Максим
05 июля 2022, 20:05
0
Что значит защитить? Нужно немного подробностей…
Станислав
05 июля 2022, 16:56
0
Понял. Значит мы оба нашли разные рабочие решения вопроса.
Александр
05 июля 2022, 16:50
0
Ожидается ли поддержка php 8?
Дмитрий Танцирев
05 июля 2022, 15:40
+1
Если ответ (единица) приходит именно числом — то моё решение работать не будет =)
Оно работает только если ответ приходит текстом.

submitOnValue — взял не с потолка =) если что))

github.com/modxcms/revolution/blob/v2.8.4-pl/manager/assets/modext/util/utilities.js#L567
Станислав
05 июля 2022, 15:34
0
Замечу, что и в самой БД эти поля должны быть tinyint(1), к слову ваше решение у меня не показывает галочки, а без него — показывает :-) Это как бы странно, но если у вас работает и вам помогло — то хорошо.
Специально создал новый xcheckbox, при даже просто типе поля int в map.class и в БД — значение 1 отправляет, но галочки нет. Tinyint в map и в самой БД — отправляет и открывает с галочкой.
Я прошу прощения, что отвечаю спустя практически 2 недели. Забыл про оповещение с форума
Alex
05 июля 2022, 13:35
0
Я, видимо, не до конца понятно выразился.
Я об этом и писал, только последнее предложение в моём комментарии немного вводит в заблуждение.
Надо написать: при первом взгляде на фото, я тоже сначала не понял, когда это было?
Константин
05 июля 2022, 11:58
1
0
Спасибо, почему-то пропал автоинкремент и у новых шаблонов id=0
Решил запросом ALTER TABLE modx_site_templates MODIFY COLUMN id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY FIRST
Дмитрий Танцирев
05 июля 2022, 11:50
0
Установите данный пакет: modx.com/extras/package/seosuite
Увидите =)

Данный пакет — объединил в себе два старых пакета: SEO Tab и SEO Pro

Если же у вас стоят SEO Tab и SEO Pro — то там «старый» вид.
Alex
05 июля 2022, 11:45
0
Автор имел ввиду, что было после установки дополнения и стало после того как он навёл красоту.
Я тоже сначала не понял, когда же так было? :-)
Vladimir
04 июля 2022, 15:35
0
Спасибо всем кто помог. Вот код работает проверил. Можно конечно было лучше сделать, особенно в случае создание и автоматом добавления групп ресурсов по брендам, но так и не смог быстро найти способ проверить все группы ресурсов на имеющиеся и если нет то создать а потом всё собрать и указать в словарь.
<?php

$brensList = array('Zuff', 'Пульс', 'ON', 'Dominator', 'FB', 'Актех', 'Вожак', 'Зверь');

$q=$modx->newQuery('msProductOption', array('key:=' => 'brand', 'value:IN' => $brensList));

$q->prepare();
$q->stmt->execute();
$res = $q->stmt->fetchAll(PDO::FETCH_ASSOC);


$brendsGroups = array(
    'Zuff' => 7,
    'Пульс' => 8,
    'ON' => 9,
    'Dominator' => 10,
    'FB' => 11,
    'Актех' => 3,
    'Вожак' => 6,
    'Зверь' => 14
);




foreach ($res as $k => $v) {

    $currentProductBrand = $v['msProductOption_value'];
    $docId = $v['msProductOption_product_id'];
    $newGroup = $brendsGroups[$currentProductBrand];
    $resource = $modx->getObject('modResource', $docId);
    if(!$resource->isMember($newGroup)){
        $resource->joinGroup($newGroup);
    }

}
Prihod
04 июля 2022, 15:20
+1
И кстати на php 8.1 компонент у меня не запускается.
php 8 в текущей версии не поддерживается
Vladimir
04 июля 2022, 14:00
0
У меня есть 1 вариант, но он костыльный, пройтись по всем товарам, и положить их в спец группу ресурсов по бренду, и потом эту группу указать