Делюсь опытом - Yii2 + Processwire
Добавлено: 2020.01.09, 15:18
Просто зашёл поделиться моей любимой связкой для относительно простых сайтов: Yii2 + ProcessWire.
Так сказать, минутка рекламы.
Есть такая относительно малоизвестная CMS ProcessWire.
К сожалению она никогда не взлетит, по крайней мере по двум причинам.
1. Это даже не CMS, а скорее то что раньше называлось CMF (т.е. для неё, например, невозможны темы оформления, как в вордпресе).
2. Внутренности у неё страшноватые (ну или устаревшие подходы там используются, или тяжёлое наследие первых версий, или просто надо сделать скидку на то что автор изначально фронтендер).
Но, есть и плюсы.
1. Главный плюс - просто ВЕЛИКОЛЕПНАЯ универсальная админка. Вот просто элементарно УДОБНО не требует ни строчки кода.
2. Возможность использовать только как CMF, без клиентской части (только так и использую). Фактически, использую как древовидную базу данных, со своим языком запросов и отличной настраиваемой админкой, с готовыми сущностями по типу ActiveRecord.
3. Простой язык запросов к базе (похож на JQuery). Всё описание есть на одной страничке https://processwire.com/docs/selectors/
Сложности только с установкой каждый раз, т.к. основная программная часть у меня на Yii2, а ProcessWire категорически не любит ставиться в качестве пакета в папку vendor. Не предполагалось видимо его так использовать.
Поэтому, если кто захочет поэкспериментировать, то опишу как я делаю.
1. Композером устанавливаю yii2
2. composer require processwire/processwire
С этого момента начинаются мучения...
3. В доступной из веба папке (у меня public_html) делаю символическую ссылку на папку processwire (которая в вендоре).
4. Перехожу по адресу site.test/processwire и устанавливаю как обычную CMS
5. Папку processwire защищаем через htaccess, чтобы никто туда не лез.
6. (можно пропустить, но картинки не будут загружаться) Правлю РУЧКАМИ processwire/site/config.php (фактически, о ужас, в vendor/processwire), указываю папки для временных и постоянных файлов, папка для кэша т.д.
Для того чтобы работать с API ProcessWire, теперь достаточно сделать require('@vendor/processwire/processwire/index.php').
После этого станут доступны глобальные переменные, описанные здесь: https://cheatsheet.processwire.com/ (фактически, достаточно одной переменной - $pages).
На практике, у меня что-то типа адптера на 20 строчек, чтобы не писать require каждый раз и не трогать глобальные переменные.
В общем, рекомендую попробовать в качестве развлечения, при наличии свободной минутки.
Пару-тройку дней надо чтобы вникнуть, прочувствовать что чисто в качестве CMS она малопригодна, а вот в качестве хранилища данных - очень даже хорошо.
Для начала, чтобы посмотреть, без связки с Yii.
P.S. Далёкая, почти несбыточная мечта - сделать нечто подобное Processwire в виде модуля для Yii
Так сказать, минутка рекламы.
Есть такая относительно малоизвестная CMS ProcessWire.
К сожалению она никогда не взлетит, по крайней мере по двум причинам.
1. Это даже не CMS, а скорее то что раньше называлось CMF (т.е. для неё, например, невозможны темы оформления, как в вордпресе).
2. Внутренности у неё страшноватые (ну или устаревшие подходы там используются, или тяжёлое наследие первых версий, или просто надо сделать скидку на то что автор изначально фронтендер).
Но, есть и плюсы.
1. Главный плюс - просто ВЕЛИКОЛЕПНАЯ универсальная админка. Вот просто элементарно УДОБНО не требует ни строчки кода.
2. Возможность использовать только как CMF, без клиентской части (только так и использую). Фактически, использую как древовидную базу данных, со своим языком запросов и отличной настраиваемой админкой, с готовыми сущностями по типу ActiveRecord.
3. Простой язык запросов к базе (похож на JQuery). Всё описание есть на одной страничке https://processwire.com/docs/selectors/
Сложности только с установкой каждый раз, т.к. основная программная часть у меня на Yii2, а ProcessWire категорически не любит ставиться в качестве пакета в папку vendor. Не предполагалось видимо его так использовать.
Поэтому, если кто захочет поэкспериментировать, то опишу как я делаю.
1. Композером устанавливаю yii2
2. composer require processwire/processwire
С этого момента начинаются мучения...
3. В доступной из веба папке (у меня public_html) делаю символическую ссылку на папку processwire (которая в вендоре).
4. Перехожу по адресу site.test/processwire и устанавливаю как обычную CMS
5. Папку processwire защищаем через htaccess, чтобы никто туда не лез.
6. (можно пропустить, но картинки не будут загружаться) Правлю РУЧКАМИ processwire/site/config.php (фактически, о ужас, в vendor/processwire), указываю папки для временных и постоянных файлов, папка для кэша т.д.
Для того чтобы работать с API ProcessWire, теперь достаточно сделать require('@vendor/processwire/processwire/index.php').
После этого станут доступны глобальные переменные, описанные здесь: https://cheatsheet.processwire.com/ (фактически, достаточно одной переменной - $pages).
На практике, у меня что-то типа адптера на 20 строчек, чтобы не писать require каждый раз и не трогать глобальные переменные.
В общем, рекомендую попробовать в качестве развлечения, при наличии свободной минутки.
Пару-тройку дней надо чтобы вникнуть, прочувствовать что чисто в качестве CMS она малопригодна, а вот в качестве хранилища данных - очень даже хорошо.
Для начала, чтобы посмотреть, без связки с Yii.
P.S. Далёкая, почти несбыточная мечта - сделать нечто подобное Processwire в виде модуля для Yii