В вашем случае надо так: DESC/ASC должно вторым параметром передаваться. Если второй параметр не передан, по умолчанию используется ASC
Николай! я в отчаянии... Удалось получить входные параметры, но не в методе initialize, а в prepareQueryBeforeQuery как я и писала ранее сортировка идет по менюИндекс, но в запросе на выходе это не видно: Следуя Вашему совету, убрала сортировку в методе prepareQueryBeforeCount : и добавила вот что получается : это как понимать? почему ASC остается и просто дописывается Desc ( и даже моим регистром)
Судя по всему, мало кто еще понимает что такое современный JS, реакт и т.п. и зачем это вообще нужно. Вот в качестве интересного примера: https://stackblitz.com/edit/test-google-map Это аналог сервиса jsfiddle.org, только специализированный под реакт и ангулар. Посмотрите код, конечный вывод, и прикиньте, как быстро вы сможете имеющимися у вас на текущий момент средствами накидать компонент для вывода гуглокарты с любыми кастомными на ней HTML-элементами (при том, что гуглокарта в принципе просто так не дает кастомные элементы выводить).
Я не знаю как у вас там все устроено (наверняка какое-то собственное решение), но есть несколько основных моментов: Как у вас подгружаются данные в это открывающееся окно, в которое надо передать ID? При открытии сразу данные с сервера в него пишутся? (То есть окно открывается сразу с информацией?). Или открывается окно, после чего выполняется AJAX-запрос на сервер, чтобы получить данные? Если первый случай, то у вас адрес открывающегося окна уже должен содержать ID нужного вам тикета, чтобы на стороне сервера вы могли получить этот ID и выполнить выборку нужных вам данных. Если второй случай, то вам не только передать ID в окно надо, но и добавить этот ID в качестве параметра запроса, который уйдет на сервер за получением нужных данных, и там выполнить конечный запрос.
Владимир, можете мне на почту написать. n.lanets@modxclub.ru
Терпение лопнуло! Таких мудаков как fabricasaitov.ru (они же фабрика-сайтов.рф) я ещё не встречал. Как с вами связаться, чтобы вы перенесли сайт на modx ?
Добрый день. Скажите, пожалуйста, как передать id в открывающееся по клику кнопки окно? Сейчас поясню: 1. У меня есть вкладка «Билеты», на ней список всех билетов. 2. Кликаю ПКМ по любому из билетов и жму — «Редактировать билет» — здесь у меня передается id того билета, по которому я кликнул. 3. В открывшемся окне у меня 2 таба: Редактирование билета и Добавить вопросы. 4. На вкладке «Добавить вопросы» у меня выводится список вопросов данного билета, и есть кнопка — «Добавить вопрос». Мне нужно, чтобы по клику этой кнопки у меня создавался вопрос с привязкой именно к этому билету (у модели есть поле tickets_id)? но оно у меня упорно не передается в открывшееся окно. на самой вкладке с вопросами отображаются только те, что принадлежат этому билету (я через БД добавил вопросам параметр tickets_id нужный.) Помогите пожалуйста. Заранее спасибо!
В своем конечном процессоре в методе initialize пропишите и посмотрите с какими параметрами в итоге инициируется процессор. Если какие-то сортировки добавлены после этого, то в большинстве случаев это косяк. Пропишите отладку и в методах prepareQueryBeforeQuery и prepareQueryAfterCount, а так же в setSelection, если он есть. Я ничего не могу так сказать, точек костыльных вхождений очень много. Я в своих процессорах не переопределяю логику MODX-процессоров относительно параметров сортировки, так что по умолчанию все должно работать как есть. Можете попробовать крайний случай. В prepareQueryBeforeCount выполнить $this->unsetProperty("sort"); $this->unsetProperty("dir"); и прописать свою сортировку непосредственно в объект запроса в методе prepareQueryAfterCount.
именно так не получилось. в запросе ничего не меняется Добавила в функцию вот так в запросе видны изменения а на фронте - нет. Решила проверить как ведет себя запрос через phpmyAdmin. Оказалось, запрос верный, только нужные результаты в конце списка. Изменила порядок сортировки на DESC - все стало как надо. Но теперь я никак не могу найти откуда идет ASC в запросе на сайте. Сама я его не дописывала... Через передачу параметра процессору не получается. Стала искать в наследуемых классах, добралась до site/web/resources/getdata.class.php изменила Но ничего не помогает... Ума не проложу, где это сидит Как еще попробовать?
Вот так вот, ни жданно ни гадано, вышла новая версия ShopModxBox. Это не стандартный релиз, так как, вся шаблонизация и фронт написаны на реакте (и т.п. сопутствующих технологиях). То есть это весьма современно, но, скорее всего, будет очень сложно для многих, кто привык писать в админке на чанках-сниппетах, а не на JS с использованием gulp/webpack и т.п. Но наверняка должны найти и те, кто оценит это начинание. Сразу уточню, что данная версия является пилотной и больше меня и изучения общественного мнения. Если спрос будет низкий, то новые релизы будут появляться нечасто, хотя все равно появляться будут. Для тех кто не совсем еще в теме и не знаком с GraphQL (да и вообще никому лишним не будет), предлагаю сразу заглянуть сюда: https://shopmodx.ru/db/ По большому счету это сердце новой сборки. это GraphiQL, веб-интерфейс для формирования граф-запросов и выполнения их. Краткий экскурс по этому инструменту. Я буду кратко рассматривать отдельные моменты, так как почти на все есть информация в интернете. В этой статье вообще практически не будет подробных изложений, потому что материал на столько объемный, что написать придется не один десяток статей. Эта статья просто вводная. Здесь вы не можете просто так редактировать и отправлять запросы на сервер, так как на сервере используются уже подготовленные запросы, а на вход принимаются названия конструкций передаваемые переменные. К примеру, чтобы получить данные по нескольким MODX-документам, выполняем запрос MODXResources. Вот как это работает: При чем обратите внимание на переключатель Локальное хранилище. Локальное - это запросы в самом браузере. Не локально - это на сервер запрос отправляется. К примеру, сейчас включена подгрузка некоторых данных на сторону браузера, и в браузере вы можете делать выборки документов, с сортировками и некоторыми фильтрами. К слову, на стороне сервера тоже есть локальное хранилище и удаленные источники данных, но про это я позже расскажу. Сейчас это слишком сильное колдунство. Попробуйте сами поиграться с запросами в браузере передавая те или иные параметры. Блок запроса с допустимыми параметрами описан там же. Вот делаю текущую выжимку из него: Обратите внимание на кнопку Docs в правом верхнем углу интерфейса. Кликните ее. Увидите документацию по API. Это еще одна сильная сторона GraphQL - генерируемая документация. Не надо сверки никакие делать, при каждом изменении схемы документация всегда актуальная. Главное отличие GraphQL от REST и прочих вещей - это то, что по сути механизмы построения API отдаются на сторону клиента. Это клиентское приложение решает какие данные ему нужны, в какой последовательности, вложенности и объеме. То есть если вам нужна информация по заказу только количество товаров и стоимость - ок, запросите только эти данные. Нужны более подробные данные (включая описание товаров и т.п.) - не вопрос, просто запросите и эти данные тоже. При чем все необходимые данные можно получить одним запросом. Конечно, для того, чтобы это именно так и работало, нужна первичная настройка графа на стороне сервера, чтобы он понимал запросы, знал откуда данные брать и в каком виде отдавать, но если все настроено правильно, со стороны клиента можно слать всякие разнообразные и хитрые запросы. По большому счету, если вы поймете как работают запросы в GraphQL, вы поймете ценность новой сборки ShopModxBox. Иначе, скорее всего, вас это все будет слишком сложно без особого интереса. В ShopModxBox он повсюду. Он отрабатывает входящие запросы на вебсервер, определяет какие компоненты вызывать, получает для них все необходимые данные и в дальнейшем вся жизнь протекает через него. Могу точно сказать, REST не дает такой гибкости и повсеместного применения. Установка и дальнейшая ценовая политика. Пока что сборка и все сопутствующие компоненты будут распространяться бесплатно. Что потом будет, время покажет. Ничего не могу на счет этого сейчас сказать точно. Но скорее всего большая часть технологий постоянно будет в открытом доступе (рынок опенсурса сейчас такой). Но установка сейчас не будет прям так что вжух. Совсем новичкам может быть сложно. Да и вообще много там что будет сложно. Огромным плюсом будет уже имеющийся опыт работы с современным JS. И так, по порядку. Качаем дамп сайта по ссылке https://shopmodx.ru/assets/v4.shopmodxbox.tar.gz Это уже готовый сайт со всей базой данных и т.п. Дамп базы в корне сайта лежит. Конфиг-файлов там нет. Сейчас советую такой алгоритм: 1. Устанавливаем MODX-2.4.2 (просто потому что текущая версия дев-сайта такая). 2. Сносим установленную БД и заливаем дамп базы из архива. 3. Заливаем на этот установленный сайт все файлы из архива. 4. Накатываем сверху в режиме обновления свежую версию MODX (2.5.2 точно работает, более свежей под рукой не было, а оффстраница скачивания MODX 500 отдает). Пробуйте зайти в админку, как минимум админка должна работать. Если не работает, пытайтесь занова. Логин/пароль в админку admin/admin (конечно же потом надо сменить пароль, если сайт в сети). 5. Настройка nginx. Для первичного запуска админки хватает базовых настроек веб-сервера, но для сборки желательны специальные настройки по типу того, что я сейчас покажу. Вот мой конфиг: https://gist.github.com/Fi1osof/382783330daeba487d444838cab829df Здесь ключевые моменты следующие: - Вот это https://gist.github.com/Fi1osof/382783330daeba487d444838cab829df#file-shopmodxbox-nginx-conf-L1-L35 блок для специального кеширующего поддомена. Правила подмены УРЛов картинок на него чуть ниже находятся. Смысл в том, чтобы использовать phpthumbof не на стороне генерации страницы (которой у нас сейчас вообще нет), а получать картинки через коннекторы. При чем кеширующий сервер на nginx нужен для того, чтобы раз получить картинку пережатую от MODX, и больше его не дергать, пока кеш картинки актуальный. Плюс к этому еще и УРЛы вечные получаются. Про это я писал тут: https://modxclub.ru/topics/absolyutnyie-ssyilki-bez-primesej-resajznutyix-kartinok-1268.html Обратите внимание, что в конце статьи есть ссылки на картинки с городских бань. Статье три года, портал уже пережил очередное перерождение, а ссылки на картинки по прежнему живые. Важно! Нгинкс с вот этим просто так не заработает, будет ругаться сильно. Найдите в этом конфиге вот такую запись: proxy_cache thumbs; Вот этот параметр и надо прописать в конфиг самого нгинкса nginx.conf в директиву http. У меня это так выглядит: То есть надо путь к папке прописать и прочие параметры. Второе, на что надо обратить внимание в конфиге, это то, что все основные запросы отправляются на порт 3000. Там и крутится node-сервер. Конечно же вы можете нод-сервер запускать на другом порту, и конфиг нгинкса соответственно подправить. 6. Запуск непосредственно node-сервера. Здесь тоже несколько этапов. 1) Идете на своем сайте сюда: https://github.com/MODX-Club/ShopModxBox/tree/master/assets/components/modxsite/templates/shopmodx/v4.0/app/modules/Site/server/config Копируете config.sample.js в config.js и правите его, указав параметры доступа к БД и обязательно УРЛ, по которому будет доступен этот сайт. Дело в том, что нода будет слать запросы на MODX, и для этого она должна знать куда их слать. 2) Вот это корневая папка скина: https://github.com/MODX-Club/ShopModxBox/tree/master/assets/components/modxsite/templates/shopmodx/v4.0 Там, в принципе, уже исполняемые скрипты все сжаты и пересобирать ничего не требуется (если только у вас не отличается сильно операционка, у меня убунта 16 используется, node-js 8.9). Надо только просто скачать все зависимости. Выполняем npm i в этой папке. После того, как все скачается, можно пробовать запускать сервер. Выполняем там же npm run start:prod Если все ОК, сайт должен заработать (фронтовая часть). Если что-то не так, пишите в комментах, лучше со скриншотами, постараюсь подсказать. Ну и для тех, у кого получилось запустить, да еще и что-то поправить захотелось. Сразу скажу, что там не все так просто (я еще не до совершенства свои техники отработал, еще работать и работать). Но все же какую-то кастомизацию я постарался заложить. Расскажу подробней о структуре. При запуске сервера, выполняется вот этот компонент: https://github.com/MODX-Club/ShopModxBox/tree/master/assets/components/modxsite/templates/shopmodx/v4.0/app/modules/Site Практически все файлы в этом модуле проксирующие, то есть просто пробрасывающие запрашиваемые модули из других компонентов. Сделано это для того, чтобы можно было переопределять эти запрашиваемые модули. К примеру, вот здесь в компоненте shopmodx-react (который отвечает за всю основную логику в плане работы этого магазина в связке с MODX), вызывается основной компоненте рендеринга именно в модуле Site, а не в самом себе. https://github.com/MODX-Club/shopmodx-react/blob/master/components/App/index.js#L28 Сейчас там просто происходит проброс обратно на shopmodx-react https://github.com/MODX-Club/ShopModxBox/blob/master/assets/components/modxsite/templates/shopmodx/v4.0/app/modules/Site/components/App/Renderer/index.js А можно взять и переопределить его. Не все там именно так сделано. Я экспериментирую, обыгрываю различные варианты. К примеру, вот этот компонент релит какой рендер-компонент использовать в зависимости от запрошенной страницы, и в нем базовые рендер-компоненты заложены в дефолтных параметрах https://github.com/MODX-Club/shopmodx-react/blob/master/components/Pages/DefaultPage/index.js#L14-L32 То есть в данном случае можно будет просто при вызове компонента передавать иные рендер-элементы. Кому интересно, покопайте этот компонент как следует, в нем прописаны и основные запросы для типовых страниц. В общем, на сегодня я закругляю повествование. Не буду кричать тут зачем все эти сложности вообще нужны. Кто в теме и не лень будет поковырять код, а то и запустить сайт, отписывайтесь в комментариях и будем совместно думать куда и как двигаться дальше. Если мало кто заинтересован, то я буду продолжать дальше двигаться сам. Но хотелось бы, чтобы было совместно, так интересней. От себя только скажу зачем мне это надо. Первое: посмотрите статистику https://www.npmjs.com/ 600 тысяч пакетов и полмиллиарда скачиваний в день. Это, мягко говоря, несколько больше, чем доступно в сфере MODX. Даже у меня там уже некоторое количество компонентов заимелось https://www.npmjs.com/~fi1osof Второе: мне сложно передать свои эмоции, но JS - это реально круто! Не говорю, что это последний язык на планете, но лично для меня php в прошлом. Конечно, где надо, я и на пыхе попрограммирую, но все же это уже не вдохновляет. Третье: в плане шаблонизации не приходится писать на нескольких языках, как сейчас на сервере пхп, на фронте JS. Здесь и там и там пишешь на одном языке и не паришься. На самом деле у меня личных мативов еще десяток-другой найдется, но это уже ничего не меняет. И еще такой момент: если будет заинтересованность и будут донейты и/или спонсорские предложения, то я готов гораздо больше времени уделять доработке сборки, написанию новых модулей, документации и т.п. Только уточню, 300-500 рублей погоды не делают. Все это отнимает очень много времени и сильно мозг напрягает. Бюджеты требуются посерьезней. Если что, пишите на почту n.lanets@modxclub.ru UPD: Тут телега появилась: https://t.me/reactmodx. Стучитесь. UPD2: Поднял еще слек-канал https://join.slack.com/t/react-modx/