Делюсь опытом - Yii2 + Processwire

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
eresik
Сообщения: 44
Зарегистрирован: 2010.10.23, 10:39

Делюсь опытом - Yii2 + Processwire

Сообщение eresik »

Просто зашёл поделиться моей любимой связкой для относительно простых сайтов: 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
Аватара пользователя
maleks
Сообщения: 1985
Зарегистрирован: 2012.12.26, 12:56

Re: Делюсь опытом - Yii2 + Processwire

Сообщение maleks »

eresik писал(а): 2020.01.09, 15:18
Но, есть и плюсы.
1. Главный плюс - просто ВЕЛИКОЛЕПНАЯ универсальная админка. Вот просто элементарно УДОБНО не требует ни строчки кода.
2. Возможность использовать только как CMF, без клиентской части (только так и использую). Фактически, использую как древовидную базу данных, со своим языком запросов и отличной настраиваемой админкой, с готовыми сущностями по типу ActiveRecord.
3. Простой язык запросов к базе (похож на JQuery). Всё описание есть на одной страничке https://processwire.com/docs/selectors/

4. Далёкая, почти несбыточная мечта - сделать нечто подобное Processwire в виде модуля для Yii
1. А что вам в той админке особо удобно делать?
Ну да, материалы сайта, нормально редактируются, и по категориям раскиданы, всякие контекстные ссылки повсюду.
Но множество пунктов админки далеко неочевидные, во всяком случае если с ней владелец сайта будет работать.
Они выглядят как для разработчика.
2. Да такое ж и себе несложно сделать - контент тип завести, поля для всякого дополнительного присоединить, в т.ч. позиция в дереве, если нужна иерархия.
3. Вообще непонятно зачем разработчику этот язык запросов
4. Думаете тут на форуме мало было тех кто о какой то цмс задумывался чтобы сделать?
И аналог опенкарта и т.д. и все ни к чему не привело.
Т.к. заданьице не из самых легко осуществимых, практика много проблем подкинет.
Хотя на базовую сборку какую то если нацелиться, то может и пойдет.
Вон у меня в подписи уже структура модуля готова для таких цмс, осталось только функционала докатать :)
Yii2 universal module sceleton - for basic and advanced templates
yiiliveext
Сообщения: 910
Зарегистрирован: 2019.08.13, 01:49

Re: Делюсь опытом - Yii2 + Processwire

Сообщение yiiliveext »

maleks писал(а): 2020.01.14, 16:51 Думаете тут на форуме мало было тех кто о какой то цмс задумывался чтобы сделать?
И аналог опенкарта и т.д. и все ни к чему не привело.
Т.к. заданьице не из самых легко осуществимых, практика много проблем подкинет.
Хотя на базовую сборку какую то если нацелиться, то может и пойдет.
Я думаю, что у довольно многих разработчиков есть свои cms/интернет-магазины. Просто они не в открытом доступе.
Аватара пользователя
maleks
Сообщения: 1985
Зарегистрирован: 2012.12.26, 12:56

Re: Делюсь опытом - Yii2 + Processwire

Сообщение maleks »

yiiliveext писал(а): 2020.01.14, 18:07 Я думаю, что у довольно многих разработчиков есть свои cms/интернет-магазины. Просто они не в открытом доступе.
Эти не в счет.
Имеются ввиду системы с поддержкой от разработчиков и их сообщества:
- имя иметь, чтобы на такую систему можно было уговорить
- исправления багов ядра обязательно
- наличие документации обязательно, что сделает их поддерживаемой сообществом
- иметь архитектуру, легко настраиваемую под конечные цели, т.е. не монолит
- модульная структура желательна
-- установка/обновление модулей через админку
-- бесплатное наличие хотя бы каких то базовых, самых необходимых, модулей, чтобы получалась рабочая сборка, от которой можно уже стартовать.
Yii2 universal module sceleton - for basic and advanced templates
eresik
Сообщения: 44
Зарегистрирован: 2010.10.23, 10:39

Re: Делюсь опытом - Yii2 + Processwire

Сообщение eresik »

maleks писал(а): 2020.01.14, 16:51 1. А что вам в той админке особо удобно делать?
Ну да, материалы сайта, нормально редактируются, и по категориям раскиданы, всякие контекстные ссылки повсюду.
Но множество пунктов админки далеко неочевидные, во всяком случае если с ней владелец сайта будет работать.
Они выглядят как для разработчика.
2. Да такое ж и себе несложно сделать - контент тип завести, поля для всякого дополнительного присоединить, в т.ч. позиция в дереве, если нужна иерархия.
3. Вообще непонятно зачем разработчику этот язык запросов
4. Думаете тут на форуме мало было тех кто о какой то цмс задумывался чтобы сделать?
И аналог опенкарта и т.д. и все ни к чему не привело.
Т.к. заданьице не из самых легко осуществимых, практика много проблем подкинет.
Хотя на базовую сборку какую то если нацелиться, то может и пойдет.
Вон у меня в подписи уже структура модуля готова для таких цмс, осталось только функционала докатать :)
1. Я заказчику с этой админкой только один раз передавал сайт, так что статистики нет, насколько оно удобно конечному пользователю. Но вполне справлялись. Мне кажется гораздо понятнее чем в вордпресах/друпалах например.
Да в основном использую как "для разработчика", типа набросить прототип сайта/сервиса.
Одно дело в базе копаться, другое дело в админке наделать полей у материалов (да ещё и так чтоб поля ссылались на другие разделы-справочники, да ещё и чтоб это всё редактировалось на одной странице).
Если надо быстро переделать - там это сделать гораздо проще.
В админке пунктов там совсем немного, ну вот совсем.

Если не ошибаюсь, большая часть того что есть в админке - доступна только администратору.
Заводишь обычного пользователя, и он уже не видит все эти шаблоны, поля и прочее. Может редактировать только то что позволено. (могу ошибаться, но кажется так)

2. Просто сделать "смотри, и я похожее могу" - да, несложно.
Сделать и поддерживать, это совсем другое дело.
Тем более что там настраивается сама страница редактирования материала - что, в каком порядке, в сколько столбцов, в каких вкладках будешь редактировать.
Я бы сдох это всё кодить, да ещё и в универсальном виде, да и наверняка наделал бы ошибок бы ещё на стадии прототипирования.
Хотя некотторые вещи я бы там сделал по-другому. Было бы удобнее.

3. Ну вот так там есть. И по другому было бы хуже исходя из концепции той CMS.
Как в Yii есть ActiveRecord, так и там нечто подобное - Page. И надстройки над ним PageArray и т.д., ленивые загрузки всякие и прочее.
Чем-то лучше было бы прямые SQL-запросы писать? Тогда и про Yii можно сказать что "непонятно зачем построитель запросов существует, хотя можно и SQL обойтись".

4. Согласен. Наверное у каждого есть "хотелось бы, может быть, когда-нибудь".
yiiliveext
Сообщения: 910
Зарегистрирован: 2019.08.13, 01:49

Re: Делюсь опытом - Yii2 + Processwire

Сообщение yiiliveext »

maleks писал(а): 2020.01.15, 10:05
yiiliveext писал(а): 2020.01.14, 18:07 Я думаю, что у довольно многих разработчиков есть свои cms/интернет-магазины. Просто они не в открытом доступе.
Эти не в счет.
Как раз в счет. Чтобы сделать хорошую систему с нуля, ей должен заниматься профессиональный разработчик, а ему, чтобы написать такую систему с нуля, чисто "для народа", нужна мотивация. И замотивировать его непросто.
С другой стороны, если у него есть уже такая система, которую он использует в своих проектах, то ее разработка уже окупилась и может быть предоставлена сообществу. Но опять же, для этого нужна мотивация.
Имеются ввиду системы с поддержкой от разработчиков и их сообщества:
- имя иметь, чтобы на такую систему можно было уговорить
- исправления багов ядра обязательно
- наличие документации обязательно, что сделает их поддерживаемой сообществом
- иметь архитектуру, легко настраиваемую под конечные цели, т.е. не монолит
- модульная структура желательна
-- установка/обновление модулей через админку
-- бесплатное наличие хотя бы каких то базовых, самых необходимых, модулей, чтобы получалась рабочая сборка, от которой можно уже стартовать.
Едем дальше. Вот допустим, что у меня есть система, отвечающая вашим требованиям. Какая у меня должна быть мотивация, чтобы я выложил ее в открытый доступ?
Аватара пользователя
maleks
Сообщения: 1985
Зарегистрирован: 2012.12.26, 12:56

Re: Делюсь опытом - Yii2 + Processwire

Сообщение maleks »

yiiliveext писал(а): 2020.01.17, 19:06 Как раз в счет.
С другой стороны, если у него есть уже такая система, которую он использует в своих проектах, то ее разработка уже окупилась и может быть предоставлена сообществу. Но опять же, для этого нужна мотивация.
Тут же вопрос что это за система. Для себя люди создают ручники, которые абсолютно невозможно отнести к cms.
Вряд ли кто то создает себе модульность из админки. Те же миграции от модулей как запускать/откатывать из админки. С той системой переводов и финальной ее настройкой из админки еще пилить и пилить. С урлами, если делать управление от корня, а не слагами, многоязычностью, там работы и работы.
Ну и главное же, о чем я забыл сказать выше - если выкладывать в свободное плавание то такой код должен быть покрыт тестами.
yiiliveext писал(а): 2020.01.17, 19:06 Едем дальше. Вот допустим, что у меня есть система, отвечающая вашим требованиям. Какая у меня должна быть мотивация, чтобы я выложил ее в открытый доступ?
Ну люди находят мотивацию и для того чтобы работать с Open Source.

Этот вопрос каждый решать должен для себя. Спрашивать надо таких людей кто в этом уже поплавали, из Юпи, или DotPlant, принесло ли оно им финансовый профит. Не все же обязательно делать бесплатным.
Но как минимум у такого кода появятся те:
- кто его потестят используя и дадут обратную связь
- смогут поддерживать проекты на такой системе
- напишут недостающие модули

Но опять же, учитывая ситуацию с yii2, уже походу стартовать что то такое вряд ли подходящее время.
Yii2 universal module sceleton - for basic and advanced templates
yiiliveext
Сообщения: 910
Зарегистрирован: 2019.08.13, 01:49

Re: Делюсь опытом - Yii2 + Processwire

Сообщение yiiliveext »

maleks писал(а): 2020.01.18, 11:00 Тут же вопрос что это за система. Для себя люди создают ручники, которые абсолютно невозможно отнести к cms.
Вряд ли кто то создает себе модульность из админки.
Вы ошибаетесь.
Ну люди находят мотивацию и для того чтобы работать с Open Source.
Одно дело контрибьютить в существующий проект, другое - что-то создать с нуля. С нуля для сообщества что-то стоящее создается нечасто, я больше наблюдал, когда свои проекты для своих целей перерастали в опенсорс. То, что у Qiang Xue получилось создать довольно популярный фреймворк - в этом есть своя доля везения, он просто оказался в свое время в нужном месте. Не то чтобы этот фреймворок сильно хорош, но он занял свою нишу. А так, по архтитектуре Yii 2 есть много претензий, а от некоторых решений лично господина Qiang Xue волосы встают дыбом. Но тем не менее, у Yii 2 довольно много поклонников.
Этот вопрос каждый решать должен для себя. Спрашивать надо таких людей кто в этом уже поплавали, из Юпи, или DotPlant, принесло ли оно им финансовый профит. Не все же обязательно делать бесплатным.
Насколько я знаю, эти проекты мертвы.
Аватара пользователя
maleks
Сообщения: 1985
Зарегистрирован: 2012.12.26, 12:56

Re: Делюсь опытом - Yii2 + Processwire

Сообщение maleks »

yiiliveext писал(а): 2020.01.18, 23:13 я больше наблюдал, когда свои проекты для своих целей перерастали в опенсорс.
Не имеет смысл обсуждать невидимые вещи и то во что они могли бы или не могли бы перерасти.
yiiliveext писал(а): 2020.01.18, 23:13 Вы ошибаетесь.
Можно в своей системе придумать что угодно.
Но все эти возможности появятся только после появления вполне приличного слоя своего самописного кода, принятия кучи решений.
Пока он только свой - он самописный, а это как раз отпугивает в пользу других решений, не заныканых.
Ладно если разраб сам все свои сайты тянет и это его бизнес.
Но бывает и по другому.
Если с таким сайтом будут искать себе разработчика на доработки.
Вот например та сборка что ТС кому то поставил.
Почти никто не знает цмс Processwire , а он говорит там 3 дня надо чтобы вникнуть, плюс надо высечь как он ее по хитренькому подключил и это не считая уже самого функционала сайта, т.е. со старта имеем нехилый порожек.
А за вот это начальное "разбирание" в существующем коде заказчики хронически не хотят платить, особенно если с него спросить почасовую оплату за "три дня+"
А теперь представим что там под капотом цмс типа Processwire но без документации...

Еще один минус таких своих заныканых развитых цмс в том что эти наработки под них, модули, ими же и ограничены, пример, ты не возьмешь такой модулек и не установишь без этой всей цмс, что весьма было бы неплохо, для проектов уже существующих, для удаленки.
yiiliveext писал(а): 2020.01.18, 23:13 Насколько я знаю, эти проекты мертвы.
Юпи вряд ли мертв, но он под старую версию yii.
Еще один пример как делая развитую цмс, со своими модулями, они начинают вариться в своем котле, что уже не могут эволюционировать. Что уже говорить о самописном.
Yii2 universal module sceleton - for basic and advanced templates
yiiliveext
Сообщения: 910
Зарегистрирован: 2019.08.13, 01:49

Re: Делюсь опытом - Yii2 + Processwire

Сообщение yiiliveext »

maleks писал(а): 2020.01.20, 09:09 Не имеет смысл обсуждать невидимые вещи и то во что они могли бы или не могли бы перерасти.
Эти вещи видимые, и большинство, чем вы сейчас пользуетесь в опенсорс, писалось изначально для своих нужд.
В общем, не вижу никакого смысла с вами спорить. Единственная цель для меня в нашем общении - это было выяснить целесообразность выкладывания своей платформы/cms основанной на yii2 в общий доступ в связи с потенциальным переводом на yii3.
Пы.Сы. Ваш модуль в подписи не гибкий и не универсальный, есть гораздо лучшие подходы к построению модульности на yii2.
Пы.Сы.Сы. По поводу того, что нецелесообразно что-то сейчас делать на yii2 - вы ошибаетесь, эта версия будет жить еще долго. А если команда разработчиков ядра фреймворка согласится принимать улучшения, вместо того чтобы заморозить его, как это планируется, то у него вполне может быть еще и достаточно перспективное будущее.
Аватара пользователя
maleks
Сообщения: 1985
Зарегистрирован: 2012.12.26, 12:56

Re: Делюсь опытом - Yii2 + Processwire

Сообщение maleks »

yiiliveext писал(а): 2020.01.21, 22:12 Единственная цель для меня в нашем общении - это было выяснить целесообразность выкладывания своей платформы/cms основанной на yii2 в общий доступ в связи с потенциальным переводом на yii3.
Теперь понятно почему вы так близко приняли к сердцу простые кажется факты.
Но ведь в этой теме речь не шла о вашей какой то цмс, о которой никто пока не знает.
Я все это говорил исключительно из своего опыта и того что я вижу. Сам создавал 2 цмс-ки, одна из них на yii2.
yiiliveext писал(а): 2020.01.21, 22:12 Пы.Сы.Сы. По поводу того, что нецелесообразно что-то сейчас делать на yii2 - вы ошибаетесь, эта версия будет жить еще долго.
Я не говорил что на yii2 нецелеобразно работать.
Это как раз хорошо оттестенный качественный продукт, который устраивает многих.
Но, время идет, те же новые версии php появляются, а он создавался аж когда.
Для опенсорса стартовать масштабное рисковано, как пример цмс.
Вы, например, недавно на этом форуме зарегались и много вы тут людей сейчас наблюдаете?
Тех, которые смогут дать вам обратную связь по вашей цмс.
А раньше тут в каждой теме была куча народу.
yiiliveext писал(а): 2020.01.21, 22:12 Пы.Сы.Сы. А если команда разработчиков ядра фреймворка согласится принимать улучшения, вместо того чтобы заморозить его, как это планируется, то у него вполне может быть еще и достаточно перспективное будущее.
Вы про эту команду? :)
yiiliveext писал(а): 2020.01.21, 22:12 Пы.Сы. Ваш модуль в подписи не гибкий и не универсальный, есть гораздо лучшие подходы к построению модульности на yii2.
Ну и кажется причем к этой теме мой модуль? :D
Это как раз Open Source.
По этому модулю я не получил от сообщества никакой обратной связи чтобы понять что кто то вкладывает в понятия "гибкий и универсальный".
Но я его сам пообкатывал и практика дала мне подсказку что в нем требует доработки, скоро обновлю.
Yii2 universal module sceleton - for basic and advanced templates
yiiliveext
Сообщения: 910
Зарегистрирован: 2019.08.13, 01:49

Re: Делюсь опытом - Yii2 + Processwire

Сообщение yiiliveext »

maleks писал(а): 2020.01.22, 09:31 Теперь понятно почему вы так близко приняли к сердцу простые кажется факты.
Я не принимаю это близко к сердцу. Лишь хочу понять целесообразность этого действа.
Я все это говорил исключительно из своего опыта и того что я вижу. Сам создавал 2 цмс-ки, одна из них на yii2.
Об этом я писал выше, и таких cms-ок немало.
Я не говорил что на yii2 нецелеобразно работать.
Это как раз хорошо оттестенный качественный продукт, который устраивает многих.
Но, время идет, те же новые версии php появляются, а он создавался аж когда.
Верно, вы писали, что нет смысла делать cms на yii2. А я утверждаю, что есть, даже если вы это с нуля сделаете. Yii3 - совершенно другой фреймворк, поэтому перейдут на него не все.
Ну и кажется причем к этой теме мой модуль? :D
Это к вашему замечанию о том, что у cms должна быть модульная система.
Вы, например, недавно на этом форуме зарегались и много вы тут людей сейчас наблюдаете?
Скажем так, то, что я здесь наблюдаю меня слегка шокирует. Большинство вопросов, которые здесь задают люди, зарегистрированные несколько лет назад, решаются в несколько кликов в IDE по исходному коду.
Ответить