Делюсь опытом - Yii2 + Processwire
Делюсь опытом - Yii2 + Processwire
Просто зашёл поделиться моей любимой связкой для относительно простых сайтов: 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
Re: Делюсь опытом - Yii2 + Processwire
1. А что вам в той админке особо удобно делать?eresik писал(а): ↑2020.01.09, 15:18
Но, есть и плюсы.
1. Главный плюс - просто ВЕЛИКОЛЕПНАЯ универсальная админка. Вот просто элементарно УДОБНО не требует ни строчки кода.
2. Возможность использовать только как CMF, без клиентской части (только так и использую). Фактически, использую как древовидную базу данных, со своим языком запросов и отличной настраиваемой админкой, с готовыми сущностями по типу ActiveRecord.
3. Простой язык запросов к базе (похож на JQuery). Всё описание есть на одной страничке https://processwire.com/docs/selectors/
4. Далёкая, почти несбыточная мечта - сделать нечто подобное Processwire в виде модуля для Yii
Ну да, материалы сайта, нормально редактируются, и по категориям раскиданы, всякие контекстные ссылки повсюду.
Но множество пунктов админки далеко неочевидные, во всяком случае если с ней владелец сайта будет работать.
Они выглядят как для разработчика.
2. Да такое ж и себе несложно сделать - контент тип завести, поля для всякого дополнительного присоединить, в т.ч. позиция в дереве, если нужна иерархия.
3. Вообще непонятно зачем разработчику этот язык запросов
4. Думаете тут на форуме мало было тех кто о какой то цмс задумывался чтобы сделать?
И аналог опенкарта и т.д. и все ни к чему не привело.
Т.к. заданьице не из самых легко осуществимых, практика много проблем подкинет.
Хотя на базовую сборку какую то если нацелиться, то может и пойдет.
Вон у меня в подписи уже структура модуля готова для таких цмс, осталось только функционала докатать
Yii2 universal module sceleton - for basic and advanced templates
-
- Сообщения: 910
- Зарегистрирован: 2019.08.13, 01:49
Re: Делюсь опытом - Yii2 + Processwire
Я думаю, что у довольно многих разработчиков есть свои cms/интернет-магазины. Просто они не в открытом доступе.maleks писал(а): ↑2020.01.14, 16:51 Думаете тут на форуме мало было тех кто о какой то цмс задумывался чтобы сделать?
И аналог опенкарта и т.д. и все ни к чему не привело.
Т.к. заданьице не из самых легко осуществимых, практика много проблем подкинет.
Хотя на базовую сборку какую то если нацелиться, то может и пойдет.
Re: Делюсь опытом - Yii2 + Processwire
Эти не в счет.yiiliveext писал(а): ↑2020.01.14, 18:07 Я думаю, что у довольно многих разработчиков есть свои cms/интернет-магазины. Просто они не в открытом доступе.
Имеются ввиду системы с поддержкой от разработчиков и их сообщества:
- имя иметь, чтобы на такую систему можно было уговорить
- исправления багов ядра обязательно
- наличие документации обязательно, что сделает их поддерживаемой сообществом
- иметь архитектуру, легко настраиваемую под конечные цели, т.е. не монолит
- модульная структура желательна
-- установка/обновление модулей через админку
-- бесплатное наличие хотя бы каких то базовых, самых необходимых, модулей, чтобы получалась рабочая сборка, от которой можно уже стартовать.
Yii2 universal module sceleton - for basic and advanced templates
Re: Делюсь опытом - Yii2 + Processwire
1. Я заказчику с этой админкой только один раз передавал сайт, так что статистики нет, насколько оно удобно конечному пользователю. Но вполне справлялись. Мне кажется гораздо понятнее чем в вордпресах/друпалах например.maleks писал(а): ↑2020.01.14, 16:51 1. А что вам в той админке особо удобно делать?
Ну да, материалы сайта, нормально редактируются, и по категориям раскиданы, всякие контекстные ссылки повсюду.
Но множество пунктов админки далеко неочевидные, во всяком случае если с ней владелец сайта будет работать.
Они выглядят как для разработчика.
2. Да такое ж и себе несложно сделать - контент тип завести, поля для всякого дополнительного присоединить, в т.ч. позиция в дереве, если нужна иерархия.
3. Вообще непонятно зачем разработчику этот язык запросов
4. Думаете тут на форуме мало было тех кто о какой то цмс задумывался чтобы сделать?
И аналог опенкарта и т.д. и все ни к чему не привело.
Т.к. заданьице не из самых легко осуществимых, практика много проблем подкинет.
Хотя на базовую сборку какую то если нацелиться, то может и пойдет.
Вон у меня в подписи уже структура модуля готова для таких цмс, осталось только функционала докатать
Да в основном использую как "для разработчика", типа набросить прототип сайта/сервиса.
Одно дело в базе копаться, другое дело в админке наделать полей у материалов (да ещё и так чтоб поля ссылались на другие разделы-справочники, да ещё и чтоб это всё редактировалось на одной странице).
Если надо быстро переделать - там это сделать гораздо проще.
В админке пунктов там совсем немного, ну вот совсем.
Если не ошибаюсь, большая часть того что есть в админке - доступна только администратору.
Заводишь обычного пользователя, и он уже не видит все эти шаблоны, поля и прочее. Может редактировать только то что позволено. (могу ошибаться, но кажется так)
2. Просто сделать "смотри, и я похожее могу" - да, несложно.
Сделать и поддерживать, это совсем другое дело.
Тем более что там настраивается сама страница редактирования материала - что, в каком порядке, в сколько столбцов, в каких вкладках будешь редактировать.
Я бы сдох это всё кодить, да ещё и в универсальном виде, да и наверняка наделал бы ошибок бы ещё на стадии прототипирования.
Хотя некотторые вещи я бы там сделал по-другому. Было бы удобнее.
3. Ну вот так там есть. И по другому было бы хуже исходя из концепции той CMS.
Как в Yii есть ActiveRecord, так и там нечто подобное - Page. И надстройки над ним PageArray и т.д., ленивые загрузки всякие и прочее.
Чем-то лучше было бы прямые SQL-запросы писать? Тогда и про Yii можно сказать что "непонятно зачем построитель запросов существует, хотя можно и SQL обойтись".
4. Согласен. Наверное у каждого есть "хотелось бы, может быть, когда-нибудь".
-
- Сообщения: 910
- Зарегистрирован: 2019.08.13, 01:49
Re: Делюсь опытом - Yii2 + Processwire
Как раз в счет. Чтобы сделать хорошую систему с нуля, ей должен заниматься профессиональный разработчик, а ему, чтобы написать такую систему с нуля, чисто "для народа", нужна мотивация. И замотивировать его непросто.maleks писал(а): ↑2020.01.15, 10:05Эти не в счет.yiiliveext писал(а): ↑2020.01.14, 18:07 Я думаю, что у довольно многих разработчиков есть свои cms/интернет-магазины. Просто они не в открытом доступе.
С другой стороны, если у него есть уже такая система, которую он использует в своих проектах, то ее разработка уже окупилась и может быть предоставлена сообществу. Но опять же, для этого нужна мотивация.
Едем дальше. Вот допустим, что у меня есть система, отвечающая вашим требованиям. Какая у меня должна быть мотивация, чтобы я выложил ее в открытый доступ?Имеются ввиду системы с поддержкой от разработчиков и их сообщества:
- имя иметь, чтобы на такую систему можно было уговорить
- исправления багов ядра обязательно
- наличие документации обязательно, что сделает их поддерживаемой сообществом
- иметь архитектуру, легко настраиваемую под конечные цели, т.е. не монолит
- модульная структура желательна
-- установка/обновление модулей через админку
-- бесплатное наличие хотя бы каких то базовых, самых необходимых, модулей, чтобы получалась рабочая сборка, от которой можно уже стартовать.
Re: Делюсь опытом - Yii2 + Processwire
Тут же вопрос что это за система. Для себя люди создают ручники, которые абсолютно невозможно отнести к cms.yiiliveext писал(а): ↑2020.01.17, 19:06 Как раз в счет.
С другой стороны, если у него есть уже такая система, которую он использует в своих проектах, то ее разработка уже окупилась и может быть предоставлена сообществу. Но опять же, для этого нужна мотивация.
Вряд ли кто то создает себе модульность из админки. Те же миграции от модулей как запускать/откатывать из админки. С той системой переводов и финальной ее настройкой из админки еще пилить и пилить. С урлами, если делать управление от корня, а не слагами, многоязычностью, там работы и работы.
Ну и главное же, о чем я забыл сказать выше - если выкладывать в свободное плавание то такой код должен быть покрыт тестами.
Ну люди находят мотивацию и для того чтобы работать с Open Source.yiiliveext писал(а): ↑2020.01.17, 19:06 Едем дальше. Вот допустим, что у меня есть система, отвечающая вашим требованиям. Какая у меня должна быть мотивация, чтобы я выложил ее в открытый доступ?
Этот вопрос каждый решать должен для себя. Спрашивать надо таких людей кто в этом уже поплавали, из Юпи, или DotPlant, принесло ли оно им финансовый профит. Не все же обязательно делать бесплатным.
Но как минимум у такого кода появятся те:
- кто его потестят используя и дадут обратную связь
- смогут поддерживать проекты на такой системе
- напишут недостающие модули
Но опять же, учитывая ситуацию с yii2, уже походу стартовать что то такое вряд ли подходящее время.
Yii2 universal module sceleton - for basic and advanced templates
-
- Сообщения: 910
- Зарегистрирован: 2019.08.13, 01:49
Re: Делюсь опытом - Yii2 + Processwire
Вы ошибаетесь.
Одно дело контрибьютить в существующий проект, другое - что-то создать с нуля. С нуля для сообщества что-то стоящее создается нечасто, я больше наблюдал, когда свои проекты для своих целей перерастали в опенсорс. То, что у Qiang Xue получилось создать довольно популярный фреймворк - в этом есть своя доля везения, он просто оказался в свое время в нужном месте. Не то чтобы этот фреймворок сильно хорош, но он занял свою нишу. А так, по архтитектуре Yii 2 есть много претензий, а от некоторых решений лично господина Qiang Xue волосы встают дыбом. Но тем не менее, у Yii 2 довольно много поклонников.Ну люди находят мотивацию и для того чтобы работать с Open Source.
Насколько я знаю, эти проекты мертвы.Этот вопрос каждый решать должен для себя. Спрашивать надо таких людей кто в этом уже поплавали, из Юпи, или DotPlant, принесло ли оно им финансовый профит. Не все же обязательно делать бесплатным.
Re: Делюсь опытом - Yii2 + Processwire
Не имеет смысл обсуждать невидимые вещи и то во что они могли бы или не могли бы перерасти.yiiliveext писал(а): ↑2020.01.18, 23:13 я больше наблюдал, когда свои проекты для своих целей перерастали в опенсорс.
Можно в своей системе придумать что угодно.
Но все эти возможности появятся только после появления вполне приличного слоя своего самописного кода, принятия кучи решений.
Пока он только свой - он самописный, а это как раз отпугивает в пользу других решений, не заныканых.
Ладно если разраб сам все свои сайты тянет и это его бизнес.
Но бывает и по другому.
Если с таким сайтом будут искать себе разработчика на доработки.
Вот например та сборка что ТС кому то поставил.
Почти никто не знает цмс Processwire , а он говорит там 3 дня надо чтобы вникнуть, плюс надо высечь как он ее по хитренькому подключил и это не считая уже самого функционала сайта, т.е. со старта имеем нехилый порожек.
А за вот это начальное "разбирание" в существующем коде заказчики хронически не хотят платить, особенно если с него спросить почасовую оплату за "три дня+"
А теперь представим что там под капотом цмс типа Processwire но без документации...
Еще один минус таких своих заныканых развитых цмс в том что эти наработки под них, модули, ими же и ограничены, пример, ты не возьмешь такой модулек и не установишь без этой всей цмс, что весьма было бы неплохо, для проектов уже существующих, для удаленки.
Юпи вряд ли мертв, но он под старую версию yii.
Еще один пример как делая развитую цмс, со своими модулями, они начинают вариться в своем котле, что уже не могут эволюционировать. Что уже говорить о самописном.
Yii2 universal module sceleton - for basic and advanced templates
-
- Сообщения: 910
- Зарегистрирован: 2019.08.13, 01:49
Re: Делюсь опытом - Yii2 + Processwire
Эти вещи видимые, и большинство, чем вы сейчас пользуетесь в опенсорс, писалось изначально для своих нужд.
В общем, не вижу никакого смысла с вами спорить. Единственная цель для меня в нашем общении - это было выяснить целесообразность выкладывания своей платформы/cms основанной на yii2 в общий доступ в связи с потенциальным переводом на yii3.
Пы.Сы. Ваш модуль в подписи не гибкий и не универсальный, есть гораздо лучшие подходы к построению модульности на yii2.
Пы.Сы.Сы. По поводу того, что нецелесообразно что-то сейчас делать на yii2 - вы ошибаетесь, эта версия будет жить еще долго. А если команда разработчиков ядра фреймворка согласится принимать улучшения, вместо того чтобы заморозить его, как это планируется, то у него вполне может быть еще и достаточно перспективное будущее.
Re: Делюсь опытом - Yii2 + Processwire
Теперь понятно почему вы так близко приняли к сердцу простые кажется факты.yiiliveext писал(а): ↑2020.01.21, 22:12 Единственная цель для меня в нашем общении - это было выяснить целесообразность выкладывания своей платформы/cms основанной на yii2 в общий доступ в связи с потенциальным переводом на yii3.
Но ведь в этой теме речь не шла о вашей какой то цмс, о которой никто пока не знает.
Я все это говорил исключительно из своего опыта и того что я вижу. Сам создавал 2 цмс-ки, одна из них на yii2.
Я не говорил что на yii2 нецелеобразно работать.yiiliveext писал(а): ↑2020.01.21, 22:12 Пы.Сы.Сы. По поводу того, что нецелесообразно что-то сейчас делать на yii2 - вы ошибаетесь, эта версия будет жить еще долго.
Это как раз хорошо оттестенный качественный продукт, который устраивает многих.
Но, время идет, те же новые версии php появляются, а он создавался аж когда.
Для опенсорса стартовать масштабное рисковано, как пример цмс.
Вы, например, недавно на этом форуме зарегались и много вы тут людей сейчас наблюдаете?
Тех, которые смогут дать вам обратную связь по вашей цмс.
А раньше тут в каждой теме была куча народу.
Вы про эту команду?yiiliveext писал(а): ↑2020.01.21, 22:12 Пы.Сы.Сы. А если команда разработчиков ядра фреймворка согласится принимать улучшения, вместо того чтобы заморозить его, как это планируется, то у него вполне может быть еще и достаточно перспективное будущее.
Ну и кажется причем к этой теме мой модуль?yiiliveext писал(а): ↑2020.01.21, 22:12 Пы.Сы. Ваш модуль в подписи не гибкий и не универсальный, есть гораздо лучшие подходы к построению модульности на yii2.
Это как раз Open Source.
По этому модулю я не получил от сообщества никакой обратной связи чтобы понять что кто то вкладывает в понятия "гибкий и универсальный".
Но я его сам пообкатывал и практика дала мне подсказку что в нем требует доработки, скоро обновлю.
Yii2 universal module sceleton - for basic and advanced templates
-
- Сообщения: 910
- Зарегистрирован: 2019.08.13, 01:49
Re: Делюсь опытом - Yii2 + Processwire
Я не принимаю это близко к сердцу. Лишь хочу понять целесообразность этого действа.
Об этом я писал выше, и таких cms-ок немало.Я все это говорил исключительно из своего опыта и того что я вижу. Сам создавал 2 цмс-ки, одна из них на yii2.
Верно, вы писали, что нет смысла делать cms на yii2. А я утверждаю, что есть, даже если вы это с нуля сделаете. Yii3 - совершенно другой фреймворк, поэтому перейдут на него не все.Я не говорил что на yii2 нецелеобразно работать.
Это как раз хорошо оттестенный качественный продукт, который устраивает многих.
Но, время идет, те же новые версии php появляются, а он создавался аж когда.
Это к вашему замечанию о том, что у cms должна быть модульная система.Ну и кажется причем к этой теме мой модуль?
Скажем так, то, что я здесь наблюдаю меня слегка шокирует. Большинство вопросов, которые здесь задают люди, зарегистрированные несколько лет назад, решаются в несколько кликов в IDE по исходному коду.Вы, например, недавно на этом форуме зарегались и много вы тут людей сейчас наблюдаете?