Встречайте VSCode IntelliSense for MODX
Представляю вашему вниманию расширение для VSCode, которое обеспечивает широкий спектр инструментов для работы с MODX и Fenom. Этот плагин значительно упрощает процесс разработки ваших проектов, делая его более эффективным и удобным.
Установить бесплатно.

Возможности расширения можно поделить на 3 категории:
Ниже приведен список возможностей связанных с родным парсером MODX.
Да, я сначала реализовал подсветку синтаксиса MODX в нашей новой документации, когда её нет даже в официальной. Теперь, я сделал тоже самое в самом популярном IDE VSCode, пока MODX LLC чем-то занят.



Автокомплит учитывает наличие у модификатора аргументов или входных параметров.

ВАЖНО! Расширение не требует подключения локального сервера с запущенным MODX и мало того, оно не умеет. Поэтому автокомплит сниппетов и их параметров реализован через предустановленный список:
Расширение учитывает уже введенные параметры и исключает их из автокомплита.
Кстати, а вы знаете почему в этом списке есть FetchIt? Да потому, что это единственная замена AjaxForm, который я напоминаю, больше не поддерживается.


Далее будут возможности связанные с шаблонизатором Fenom.
В своё время и для меня было удивлением отсутствие поддержки синтаксиса шаблонизатора Fenom в VSCode и я также как и многие пользовался расширением Smarty, т.к. они слегка похожи. Но теперь всё будет по другому.

Прошу обратить внимание, это не набор простых сниппетов VSCode (Да, в VSCode есть сущность называемая сниппетом и он не имеет ничего общего со сниппетами MODX), а полноценный автокомплит тегов. Который учитывает многое, относительно позиции курсора.



Расширение умеет подсказывать и вызовы через модификатор {'Название сниппета' | snippet} и через метод {$_modx->runSnippet('Название сниппета')}


Расширение умеет подсказывать пути @FILE биндингов и директив file: в fenom, а также реализовано быстрое открытие файла по нажатии Ctrl + Click. Для работы данного функционала вам необходимо установить путь до папки с шаблонами от корня рабочего пространства или открытой папки в качестве значения настройки vscode-modx.elementsPath (по аналогии с настройкой pdoTools), по умолчанию: /core/elements/.

Спасибо всем за внимание и мира над головой.
Страница расширения на Marketplace
Репозиторий на GitHub
☕ Угостить чашкой кофе
Установить бесплатно.

Возможности
Возможности расширения можно поделить на 3 категории:
- MODX парсер
- Шаблонизатор Fenom
- Подсказки с путями
MODX парсер
Ниже приведен список возможностей связанных с родным парсером MODX.
Подсветка синтаксиса MODX
Да, я сначала реализовал подсветку синтаксиса MODX в нашей новой документации, когда её нет даже в официальной. Теперь, я сделал тоже самое в самом популярном IDE VSCode, пока MODX LLC чем-то занят.

MODX: Автокомплит полей ресурса

MODX: Автокомплит системных настроек

MODX: Автокомплит phx фильтров (модификаторов)
Автокомплит учитывает наличие у модификатора аргументов или входных параметров.

MODX: Автокомплит сниппетов и их параметров
ВАЖНО! Расширение не требует подключения локального сервера с запущенным MODX и мало того, оно не умеет. Поэтому автокомплит сниппетов и их параметров реализован через предустановленный список:
Расширение учитывает уже введенные параметры и исключает их из автокомплита.
Кстати, а вы знаете почему в этом списке есть FetchIt? Да потому, что это единственная замена AjaxForm, который я напоминаю, больше не поддерживается.


Fenom
Далее будут возможности связанные с шаблонизатором Fenom.
Подсветка синтаксиса Fenom
В своё время и для меня было удивлением отсутствие поддержки синтаксиса шаблонизатора Fenom в VSCode и я также как и многие пользовался расширением Smarty, т.к. они слегка похожи. Но теперь всё будет по другому.

Fenom: Автокомплит тэгов
Прошу обратить внимание, это не набор простых сниппетов VSCode (Да, в VSCode есть сущность называемая сниппетом и он не имеет ничего общего со сниппетами MODX), а полноценный автокомплит тегов. Который учитывает многое, относительно позиции курсора.

Fenom: Автокомплит модификаторов

Fenom: Автокомплит переменных
- Системная переменная Fenom
- Класс microMODX
- Локальные переменные

Fenom: Автокомплит сниппетов и их параметров
Расширение умеет подсказывать и вызовы через модификатор {'Название сниппета' | snippet} и через метод {$_modx->runSnippet('Название сниппета')}


Подсказки путей
Расширение умеет подсказывать пути @FILE биндингов и директив file: в fenom, а также реализовано быстрое открытие файла по нажатии Ctrl + Click. Для работы данного функционала вам необходимо установить путь до папки с шаблонами от корня рабочего пространства или открытой папки в качестве значения настройки vscode-modx.elementsPath (по аналогии с настройкой pdoTools), по умолчанию: /core/elements/.

Спасибо всем за внимание и мира над головой.
Страница расширения на Marketplace
Репозиторий на GitHub
☕ Угостить чашкой кофе
Комментарии: 39
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
Друзья, вот именно на такие заметные проекты, ускоряющие вашу собственную работу и идут донаты.
Мы от коллектива поощряем нашего друга на сумму 20 000 рублей. Но хотелось бы выделить больше.
Потому в очередной раз призываю вас всех поддержать копеечкой сообщество или лично Баху для дальнейшего развития.
Все реквизиты сообщества можно посмотреть здесь
Спасибо за проделанную работу! Очень нужное дополнение. Донат отправил.
Прописал вот так:
Работает либо одно, либо другое.
Вообще Developer experience (DX) в MODX и раньше был очень неплохим. Кто касается других систем, очень меня сейчас поймут. Один только Ace, который поддерживает @Иван Бочкарев чего стоит. Если править что-то быстро из админки, и связка modDevTools + Ace = просто класс!
А если и если основную разработку чаще ведут в файлах, под git-ом, и тут уже связка StaticElementsLive и новый VSCode IntelliSense for MODX будет отличным решением!
А для тех, кто собирает пакеты (modx packages), и особенно если их часто обновляет, поддерживая более одного modx-пакета постоянно, также может пригодиться git-модуль с GUI: modx-build-environment-gui
Вообще, с выходом этого плагина для весь DX при работе с файлами в MODX переходит на другой уровень, на голову выше! Больше cпасибо @Баха Волков !
Необходимый минимум функций вот такой:
• Автозагрузки на сервер (SFTP) по CTRL+S (желательно без хранения учетных данных от удаленного сервера в JSON-файле рядом с исходниками)
• Перехода к объявлению JS/PHP-функций по CTRL+click
• Сборки CSS из LESS/SCSS исходников, но без бандлеров (как file watchers в phpstorm) и мудреных JSON-конфигов.
Просто года два назад такой простой набор не получилось собрать для VSCode и мне пришлось его опустить. Но я вижу, что всё меняется, и с тех пор VSC стал настолько лучше, что я рискнул заменить им (и пока не пожалел) notepad++ для открытия одиночных файлов (которые вне проектов), которым пользовался много лет (правда зарешал дизайн, а не функционал, но всё таки). Но как проектным редактором, мне осадочек от предыдущего подхода пока не наёт пользоваться.
Посоветуйте джентельменский набор модыксера (или модэксера?) для VSC плиз!
Также насчёт настройки проекта, если над сайтом работает команда разработчиков, то хорошим подходом будет чтобы настройки среды были у всех одинаковые. Для этого в корне проекта, куда подключаемся(либо открываем папку через vscode) нужно добавить папку .vscode в которую положить несколько json файлов:
settings.json
extensions.json
Файл settings.json задаёт настройки среды, сюда можно указывает любые параметры vscode, д данном примере указываем использование fenom для tpl файлов.
Файл extensions.json нужен для указания рекомендуемых расширений, которые нужно поставить для текущего проекта. В данном примере указываем, что нужно установить расширение editorconfig и расширение для modx.
Также пробегусь кратко по нескольким расширениям которые я часто использую, но редко встречающихся в таких подборках:
Error Lens — расширение для более информативной подсветки предупреждений и ошибок в коде.
File Utils — добавляет в контекстное меню дополнительные возможности для работы с файлами.
Path Intellisense — подсказка путей для файлов.
Thunder Client — postman на минималках.
Turbo Console Log — быстрое добавление console.log в коде.
PHP Tools — отличный пакет при работе с php. Подсказывает методы, классы, ошибки в коде и т.д.
Ну чтобы редактировать файлы, дополнять серверный софт что-то не хочется. Для любых других редакторов (да и того же VSC если не в проектном режиме использовать а просто файл удаленный открывать через WinSCP) хватает поддержки SFTP (Через SSH который)… Вроде на странице по ссылке Remote-SSH требование установленной nodejs не нашел, так что это обнадеживает!
Конечно, для человека, который использует PhpStorm без плагинов и расширений, не иначе как джунглями представляется VSC…
В PhpStorm всё просто работает: подсвечивается, переходится по клику и автодополняется, бандлится и минифицируется и т.п., без необходимости даже открывать консоль, и уж тем более перебирать (нет, не изучать) бесконечные подборки плагинов в интернетах…
Но крутого расширения для MODX из этого поста, для PhpStorm пока нет, так что хватаем мачете и прыгаем в джунгли VSC, получивший второй шанс! :)
я пользуюсь как vscode, так и phpstorm, мне оба этих инструмента нравятся)
Я к PhpStorm пришел после Dreamviewer и NetBeans. Редакторы по типу Sublime, Notepad++ или Atom (из которого вырос VSC) всегда казались блокнотами с доп. функционалом, на фоне этих мощных IDE.
То, как вырос VSC конечно впечатляет (и как он обогнал популярнейший когда-то Sublime), но стоит ли идти на него из «другой лиги» IDE, вопрос открытый конечно…
Может есть какой-то логичный нормальный способ?
Если не сложно дайте статью или хотя бы немного объясните.
Спасибо
Шпаргалка
Курс Феном
Я проводил тесты, и да, из-за особенностей реализации через галочку «Статичный файл», на 10%-15% медленнее отрабатывают все шаблоны-чанки. В процентах кажется много, а в абсолютных числах разница типа в 0.1 сек на медленных сайтах, и ещё менее заметно – на быстрых.
А вообще, человечество, в лице @Prihod изобрело StaticElementsLive, рекомендую обратить внимание!
И ещё, в свежих версиях MODX (ну уже года полтора как, может больше) появились настройки автоматического создания статичных элементов.
Если было непонятно, то повторю что я имею ввиду:
Очень неудобно при создании допустим 100 чанков создавать их из админки, ставить галочку, указывать путь и тд.
А как раз указанное вами StaticElementsLive похоже решит эту проблему.
Еще добавил в README секцию Troubleshooting с решениями некоторых ситуаций:
— Как включить подсказки Emmet
— Как включить подсказки TailwindCSS
А поддержка smarty планируется?
То есть файл можно только локальный редактировать? И потом через git синхронизировать?
Удаленно нельзя?