• Как сниппетами можно генерировать свою разметку с классами в MODX?

    Realetive
    @Realetive
    MODX Ambassador России, самозванный БЭМ-евангелист
    Читай документацию — там всё написано: docs.modx.pro/components/pdotools/snippets/pdomenu , раздел Параметры CSS классов, двадцать четвёртым пикселем заголовок написан. Как только возникнет следующий вопрос — читай документацию. Если не нашёл ответ — читай документацию. Если хочешь понять, как работает — смотри в исходники.
    P. S. Ты где вообще такой синтаксис откопал: [[+class='nab-btns']]?
    Ответ написан
  • Как убрать табы для конкретного юзера?

    Realetive
    @Realetive
    MODX Ambassador России, самозванный БЭМ-евангелист
    Через «Настройку форм».
    b6eb66e97c51404eb5eaf78206f4e72c.png

    1) создайте новый профиль, например «Для менеджера» и набор правил на создание и/или редактирование ресурса;
    2) укажите ограничевающее поле, например, по шаблону. При желании вы можете назначить правила профиля для группы пользователей в соответствующей вкладке;
    3) во вкладке «Регионы» в выбранном правиле отключите ненужные вкладки, оставив, в вашем случае modx-panel-resource-tv.
    Ответ написан
    1 комментарий
  • Возможен ли экспорт/импорт системных настроек в MODX Revo?

    Realetive
    @Realetive
    MODX Ambassador России, самозванный БЭМ-евангелист
    Можно воспользоваться «православными» инструментами от создателей MODX: CAST, Teleport и Gitify. Они позволят автоматизировать работу с любыми сущностями MODX, включая ресурсы, настройки, чанки, сниппеты и пр. Есть ещё Vapor. Возможно, этот вариант тоже подойдет.
    Ответ написан
    2 комментария
  • Почему modx набирает популярность?

    Realetive
    @Realetive
    MODX Ambassador России, самозванный БЭМ-евангелист
    Достаточно исчерпывающий ответ на ваш вопрос дал Марк Хамстра (один из ведущих разработчиков на MODX) в своей статье: «Почему MODX не становится популярнее?»

    Оригинал статьи: https://modx.today/posts/2015/08/why-isnt-modx-mor...
    Мой «так себе» перевод: https://gist.github.com/Realetive/c68faa9811f58a78eb17

    Tl;dr
    MODX достаточно популярен. Но сравнивать WP с MODX это, на мой взгляд, как сличать тёплое с мягким. Преимущества MODX проявляются на проектах выше уровня «блог моего кота» и визиток на 3,5 уникальных посетителя в день. Чтобы понимать это, нужно обладать соизмеримо бо́льшим опытом, чем установить тему в WP. Опять же, для использования MODX не обязательно знать про инвалидацию кэша или рекурсивную шаблонизацию, но (в рот мне ноги!) без знания основ web-разработки, лучше оставаться на WP — на их форумах достаточно тем о том, как сложить 2 + 2 на jQuery. Резюмируя — если вы хотите разрабатывать сайты, MODX подходит прекрасно. Для «разработчиков мышкой», «создающих» сайты установкой плагинов и виджетов есть WP, Drupal, Joomla и прочие.
    Ответ написан
    Комментировать
  • Почему Firefox не подключает файл стилей?

    Realetive
    @Realetive
    MODX Ambassador России, самозванный БЭМ-евангелист
    MODX тут ни при чём. Самый очевидный вариант (гадать тут без ссылки на пример — пустая трата времени): у вас отключено отображение стилей. Инлайн-стили работают?
    Ответ написан
  • Как заставить ModX выдавать браузеру минимизированный html код?

    Realetive
    @Realetive
    MODX Ambassador России, самозванный БЭМ-евангелист
    Дополню ответ Sanes:
    для минификации (обфускации) кода можно использовать несколько методов:
    • клиентский, когда преобразование происходит на компьютере разработчика. Я использую для этого Gulp-стек, который не только оптимизирует код, но и проверяет стили код, отслеживает ошибки, «склеивает» стили и скрипты, генерирует спрайты, фавиконки и необходимые фолбеки, вырезает неиспользуемые стили, разруливает зависимости библиотек и обновляет их до требуемых версий. Это правильный подход, так как снижает нагрузку на сервер.
    • Серверный. Например, PageSpeed модуль от Google для Apache и Nginx.
    • Инструменты окружения (вышеупомянутый MinifyX на базе Munee под PHP);

    Оптимальный результат достигается при сочетании первых двух подходов.
    Ответ написан
    Комментировать
  • Почему после переноса сайта некоторые приложения не работают (MODX Revo)?

    Realetive
    @Realetive
    MODX Ambassador России, самозванный БЭМ-евангелист
    При установке приложений в MODX Revolution некоторые переменные окружения сервера используются для работы. Это создает ошибки при переносе, но по сути проблемой не является — это про… поведение, условно защищающее, например, от копирования платных расширений. Более плавный перенос с одного сервера на другой лучше сделать с помощью одного из специальных инструментов:

    Последний больше подходит для начального уровня подготовки, т. к. позволяет сделать «бекап» прямо из админки исходного сайта. Потом делаете чистую установку MODX на новом сервере и устанавливаете полученный «бекап» как обычный пакет. Желательно перед всеми манипуляциями очищать кэш.
    Ответ написан
    3 комментария
  • Как смогли добавить чужую страницу на сайт?

    Realetive
    @Realetive
    MODX Ambassador России, самозванный БЭМ-евангелист
    Возможные причины:
    • устаревшая версия MODX (ниже 2.3.x) — обновите MODX;
    • злоумышленник имеет доступ к админке (подмену можно сделать на уровне плагинов, проверяйте их);
    • злоумышленник имеет доступ к файлам по FTP (проверять придется все статичные файлы, включая .htaccess);
    Ответ написан
    Комментировать
  • Как корректно индексировать контент контейнеров в MODx?

    Realetive
    @Realetive
    MODX Ambassador России, самозванный БЭМ-евангелист
    Некоторые из возможных причин:
    • что-то намудрили с редиректом в .htaccess (если сервер на Apache) или правилах Nginx;
    • Если «подмена» происходит после перехода на страницу, это «дело рук» JavaScript;
    • Посмотрите шаблон документа с псевдонимом services и его дочерних ресурсов (a, b, c) — может, там допущена ошибка в сниппете, генерирующем вывод последних;

    Если указан тег base: <base url="//mysite.com/">, браузер будет обрабатывать ссылки со страницы mysite.com/services на анкоры вида <a href="#anchor">Раздел a</a> как mysite.com/#anchor, поэтому в шаблоне в таких ссылках нужно указывать абсолютный путь: <a href="[[*uri]]#anchor">Раздел a</a>.
    Ответ написан
    Комментировать
  • Почему не работает сниппет pdoResources?

    Realetive
    @Realetive
    MODX Ambassador России, самозванный БЭМ-евангелист
    Попробуйте указать &parents:
    [[pdoResources?
      &parents=`[[*id]]`
      …
      &resources = `21`
      &includeContent = `1`
      &tpl = `@INLINE [[+content]]`
    ]]
    Ответ написан
    Комментировать
  • Что лучше использовать для создания соц сети: MODx, Drupal или же Фреймворк PHP под Smarty?

    Realetive
    @Realetive
    MODX Ambassador России, самозванный БЭМ-евангелист
    Голову. Без неё вас не спасёт даже MODX. У ваших кандидатов есть архитектура будущего проекта? А у вас — ТЗ? Без этих основополагающих вещей ваш проект не уйдет дальше реализации формы обратной связи. Почему (сужу по MODX и Drupal) приняли решение использовать реляционную базу данных? Как планируете «разруливать» асинхронность на php?
    P. S. Выбранный кандидат будет реализовывать вам соц. сеть? Серьезно? Один? Скиньте, пожалуйста, в личку контакты MODX-разработчика — я его озолочу!
    Ответ написан
  • При разворачивании сайта на ModX с хостинга на локалку выдает пустую страницу?

    Realetive
    @Realetive
    MODX Ambassador России, самозванный БЭМ-евангелист
    Кратко:
    1. Используйте *nix-сервер;
    2. перенос файлов и БД делайте с помощью Teleport (like a boss), CAST или Vapor от Fi1osof.

    Следование этим двум пунктам избавляет от всех проблем, делает вашу кожу гладкой и шелковистой, девушки от вас без ума.

    Подробно:
    1. Никогда не используйте windows-сервер, если нет уверенного и осознанного желания выстрелить себе в ногу.
    2. Некоторые системные переменные MODX зависят от окружения и задаются при установке. Как программы или игры в Windows зависят от реестра, из-за чего вы не можете перенести приложение на другой компьютер, просто скопировав папку из Program Files. Поэтому перенос сайта с одного окружения на другое должен учитывать эти условия. Вышеперечисленные инструменты созданы специально для этого — они создают «слепок» сайта, адаптированный для нового окружения. Сам перенос при этом занимает минуты.
    Ответ написан
    2 комментария
  • Какие плагины для ModX Revo позволяют вместо логина вводить адрес электронной почты, номер сотового или другие поля?

    Realetive
    @Realetive
    MODX Ambassador России, самозванный БЭМ-евангелист
    Плагины MODX — это из другой оперы…

    В настройках плагина "login" есть поля логин, почта, полное имя и т.д.

    А в документации к Login есть подробное описание, какое поле (&emailField) использовать для ключа регистрации. При попытке авторизации можно использовать преХук, который проверит введённое значение со всеми полями таблицы пользователей и, если отыщет нужное (при наличии большого количества пользователей это станет затруднительнее, но всё зависит от того, как вы собираетесь расширять класс modUser), авторизует пользователя в нужном контексте.
    Ответ написан
  • Как расширить системную таблицу site_content (добавить пару столбцов)?

    Realetive
    @Realetive
    MODX Ambassador России, самозванный БЭМ-евангелист
    Вам подойдет подход расширения объекта modResource, когда вы создаете отдельную таблицу, в которой храните новые столбцы, что позволит избежать затирания этих столбцов при обновлении MODX, как подметил 2ball. Материалов по этой теме достаточно:

    Официальное руководство
    Сопроводительная статья от Боба Рея + статья «Зачем расширять modResource»
    Расширение системных (и не только) таблиц в MODX R... от Fi1osof
    Наследуемость полей у расширяемых xPDO-классов

    Если содержимое полей не требует индексации в БД, вы не планируете настраивать поиск по этим данным, то можно записывать их в JSON-формате поля properties таблицы site_content. Отличная статья по этой теме от bezumkin: Очень хитрые TV параметры
    Ответ написан
    Комментировать
  • Как MODx с точки зрения на СЕО?

    Realetive
    @Realetive
    MODX Ambassador России, самозванный БЭМ-евангелист
    Я, наверное, вас разочарую, но CMS/CMF-движки не имеют отношения к поисковой оптимизации (SEO). Поисковым роботам абсолютно безразлично, какую технологию вы используете, они учитывают другие параметры. Задача CMS — лишь помочь вам в этом. То есть «запороть» сайт и понизить его рейтинг можно на любом движке. На своём опыте могу сказать, что в MODX Revolution есть отличная система кэширования, которая положительно воспринимается поисковиками, т. к. увеличивает скорость генерации и загрузки страниц, система минификации и «склеивания» скриптов и стилей MinifyX (вообще, эти задачи должны решаться до выгрузки файлов на сервер, но если лень …), ЧПУ-генерация, коды ошибок 403 и 404, автогенерация Sitemap и прочее. По этому вопросу книгу можно написать, если честно — куча практик хороших и не очень.
    WordPress — отличная CMS, но она в какой-то мере ограничивает разработчика дополнениями, если их функционал приходится изменять или расширять. Архитектура MODX позволяет контролировать вывод любого дополнения (если автор соблюдает парадигму, конечно), но я бы советовал, если выберите его, обратить внимание на Revolution-ветку, т. к. предшественник, Evo, официально прекратил свое существование и больше не развивается.
    P. S. Кстати, MODX Revo гораздо безопаснее в плане защиты от взлома.
    Ответ написан
    2 комментария
  • Почему Modx Revolution неправильно показывает статус авторизации пользователя?

    Realetive
    @Realetive
    MODX Ambassador России, самозванный БЭМ-евангелист
    Вы не авторизованы в контексте web, в котором проверяете «авторизованность» — по умолчанию, при входе в админку вы авторизуетесь только в контексте mgr, даже если открываете «Перейти на сайт» в панели управления.
    Решение:
    • авторизовываться отдельно (например, через Login или HybridAuth);
    • автоматически «регистрировать» себя в контексте web при входе в админку:

      <?php
      
      /*!
       * Плагин AutoLogIn
       * В «Системных событиях» плагина включить событие OnWebPageInit
       */
      
      if ($modx->event->name == 'OnWebPageInit') {
        if (!$modx->user->hasSessionContext('web') && $modx->user->isMember('Administrator')) {
          $modx->user->addSessionContext('web');
        }
      }


    Ответ написан
  • Как получить id дочернего ресурса по имени(id) категории?

    Realetive
    @Realetive
    MODX Ambassador России, самозванный БЭМ-евангелист
    Если с помощью xPDO:
    $children = $modx->resource->getMany('Children');

    Можно воспользоваться готовым сниппетом (getResources или pdoResources, второй предпочтительней), который «обернёт» результат в шаблон чанка или выведет в удобном формате.
    Ответ написан
    3 комментария
  • Как сделать импорт товаров из xls в minishop2?

    Realetive
    @Realetive
    MODX Ambassador России, самозванный БЭМ-евангелист
    Из xls — нет. Но автор, bezumkin, предусмотрел импорт из CSV
    Ответ написан
  • Как вывести разные переводы слова в разных контекстах в ModX?

    Realetive
    @Realetive
    MODX Ambassador России, самозванный БЭМ-евангелист
    В MODX есть отдельный раздел для настройки словарей в разделе настроек (правый верхний угол меню админки, иконка «шестерёнки) «Управление словарями» (manager/?a=workspaces/lexicon):

    966ff3467af74c6782b4601bb48d5ebf.png

    Параметр [[++cultureKey]] является системной настройкой, определяемой контекстом. Таким образом, можно, добавляя новые ключи в словари, создавать таблицы переводов для разных языков.
    Ответ написан
  • Как в phpstorm или Sublime Text найти неиспользуемые рисунки?

    Realetive
    @Realetive
    MODX Ambassador России, самозванный БЭМ-евангелист
    Т. е., у вас есть директория с изображениями, и вы хотите понять, какие из них не встречаются в документе? Можно пройтись баш-скриптом по директории, собрать все файлы по расширениям и потом с помощью grep рекурсивно вычислить неиспользуемые. Можно воспользоваться готовой библиотекой, например gulp-unused-images
    Ответ написан
    Комментировать