elementSync - Еще один способ разработки MODX-приложений в IDE
Привет.
Этот элемент можно считать вторым кусочком компонента который я описал на статью одну пониже, а можно рассчитывать как отдельную тузлу. Предыстория такова: Я не использую файловые сущности pdoTools, идеологически считаю что транспортные пакеты это отличный способ для разработки компонентов, но не сайтов. Так же Gitify меня не вдохновил. Думаю имею на это право :)
Более того — частенько приходится не создавать что-то новое на MODX, а редактировать существующее. И все это нужно а) каким-то образом версионировать б) разрабатывать используя удобные инструменты в IDE. Много времени назад я использовал для этого gitmodx и он меня в целом устраивал. Но есть нюансы, которые мне категорически не нравились.
Первое — Gitmodx хакает системные файлы MODX и подменяет себя в качестве парсера. Это плохо, но в целом ничего страшного в этом нет. Но все таки бесит. Второе — Gitmodx не мапит объекты в базе, а следовательно там где нужно выбрать элемент который MODX ищет в базе — невозможно по определению. Например, шаблон письма для клиентов minishop2 приходилось создавать в админке так или иначе. Третье — исходя из второго пункта, получить массив всех чанков в системе так же трудно, т.к половина из них это файловые сущности, а половина — в базе. Грустно, хотя за всю практику мне не приходилось этого делать.
Что я предлагаю?
Я накидал небольшой файлик, который делает двустороннюю синхнронизацию чанков, сниппетов, шаблонов и плагинов в системе.
Исходный код можно почитать по ссылке: тыц
Код я буду править и добавлять что-то новое по мере своих потребностей, а так же буду его немного менять так как не все реализации что я описал мне нравятся.
Итак, код который вы видите выше я расположил в папку core. Назвал его я sync.php. Расположил там, потому что хочу и потому что вы при установке, обычно, закрываете эту папку от внешнего доступа, что позволяет добавить некоторый элемент безопасности.
В корне сайта я создал вот такую вот структуру папок:
В дальнейшем вы можете версионировать только папку elements и все входящие в нее папки.
Дисклеймер: Перед тем как мы продолжим, я хочу описать сценарии, при которых я крайне нерекомендую использовать это решение:
Небольшое видео о работе: тут
(почему-то не удалось встроить)
Есть вопросы? Задавайте, отвечу.
Так же я всегда рад донатам на пиво и прочие принадлежности.
Спасибо!
Этот элемент можно считать вторым кусочком компонента который я описал на статью одну пониже, а можно рассчитывать как отдельную тузлу. Предыстория такова: Я не использую файловые сущности pdoTools, идеологически считаю что транспортные пакеты это отличный способ для разработки компонентов, но не сайтов. Так же Gitify меня не вдохновил. Думаю имею на это право :)
Более того — частенько приходится не создавать что-то новое на MODX, а редактировать существующее. И все это нужно а) каким-то образом версионировать б) разрабатывать используя удобные инструменты в IDE. Много времени назад я использовал для этого gitmodx и он меня в целом устраивал. Но есть нюансы, которые мне категорически не нравились.
Что я предлагаю?
Я накидал небольшой файлик, который делает двустороннюю синхнронизацию чанков, сниппетов, шаблонов и плагинов в системе.
Исходный код можно почитать по ссылке: тыц
Код я буду править и добавлять что-то новое по мере своих потребностей, а так же буду его немного менять так как не все реализации что я описал мне нравятся.
Итак, код который вы видите выше я расположил в папку core. Назвал его я sync.php. Расположил там, потому что хочу и потому что вы при установке, обычно, закрываете эту папку от внешнего доступа, что позволяет добавить некоторый элемент безопасности.
В корне сайта я создал вот такую вот структуру папок:
В дальнейшем вы можете версионировать только папку elements и все входящие в нее папки.
Дисклеймер: Перед тем как мы продолжим, я хочу описать сценарии, при которых я крайне нерекомендую использовать это решение:
- У вас тестовая версия сайта расположена на виртуальном хостинге. Не надо. Скорее всего вам не хватит памяти для выполнения скрипта. Поднимите локальную версию на вашем компьютере. Могу посоветовать использовать Docker. Готовый и простой конфиг с TODO я уже сделал для вас: тыц
- У вас нет доступа к SSH и вы собиратесь выполнять код в браузере. Вообще не дай бог. Лимитов веб-сервера вам не хватит еще абсолютно точнее, нежели памяти.
данная команда перенесет все текущие элементы сайта в статические и аккуратно положит вам в папочки выше.php sync.php import
данная команда наоборот запушит все изменения на сервер в виде статических файлов. Вы можете изменять и делать с ними все что захотите. Важно — прочитайте документацию по статическим файлам, чтобы у вас не возникало вопросов с кешированием.php sync.php export
это сырой запрос в базу, который отлинкует статический файл, и у вас останется версия та, что замапилась в базеphp sync.php deploy
Небольшое видео о работе: тут
(почему-то не удалось встроить)
Есть вопросы? Задавайте, отвечу.
Так же я всегда рад донатам на пиво и прочие принадлежности.
Спасибо!
Поблагодарить автора
Отправить деньги
Комментарии: 50
Круто, но нужно будет вникнуть по подробнее, а когда на это находить время не ясно.
Вопрос! Я столкнулся с этим когда пытался использовать gitmodx Зернова. У него тоже есть скрипт для перегонки чанков (и не только с базы в файлы) но был такой глюк (ну или скажем недочет). Если чанки в базе названы корректно (одним словом и латинскими буквами) то все ок. Но мне иногда приходят на обслуживание созданные кем-то сайты, где чанки названы к примеру так — «слайдер на главной странице» — тоесть киррилицей и в несколько слов и modx это позволяет. Но при переводе это в файлы — вместо названия «кракозябры» и плюс скрипт в gitmodx удалял после этой операции данные из базы. И ты остаешься с файлом, который уже не знаешь как назывался и не можешь его использовать.
В общем просто проверьте на такую возможность.
Вопрос! Я столкнулся с этим когда пытался использовать gitmodx Зернова. У него тоже есть скрипт для перегонки чанков (и не только с базы в файлы) но был такой глюк (ну или скажем недочет). Если чанки в базе названы корректно (одним словом и латинскими буквами) то все ок. Но мне иногда приходят на обслуживание созданные кем-то сайты, где чанки названы к примеру так — «слайдер на главной странице» — тоесть киррилицей и в несколько слов и modx это позволяет. Но при переводе это в файлы — вместо названия «кракозябры» и плюс скрипт в gitmodx удалял после этой операции данные из базы. И ты остаешься с файлом, который уже не знаешь как назывался и не можешь его использовать.
В общем просто проверьте на такую возможность.
Спасибо. Не тестил, отпишусь
Проверил. Добавил транслитерацию для всех элементов, уже на гите
UPD: Убрал. Возникла проблема, что почему не могу сделать выборку по элементу, если в условии ставлю static_file
Поверил твой кейс — работает и на кириллице )
Поверил твой кейс — работает и на кириллице )
И не по теме вопрос, а вернее не вопрос даже, а удивление. Я вижу вы используете докер. И что правда удобно и нужно? Я вот второй день чисто ради новых знаний (хочется хоть чуток быть в тренде, хотя я совершенно не испытываю необходимости в этом инструменте) изучаю документацию и видео на эту тему и признаюсь — не понимаю ни как это работает ни по большому счету зачем оно нужно. (нет красивыми фразами навешать на уши я смогу кому угодно что это очень нужно, что помогает деплою да и вообще песня а не инструмент, но по факту..) Смотрел видео где вполне адекватный человек признается в любви докеру, хорошо и доступно поясняет и приводит примеры. И первый пример — это файл на python который выводит hello world. Один текстовый файл. Делает из него образ, подключает образ python3 и запускает контейнер на основании этого образа. И… образ весит 950 мегабайт. Один текстовый файлик с одной строкой кода превратился в 950 мегабайт какой-то информации. Может посоветуете какую-то хорошую информацию? А то вопросов в миллион раз больше чем ответов.
Выбирать конечно нужно от поставленной задачи. Где-то без докера не обойтись, а так есть Alpine 5mb, вместо ubuntu, его зачастую и используют в докерах, да даже если ubuntu, — то все ровно в докер для спокойной жизни.
Докер не нужно использовать, там где он не нужен. Для дев окружения он подоходит. Для деплоя сложных приложений — тоже.
Сайтики на MODX деплоить в докере не стоит)
Сайтики на MODX деплоить в докере не стоит)
В modx как уже сказали докер ни к чему, вот ситуации когда докер — необходимость, а не привелегия:
1) Вам присылают проект, а у него конфигурация писалась на nginx, а у вас на машине развернут апач или наоборот, без докера вам придется переписывать конфиги под свой сервер, а конфиги бывают ой какие не простые
2) Вам присылают проект, а там скажем очереди лежат в Redis, у вас на машине нет редиса, без докера вам пришлось бы его устанавливать, настраивать и т.д. и стоит оно того скажем ради одного проекта где работы на пол часа?
3) У вас на машине php7.1, а в проекте который вам прислали в одном из пакетов минимальная версия php — 7.3, опять же вам нужно доустанавливать 7.3 на свою машину со всеми модулями только чтобы развернуть этот проект
В основном докер решает такие проблемы в мире PHP, все что он делает по сути — это запускает на вашей машине — виртуальную и конфигурирует ее в соответствии с проектом, это настолько облегчает как разработку, так и деплой, что люди сознательно идут на уменьшение производительности храня продакшен в контейнерах
1) Вам присылают проект, а у него конфигурация писалась на nginx, а у вас на машине развернут апач или наоборот, без докера вам придется переписывать конфиги под свой сервер, а конфиги бывают ой какие не простые
2) Вам присылают проект, а там скажем очереди лежат в Redis, у вас на машине нет редиса, без докера вам пришлось бы его устанавливать, настраивать и т.д. и стоит оно того скажем ради одного проекта где работы на пол часа?
3) У вас на машине php7.1, а в проекте который вам прислали в одном из пакетов минимальная версия php — 7.3, опять же вам нужно доустанавливать 7.3 на свою машину со всеми модулями только чтобы развернуть этот проект
В основном докер решает такие проблемы в мире PHP, все что он делает по сути — это запускает на вашей машине — виртуальную и конфигурирует ее в соответствии с проектом, это настолько облегчает как разработку, так и деплой, что люди сознательно идут на уменьшение производительности храня продакшен в контейнерах
Или вот из недавнего и реальной практики:
В проекте логи хранятся в MongoDB,
Новая часть проекта в PostgreSQL,
А старая часть проекта в Mysql
При этом выпилить что то одно хотя бы даже временно естественно не вариант, т.к. все ломается. Без докера мне пришлось бы настраивать у себя MongoDB и PostgreSQL, разбираться как это сделать и тратить возможно ни один час просто чтобы развернуть проект, хотя работа, которую я должен сделать вообще никак не связана ни с монгой, ни с постгрессом
В проекте логи хранятся в MongoDB,
Новая часть проекта в PostgreSQL,
А старая часть проекта в Mysql
При этом выпилить что то одно хотя бы даже временно естественно не вариант, т.к. все ломается. Без докера мне пришлось бы настраивать у себя MongoDB и PostgreSQL, разбираться как это сделать и тратить возможно ни один час просто чтобы развернуть проект, хотя работа, которую я должен сделать вообще никак не связана ни с монгой, ни с постгрессом
Спасибо. Чисто на интуитивном уровне я именно так и понимаю.
Нужно наверное заняться практикой и много вопросов отпадет.
Что я не понимаю
— все таки это не виртуальная машина, а виртуальный контейнер и внутри его нет операционной системы. Контейнер использует ядро гостевой операционки. Но при этом внутри контейнера есть своя файловая система. По крайней мере я так сужу из ответов, которые получил задавая комменты на ютубе. То как знать какая именно внутри файловая система? Какие там есть директории и так далее. И плюс зачем тогда существует докер образ Ubunty? Тоесть при запуске этого образа развернется полноценная операционная система? Со своей файловой системой, своими демонами, процессами и так далее? У меня есть ubuntu server установлен на физическом сервере. Установлен docker и запущен контейнер ubuntu. У меня есть возможность подключится к виртуальной ubuntu? по ssh или как либо по другому?
— насколько я понимаю, при остановке запущенного контейнера все данные в нем теряются. Ведь контейнер создается из образа и если произошел сбой или же запланированная остановка контейнера, то новый контейнер запуститься из того же образа и будет девственно чист. И как тогда работают контейнеры с базами данных? Да я вижу что к контейнеру можно примонтировать внешнюю директорию и хранить данные на ней, но получится что вам каждый подключаемый в свой проект образ (вернее создаваемый на нем контейнер) придется очень долго и нудно конфигурировать, подгоняя под реалии операционной системы на которой он запущен (к примеру даже у линуксов не у всех структура и название директорий операционной системы одинакова). Тоесть есть три ветки продуктов линукса- основанные на redhat. arch и debian. И они во многом отличаются. Если на одном сервере установлена centOS (родитель redhat) а на другом Ubuntu (родитель Debian) то их файловые системы хоть и схожи но не идентичны. Но это ладно, но ведь сервер может работать и на windows, а docker тоже может работать на windows. И как тогда запустить контейнер с приложением, если у него в докер файле например пути прописаны /usr/bin и содержаться команды для оболочки bash
— от имени какого пользователя это все работает? Как и кто это контролирует? К примеру я недавно испытывал технические проблемы на одном сервере, что возникала ошибка при работе с сессиями в php. Оказалось что в конфигурации php указывается директория где будут хранится файлы сессий и пользователь от имени которого запускался интерпретатор php не имел прав на запись в эту директорию. Или к примеру веб сервер apache запускается от имени пользователя www-data и только он может полноценно работать. А кто пользователь внутри контейнера? Тот кто его запустил? Но если судить по документации на офф сайте то докер работает из под root а значит мы все процессы запустим от root?
Нужно наверное заняться практикой и много вопросов отпадет.
Что я не понимаю
— все таки это не виртуальная машина, а виртуальный контейнер и внутри его нет операционной системы. Контейнер использует ядро гостевой операционки. Но при этом внутри контейнера есть своя файловая система. По крайней мере я так сужу из ответов, которые получил задавая комменты на ютубе. То как знать какая именно внутри файловая система? Какие там есть директории и так далее. И плюс зачем тогда существует докер образ Ubunty? Тоесть при запуске этого образа развернется полноценная операционная система? Со своей файловой системой, своими демонами, процессами и так далее? У меня есть ubuntu server установлен на физическом сервере. Установлен docker и запущен контейнер ubuntu. У меня есть возможность подключится к виртуальной ubuntu? по ssh или как либо по другому?
— насколько я понимаю, при остановке запущенного контейнера все данные в нем теряются. Ведь контейнер создается из образа и если произошел сбой или же запланированная остановка контейнера, то новый контейнер запуститься из того же образа и будет девственно чист. И как тогда работают контейнеры с базами данных? Да я вижу что к контейнеру можно примонтировать внешнюю директорию и хранить данные на ней, но получится что вам каждый подключаемый в свой проект образ (вернее создаваемый на нем контейнер) придется очень долго и нудно конфигурировать, подгоняя под реалии операционной системы на которой он запущен (к примеру даже у линуксов не у всех структура и название директорий операционной системы одинакова). Тоесть есть три ветки продуктов линукса- основанные на redhat. arch и debian. И они во многом отличаются. Если на одном сервере установлена centOS (родитель redhat) а на другом Ubuntu (родитель Debian) то их файловые системы хоть и схожи но не идентичны. Но это ладно, но ведь сервер может работать и на windows, а docker тоже может работать на windows. И как тогда запустить контейнер с приложением, если у него в докер файле например пути прописаны /usr/bin и содержаться команды для оболочки bash
— от имени какого пользователя это все работает? Как и кто это контролирует? К примеру я недавно испытывал технические проблемы на одном сервере, что возникала ошибка при работе с сессиями в php. Оказалось что в конфигурации php указывается директория где будут хранится файлы сессий и пользователь от имени которого запускался интерпретатор php не имел прав на запись в эту директорию. Или к примеру веб сервер apache запускается от имени пользователя www-data и только он может полноценно работать. А кто пользователь внутри контейнера? Тот кто его запустил? Но если судить по документации на офф сайте то докер работает из под root а значит мы все процессы запустим от root?
все таки это не виртуальная машина, а виртуальный контейнер и внутри его нет операционнойЭто так, но гораздо легче для понимания воспринимать докер как виртуальную машину, он монтирует внутреннюю файловую систему и интернет интерфейс во внешнюю и/или наоборот, что позволяет заниматься разработкой извне
То как знать какая именно внутри файловая система? Какие там есть директории и так далее.А тут уже как настроите и какую ОС выберете
Тоесть при запуске этого образа развернется полноценная операционная система? Со своей файловой системой, своими демонами, процессами и так далее?Именно, при том, частой практикой является своя ОС под каждый модуль, т.е. например nginx + php-fpm в одном контейнере, mysql в другом, redis в третьем
У меня есть возможность подключится к виртуальной ubuntuДа, также как и выполнить внутри любую команду извне
насколько я понимаю, при остановке запущенного контейнера все данные в нем теряютсяДа, если они не смонтированы извне
У меня есть возможность подключится к виртуальной ubuntu? по ssh или как либо по другому?да, через интерфейс докера docker exec
И как тогда работают контейнеры с базами данныхУ любой базы данных есть физические файлы) Вот их и монтируют
придется очень долго и нудно конфигурироватьКак правило в компаниях работают всегда на одном и том же стеке и есть уже готовые образы лежащие где то на сервере обновляемые удаленно девопсами под каждый стек, они конфигурируются один раз и дальше просто поддерживаются, а проекты извне на доработку обычно приходят уже с конфигурацией и это не ваша забота, а забота заказчика если у него в контейнере что то не работает)
то их файловые системы хоть и схожи но не идентичныДа, но в целом это забота девопсов, ну или вас, если вы собрались делать свой собственный и не повторимый образ, в любом случае «наружу» торчат только файлы проекта, иногда конфигурации nginx/apache и файлы баз данных
например пути прописаны /usr/bin и содержаться команды для оболочки bashКонтейнер настраивают обычно при старте разработки проекта, если проект готовый, вам его нужно просто развернуть одной командой и не зависимо от вашей ОС, внутри все директории и оболочки будут те, что предусмотрел и продумал девопс, в целом докер для этого и нужен, чтобы приложение не зависело от окружения разработчика
от имени какого пользователя это все работает?Опять же, как настроит разработчик, но чаще всего от виртуального рута, вам нужно прокинуть собственного пользователя в виртуальный рут, для этого существует команда docker login, это делается один раз
пользователь от имени которого запускался интерпретатор php не имел прав на запись в эту директорию.Т.к. в контейнере пользователь обычно один, он виртуальный и от его имени все работает, такая проблема в принципе исключена
Фух :) Вроде бы на все ответил, но я могу в чем то ошибаться, у нас в компании есть devops которые отвечают за такие вещи, нам разработчикам только и остается что в новые проекты уже подтягивать один из готовых контейнеров, я не гуру докера но вроде бы на ваши вопросы ответил правильно)
По сути если хорошо владеете линуксом, то и с созданием своего контейнера проблем возникнуть не должно, просто начните пробовать, тут теория в целом не нужна, а если вы ни разу не разворачивали даже локальное окружение на линуксе, то тут стоит начать с изучения линукса, а не докера. Но в целом у нас в компании есть люди, которые вообще в докере никак не понимают и никогда даже локальное окружение не разворачивали, однако это не мешает им быть хорошими программистами и эффективно его использовать, просто не лезут в конфиги, а используют готовое. И без личного девопса в интернете образов полно на любой вкус и цвет
Спасибо за столь подробное описание.
Добавить особо не чего, единственно что смущает — в большинство случаев я к примеру и не знаю где лежат файлы той же mysql базы данных. Даже если я сам админю сервер и поднимаю все нуля, то я делаю apt install mysql-server и все, я не выбираю куда сложить файлы. А выходит чтобы использовать в докере mysql то придется серьезно повышать уровень знаний, иначе на первый взгляд покажется что все работает, пока контейнер не упадет и все данные из него просто пропадут.
Добавить особо не чего, единственно что смущает — в большинство случаев я к примеру и не знаю где лежат файлы той же mysql базы данных. Даже если я сам админю сервер и поднимаю все нуля, то я делаю apt install mysql-server и все, я не выбираю куда сложить файлы. А выходит чтобы использовать в докере mysql то придется серьезно повышать уровень знаний, иначе на первый взгляд покажется что все работает, пока контейнер не упадет и все данные из него просто пропадут.
О боже, у вас в команде есть даже девопсы и прочие люди)) У нас есть я и уже около 40 проектов, часть из которых разработана мной, а 80 процентов — набранные со всего мира сайты на джумле, битриксе, опенкарте, слим и еще несколько разных cms.
Ну я не работаю уже с MODX в целом) По этому да, у нас есть и девопсы и аналитики и тестировщики и нет CMS, только фреймворки :)
В CMS докер — это абсолютно не нужный оверкилл, сайты на CMS как правило так часто не дорабатываются, они не зависят от внешних пакетов, а доработки в основном такого размера, что минусы докера никогда не окупятся сэкономленным временем от его использования
В CMS докер — это абсолютно не нужный оверкилл, сайты на CMS как правило так часто не дорабатываются, они не зависят от внешних пакетов, а доработки в основном такого размера, что минусы докера никогда не окупятся сэкономленным временем от его использования
Но dev окружение я все равно на нем собираю. Почему бы и нет, собственно )
Чёт я не понял: например у меня есть боевой проект, я хочу его элементы сделать версионированными, для этого я просто выполняю скрипт с командой импорт, что все элементы из базы распихивает по файлам и после этого работаю с этими файлами? И как-то обрабатывается случай, когда появляются новые элементы? Я просто не могу вкурить, что делает опция эскпорт и деплой.
Или процедура такая: я сначала делаю импорт, меняю как надо файлы, синкаю их с дев-сервером, например, а после этого делаю экспорт, который эти файлы фигачит обратно в базу? Просто не понятно, к чему там танцы с переводом на статику?
Или процедура такая: я сначала делаю импорт, меняю как надо файлы, синкаю их с дев-сервером, например, а после этого делаю экспорт, который эти файлы фигачит обратно в базу? Просто не понятно, к чему там танцы с переводом на статику?
Или процедура такая: я сначала делаю импорт, меняю как надо файлы, синкаю их с дев-сервером, например, а после этого делаю экспорт, который эти файлы фигачит обратно в базу?Ага
Просто не понятно, к чему там танцы с переводом на статику?Статические файлы можно редактировать из под IDE, т.к они физически находятся на диске.
А деплой тогда зачем нужен?
Статические файлы работают медленно.
Что делает функция Deploy — описано
Что делает функция Deploy — описано
Статические файлы работают медленно.а на сколько медленнее? их же еще можно и кэшировать. Тотже modx.pro используется статические файлы, я чтото не замечал, чтобы он работал медленно.
Не, статические файлы pdoTools — это одно. С ними, с большего, все ок.
А вот статические файлы MODX — это жуть.
При чем это жуть настолько, что тебе может даже не хватать памяти для рендера страницы)))
А вот статические файлы MODX — это жуть.
При чем это жуть настолько, что тебе может даже не хватать памяти для рендера страницы)))
Ну этото понятно))) я вообще за всё время ни разу не видел, чтобы на каком то проекте использовались статические файлы самого modx) а через тотже fenom со статикой работать одно удовольствие, если не считать статических сниппетов, они в fenom ужасно работают, постоянно кэшируются и выдают неверные данные. ?
если не считать статических сниппетов, они в fenom ужасно работают, постоянно кэшируются и выдают неверные данные.Можешь рассказать подробнее?
Павел можешь подробно описать, использую статические файлы MODX, что-то не встречал такое, может потому что у меня связка подгрузка файлов на pdoTools и MODX. Разница была небольшая когда если шаблон инклудить через pdoTools и если делать статику на MODX
чтобы не писать каждый раз
php sync.php importможно создать файл без расширения
syncв котором написать:
#!/usr/bin/php
<?php
...
тогда можно будет запускать скрипт уже через командуsync import
Да можно хоть в sourcerc кинуть при желании и называть команду magic ))
Павел, вопрос!?
А если в IDE создать доп папку в чанках и закинуть туда tpl-ки, они не будут синхрониться?
Иначе, работает только по твоей структуре без группировки?
У меня не пошла синхронизация из созданной папки. Когда перенес, все сработало.
А если в IDE создать доп папку в чанках и закинуть туда tpl-ки, они не будут синхрониться?
Иначе, работает только по твоей структуре без группировки?
У меня не пошла синхронизация из созданной папки. Когда перенес, все сработало.
Действительно баг. Выпущу фикс.
Пофиксил
Благодарю!
UPD. Скрипт зашел. А нельзя добавить ТВ через него?
Читал, про них отзывы. Но если бы была возможность хотя насоздавать их и рассортировать, а потом зайти в админку и настроить, уже легче жить сразу.
UPD. Скрипт зашел. А нельзя добавить ТВ через него?
Читал, про них отзывы. Но если бы была возможность хотя насоздавать их и рассортировать, а потом зайти в админку и настроить, уже легче жить сразу.
А есть какой-то практический смысл от статичных тивишек?
Я просто не совсем понимаю зачем.
Добавить, в принципе совсем не проблема.
Я просто не совсем понимаю зачем.
Добавить, в принципе совсем не проблема.
А мы разве не используем статичные файлы исключительно для синхронизации?
Я к тому, что они же ни на, что не влияют. Все равно все в БД.
Или я не совсем правильно понял основную мысль?!
ТВ-шки. Мне показалось это удобнее.
Хотя сейчас зашел в админку, посоздавал ТВ-шки и сам задумался.
С другой стороны, имея возмость скопипастить название TV удобнее в код вставлять. Не нужно заходить в браузер. Как вариант.
Я к тому, что они же ни на, что не влияют. Все равно все в БД.
Или я не совсем правильно понял основную мысль?!
ТВ-шки. Мне показалось это удобнее.
Хотя сейчас зашел в админку, посоздавал ТВ-шки и сам задумался.
С другой стороны, имея возмость скопипастить название TV удобнее в код вставлять. Не нужно заходить в браузер. Как вариант.
Кстати вопрос по теме не по теме для разработчиков на idea…
Медленно, но уверенно изучаю idea плагонизацию, в отдельных проектах юзаю феном, поэтому сейчас занимаюсь разработкой плагина в idea, который будет адекватно работать с reformat, синтаксисом, быстрым линком к шаблону (через ctrl) из extends, include и т.д. Вообщем полный фарш…
С феном то все понятно, его закончу, но вот мысли у меня сделать отдельно такой плагин и для modx, который бы работал бонусом со всеми выше перечисленными объектами (шаблоны, чанки) напрямую с бд. Как это сделать удобно — без понятия, но вот прочитав вашу идею с «tmp» файловым хранилищем, который синхронизируется с бд — у меня появилась мысль синхронизацию перетащить полностью на phpstorm (idea)… Т.е. по факту шторм будет напрямую работать с бд, минуя файлики modx… (Это пока мысль)
Собственно сам вопрос, на сколько это было бы актуально, и сможем ли мы сообществом сделать адекватную модель работы такого плагина?
Медленно, но уверенно изучаю idea плагонизацию, в отдельных проектах юзаю феном, поэтому сейчас занимаюсь разработкой плагина в idea, который будет адекватно работать с reformat, синтаксисом, быстрым линком к шаблону (через ctrl) из extends, include и т.д. Вообщем полный фарш…
С феном то все понятно, его закончу, но вот мысли у меня сделать отдельно такой плагин и для modx, который бы работал бонусом со всеми выше перечисленными объектами (шаблоны, чанки) напрямую с бд. Как это сделать удобно — без понятия, но вот прочитав вашу идею с «tmp» файловым хранилищем, который синхронизируется с бд — у меня появилась мысль синхронизацию перетащить полностью на phpstorm (idea)… Т.е. по факту шторм будет напрямую работать с бд, минуя файлики modx… (Это пока мысль)
Собственно сам вопрос, на сколько это было бы актуально, и сможем ли мы сообществом сделать адекватную модель работы такого плагина?
С феном то все понятно, его закончу, но вот мысли у меня сделать отдельно такой плагин и для modx, который бы работал бонусом со всеми выше перечисленными объектами (шаблоны, чанки) напрямую с бд.Нафига оно надо, если будет нормальная навигация по Fenom тегам?
Мне лично только её не хватает при работе из IDE, синтаксис MODX уже давно не использую.
P.S. Есть вот такой древний плагин для Fenom. Он очень сырой, но может чем-нибудь пригодиться.
Нафига оно надо, если будет нормальная навигация по Fenom тегам?
Тут больше не поддержка синтаксиса modx, а поддержка работы того же феном напрямую с бд. Та же навигация.Создал проект (в шторме), получил экспорт в виде тех же файлов, отредактировал что нужно, и в одно нажатие импорт ушел…
Каким образом шаблонизатор относится к БД?
формально, никаким. Один плагин, тупо для работы с феном, другой плагин, для синхронизации объектов (по аналогии с вашим скриптом). Но для навигации по шаблону modx они друг другу нужны, т.к. части самого шаблона могут быть раскиданы между бд и файлами. Простите, если не понятно объясняю ¯\_(ツ)_/¯
А, я видимо не так понял.
Тогда да.
Мне кажется прямой связи делать не нужно. Если бы я проектировал такое ПО, думаю я бы средствами idea формировал бы карту элементов на условном YAML и в дальнейшем бы двигался по файлу не затрагивая базу в принципе.
Тогда да.
Мне кажется прямой связи делать не нужно. Если бы я проектировал такое ПО, думаю я бы средствами idea формировал бы карту элементов на условном YAML и в дальнейшем бы двигался по файлу не затрагивая базу в принципе.
вот в том то и дело, что в исходном варианте {include 'tplname.tpl'} феном ищет шаблон tplname.tpl из директории, указанной в настройках самого феном. А в случае с modx версией Василия, он ищет в чанках (бд), если явно не указана ссылка на файл. И такие моменты встречаются довольно часто.(по разнице в навигации)
Были аналогичные мысли по феному. Но чтобы сделать вдумчиво, надо погружаться в Java. Я не нашел лишнего года.
А вот с базой ты погорячился. Напрямую работать можно только при условии, что сервер MySql доступен снаружи. Часто такое бывает?
А вообще тема нужная.
А вот с базой ты погорячился. Напрямую работать можно только при условии, что сервер MySql доступен снаружи. Часто такое бывает?
А вообще тема нужная.
Я не нашел лишнего года.
Для плагинов Idea этого, как оказалось, и не нужно. В привычном софте jetbrains, после шторма, любой ооп язык легко поддается чтению и навигации. Да, безусловно, есть нюансы в каждом языке, но я обычно опираюсь на готовый код самого JB. Например, для плагина феном я местами дублировал функционал плагина smarty, но разумеется, со своим сахаром. На хабре недавно статья вышла от баду, там ребята вообще пилят свой плагин под компанию. Но в целом, да… главное найти на это время.
сервер MySql доступен снаружи. Часто такое бывает?в 90% случаев, с которыми я сталкивался — да, внешний доступ к бд был.
90% случаев это совсем не секьюрно. Хотя бы через ssh тунель, но в открытую держать БД опасно
как держать коннект с бд — это уже (на самом то деле) отдельная тема. Шторм из коробки умеет работать с базами (и через тунель, и напрямую, и даже через валидацию сертификатом). Мне останется только изучить api работы этого плагина (плагина работы с бд) и использовать созданные коннекты именно в нем
У вас тестовая версия сайта расположена на виртуальном хостинге. Не надо. Скорее всего вам не хватит памяти для выполнения скриптаИдея: сделать обработку пакетной. Добавляешь параметр с размером порции, обрабатываемой за один раз, как только достигаешь этого значения, пишешь в сессию оффсет и перезапускаешь скрипт, он тут-же из сессии подхватывает оффсет и продолжает. И так пока данные не кончатся. Вроде у Ильи Уткина на сайте
Мысль клевая
Но не кажется что слишком много телодвижений, когда можно просто создать тестовую версию там, где у тебя хотя бы 128 мегабайт пхп лимита есть?)
Но не кажется что слишком много телодвижений, когда можно просто создать тестовую версию там, где у тебя хотя бы 128 мегабайт пхп лимита есть?)
Ну тестовую-то можно, а вот сами сайтики на проде бывают без такой роскоши. Часто заказчики не особо заморачиваются с хостингом и простенький шаред покупают.
Дык на прод ты положишь версию ту, которая прошла после команды deploy)
А там уже не нужно столько памяти
А там уже не нужно столько памяти
А если сайт уже есть и тебе надо сначала с него стянуть элементы? Для пустого проекта — да, это не так важно, но многие, как я, захотят это применить в уже существующем проекте.
Так смотри, ты создаешь копию сайта в локалке и делаешь с ним все что захочешь.
Планируется большое обновление к концу марта
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.