Финансовая поддержка VPS, бесплатные дополнения и docs Донаты оплачивают сервер и двигают бесплатные дополнения MODX и документацию. Поддержать

Всего 126 095 комментариев

Михаил
Михаил
Оказалось не так просто…
[[!mFilter2@mikmFilter?
                    	&paginator=`pdoPage@pdoPage_m`
                    	&limit=`30`
                    	&parents=`3`
                    	&showEmptyFilters=`false`
                    	[[$pdoPage-prefix?]]
                    	&hideContainers=`1`
                    	&element=`msProducts`
                    	&where=`{ [[!+modx.user.id:is=`235`:then=`"Data.remains:>":0.001`:else=`"Data.remains:>":0.001,"Data.image:IS NOT":null`]]}`
                    	&class=`msProduct`
                    	&sort=`ms|remains:desc`
                    	&filters=`
                    		ms|mat
                    		,ms|cattools
                    		,ms|color
                    		,ms|application
                    		,msoption|ms_SlabsBackLight
                    		,ms|weight
                    		,ms|made_in
                    		,ms|price:number
                    		,ms|remains:number
                    	`
                    	&aliases=`
                            ms|mat==poroda
                    		,ms|cattools==vidprodukcii
                    		,ms|color==cvet
                    		,ms|application==obrabotka
                    		,msoption|ms_SlabsBackLight==backlight
                    		,ms|weight==tolschina
                    		,ms|made_in==country
            		
                        `
                    	&showLog=`0`
                    	&tplFilter.outer.poroda=`tpl.mFilter2.filter.select`
                    	&tplFilter.row.poroda=`tpl.mFilter2.filter.option`
                    	&tplFilter.outer.vidprodukcii=`tpl.mFilter2.filter.select`
                    	&tplFilter.row.vidprodukcii=`tpl.mFilter2.filter.option`
                    	&tplFilter.outer.cvet=`tpl.mFilter2.filter.select`
                    	&tplFilter.row.cvet=`tpl.mFilter2.filter.option`
                    	&tplFilter.outer.obrabotka=`tpl.mFilter2.filter.select`
                    	&tplFilter.row.obrabotka=`tpl.mFilter2.filter.option`
                    	&tplFilter.outer.backlight=`tpl.mFilter2.filter.checkbox`
                    	&tplFilter.row.backlight=`tpl.mFilter2.filter.option`
                    	&tplFilter.outer.tolschina=`tpl.mFilter2.filter.select`
                    	&tplFilter.row.tolschina=`tpl.mFilter2.filter.option`
                    	&tplFilter.outer.country=`tpl.mFilter2.filter.select`
                    	&tplFilter.row.country=`tpl.mFilter2.filter.option`
                    	&tplFilter.outer.ms|price=`tpl.mFilter2.filter.slider`
                    	&tplFilter.row.ms|price=`tpl.mFilter2.filter.number`
                    	&tplFilter.outer.ms|remains=`tpl.mFilter2.filter.slider`
                    	&tplFilter.row.ms|remains=`tpl.mFilter2.filter.number`
                    	&tpls=`tpl.msProducts.row_m`
                    ]]
Вот так у меня формируется список фильтров. Мне нужно на странице каталога в верхней части (как в modstore) поставить 2-3 кнопки, нажатие на которые, отфильтрует результаты по конечному значению фильтра ms|made_in (страна). То есть кнопка «Россия» покажет товары российского производства, а кнопка «Импорт» покажет всю остальную продукцию. И, желательно, чтобы это и выглядело как в modstore, то есть без селектов, а именно кнопкой.
FastDevLab
FastDevLab
Приветствую.
Есть несколько вопросов:
1. Без редактора Markdown — пост наверное будет простыней текста (как его преображать: тегами **Жирный текст** __курсивный текст__ ~~перечеркнутый текст ~~ `моноширный текст` ||скрытый текст|| или
<b> ...</b> <i>...</i>
и т.п.)
2. Можно его как то к страницам привязать? Например к разделу блога, чтобы он сам забирал TV с изображением и анонс к примеру (introtext например) и публиковал с ссылкой на полный пост?
FastDevLab
FastDevLab
Это все понятно. Амнезия не совсем стандартный ВПН (она не меняет местоположение, там своеобразная система обфускации — она подменяет провайдера на Cloudflare) — в общем при ее включении, пакеты обновляются из админки MODX. Она не разблокирует все, к примеру с ней на зайти к примеру на gemini.google.com, но зато полезные сайты типа swiperjs.com начинают работать стабильно. В общем я до конца не понимаю как это работает — но работает.
FastDevLab
FastDevLab
ИИ всего лишь помог красиво сформулировать, не более.

Но по сути согласен:
  • SOCKS5 — работает у ВСЕХ (проверено)
  • Amnezia — у меня работает, но регионально блокируется
Ваше решение объективно стабильнее для публичной инструкции.

Моё больше как «лайфхак»

На этом спор думаю можно завершить. Каждый сам выберет то что ему ближе)
FastDevLab
FastDevLab
Согласен, не стоит спорить — оба подхода работают, просто решают задачу по-разному.

Ваше решение действительно работает, это главное. Но если позволите, поделюсь замечаниями по коду (не критика, а предложения по улучшению безопасности):
  • `verify => false` — отключает проверку SSL сертификатов (потенциально небезопасно);
  • `CURLOPT_SSL_VERIFYPEER` внутри блока прокси — без прокси SSL работает, с прокси отключен;
  • Порт 9858 захардкожен, хотя стандартный SOCKS5 — 1080;
  • Нет обработки ошибок cURL и логирования для диагностики;
  • Нет timeout на подключение к прокси.
Это не баги, просто можно сделать код более универсальным и безопасным.

По Amnezia WG — она тоже работает и обходит блокировки благодаря обфускации. Главное отличие — она поднимает VPN для всей системы, а не только для MODX.

Плюсы SOCKS5 (ваш подход):
  • Более стабильное решение;
  • Работает точечно для MODX.
Плюсы Amnezia (мой подход):
  • Проще для неопытных пользователей;
  • Работает для всех приложений;
  • Не требует правки системных файлов.
Минусы обоих:
  • SOCKS5 — требует платную подписку.
  • Amnezia — периодически блокируется, нужно обновлять конфиги.
Вывод: ваше решение идеально для тех, кто хочет минимального вмешательства в систему и готов платить за стабильность. Мое — для тех, кому нужен VPN для всего сразу.

Спасибо, что поделились инструкцией, она реально полезна.
Ivan K.
Ivan K.
То что у вас работает, не имеет отношение, к тому, что вы используете впн.
MODX обращается к репозиторию не через ваш впн! обращение идет от сервера, где у вас установлен MODX!!! Использование впн на вашем локальном компьютере не подменит ip сервера, где находится MODX.

Репозиторий MODX за Cloudflare — вы жмете «скачать компонент» идет обращение СЕРВЕРА где MODX к серверам Cloudflare, ip у них динамические, один раз нажмете попадете на тот который замедляется второй раз на тот, что еще не замедляют.
FastDevLab
FastDevLab
Вот работает (ссылка на запись gif) и сомневаюсь, что перестанет работать) Не знаю почему у вас не работает. И утверждение что «Соединение с репозиторием идет с ip сервера, где у вас MODX», получается ошибочно