Евгений Борисов

Евгений Борисов

Был в сети 06 июня 2026, 05:32
Заказы принимаю
Для начала нужно узнать каким образом реализована мультиязычность. На данный момент есть 2 способа которыми пользуются массы: evoBabel и bLang. И тот и другой способ позволяют реализовать задуманное. Если это не так — вопросы к разработчику — каким именно способом он реализовал мультиязычность. Но в любом случае, плагином на событии OnPageNotFound всегда можно решить вопрос.
Если вдруг возникнут сложности — обращайтесь. Помогу.
Idiorm и его форк Paris хороши лишь как однофайловые ORM. В современном мире это не так важно (ну разве, что вы не пишете какой-то портативный мини-скрипт).

Еще один форк этого проекта — Granada уже разделен на несколько классов, но в целом принципиально ничем не отличается от своих предшественников и может работать на php 5.3+. Работа на php 7 не тестировалась, поэтому если вдруг найдете багу и решите ее поправить. То скорее всего придется делать форк, т.к. принятие PR может быть долгим.

Можете посмотреть еще в сторону Parm — это более интересное и современное решение для проектов на php 5.5+

Если же у вас проект работает на PHP 7.1 и выше, то я бы выбрал Eloquent. Во первых, в определенный момент вам помимо ORM может понадобиться что-то еще. И тут пакеты Laravel вам могут сильно облегчить жить, т.к. имеют слабую связанность. Когда я первый раз пробовал переписать MODX Evolution (если кто помнит, то проект назывался BolmerCMS и основан был на idiorm. Я даже PR туда успел заслать), то столкнулся именно с этой проблемой — тяжело было связать между собой разношерстные компоненты
Да нет, тут скорее проблема в построении запроса. Имеем набор данных
21680, 21681, 21686, 21682, 31684, ...
Что вернет запрос?
WHERE member_id LIKE '%168%'
21680, 21681, 21686, 31684

Это ведь не корректно. Но на данный момент у ТС скорее всего еще нет ресурсов с таким большим ID. Поэтому код до поры до времени работает так, как он и задумал.
Ладно бы потратили, а то ведь встречаются кадры которые выступают лишь как посредники в цепочке заказчик-исполнитель. И когда появляется необходимость доработать/поправить функционал, то посредник берется за эту работу сам. Тут-то и зарождается мысль «движок гауно, поддержка нулевая». Но самое интересное не в этом, а в том, что подобный подход к работе оттачивается годами. И при любом удобном случае эти кадры заявляют
сам в EVO С 2009, и в REVO с 2013.
Невольно напрашиваются вопросы: «Кто ты? Почему у тебя в профиле одни вопросы? Почему тебя никто не знает на сайтах community.modx-cms.ru, modx.im, modx.ru, modx.pro? Или ты действительно считаешь, что за 10 лет работы с системой тебе нечем поделиться кроме вопросов и стонов?»
Забавная история напоследок, вчера человек обратился — не может поставить модх, после установки всегда 503. Оказалось, что при установке он вводил пароль БД, пользователя и остальное, но не вводил имя БД. Модх радостно рапортовало зелененьким, что соединение с БД установлено, все ок и продолжало установку. Естественно в конфиге bdname пусто.
1) Советую ознакомиться
с теорией ошибок
2) Если вас не устраивает поддержка платных продуктов, то не стоит проецировать свой негатив на всю систему
3) Если пользуетесь какой-то программой и нашли в ней ошибку, то сообщить об этом — все равно, что сказать спасибо. Мне кажется, именно эту мысль и пытался донести @ibochkarev своим комментарием
Развитие Revo всегда сопровождалось лозунгами в стиле
— Добавьте звезду, это не сложно
— Нашел багу — открой issue
— Поправил багу — пришли PR
— Не дружишь с Git, пришли донат
— Мы сделаем нашу CMS лучше!

В разное время этими фразами прикрывали разные фейлы. Но что мы по факту имеем?
— Нашлись баги по которым созданы Issue, а реакции на них ровным счетом никакой в течении длительного времени.
— PR — дай бог если кто-то из сообщества проверит во время баг-ханта при учете, что мирж на этот момент будет безконфликтный. И то, после проверки не факт, что примут (как это было с сабжем о котором рассказывает Василий)
— Звездочку поставить… Вы серьезно? Это как-то поможет с релизом? Звездочки на GitHub это скорее Favorites, чем лайки в социалках

В сухом остатке мы имеем громкие лозунги с призывами к действию. Все как по учебнику SMM…
function Selected(a) {
  var label = a.value,
    smy = document.getElementById("resource|parent_0"),
    assilka = document.getElementById("go"),
    tmp = {
      64446: {
        url: '/katalog/pitbajki/',
        block: 'pit'
      },
      64712: {
        url: 'katalog/motocziklyi/',
        block: 'moto'
     },
     64712: {
        url: '/katalog/kvadrocziklyi/',
        block: 'kvadr'
     }
  };

  ["pit", "moto", "kvadr"].forEach(function(elId){
    document.getElementById(elId).style.display='none';
  });
  ["msoption|growth_0", "msoption|wheelsize_0", "msoption|age_0"].forEach(function(elId){
    document.getElementById(elId).value='';
  });

  if(tmp.hasOwnProperty(label)) {
    document.getElementById(tmp[label].block).style.display='block';
    assilka.href = tmp[label].url;
  } else {
    assilka.href = "/katalog/";
  }
}
Алгоритм такой: берем файл и удаляем из него все комментарии/пробелы при помощи php_strip_whitespace. После чего контент прогоняется через ряд регулярок. Чем больше размер файла и регулярок, тем медленней проверка всего сайта. Поэтому, как я понимаю, от версии к версии набор этих регулярок меняется, а не только дополняется. Именно этим и можно объяснить почему одна версия айболита находит какие-то шеллы. А другая — их уже не видит.

P.S. Еще одна причина, почему я не доверяю айболиту — наличие закладки в виде определенного текста. Если вдруг файл с вирусом содержит этот текст, то айболит такой файл никогда не пометит как вредоносный.