Дмитрий
Тут от задачи зависит, иногда наоборт права по апи и через интерфейс должны отличаться
должна быть система прав для полей те же, котрые накладываются уже системой прав какой-то
Дмитрий
как права могут передаваться неважно
Дмитрий
но суть что эти механизмы должны быть внутри самих моделей
Дмитрий
а та же точка апи может только накладывать свое
Дмитрий
но внутри должно быть все это уже
Vladimir
То что это зрелый движок
Pavel
Ну не думаю что они будут в ближайшее время дорабатывать access.xml до уровня настройки полей, муторно и сложно)
Дмитрий
Ну не думаю что они будут в ближайшее время дорабатывать access.xml до уровня настройки полей, муторно и сложно)
это должна быть общая система прав некая, неважно, чтобы эти права можно были прикручивать к любой сущнеости
Дмитрий
и описаниывать
Дмитрий
к пользвателю, к модели
Дмитрий
неважно
Дмитрий
я изучу что есть у ламинаса, и может гибрид со своими решениями соединю с их
Дмитрий
@Stake1988 https://docs.laminas.dev/tutorials/getting-started/database-and-models/ мда, точно, это проблема зенда, они кучу бизнес логики выносят в контроллеры, у них все слабо тут, нет нормальной orm системы, моделей вообще слабы
Дмитрий
если кратко, гавна кусок у них с базой и сами модели из-за их жирных контроллеров
Дмитрий
https://github.com/laminas/laminas-db/tree/2.16.x/src
Дмитрий
мде
Дмитрий
в сторону симфони надо смотреть тогда, по ORM той же или интерфейсы брать от лары той же
Дмитрий
они там норм накинули так
Дмитрий
https://github.com/symfony/symfony/tree/6.2/src/Symfony/Component/Form
Дмитрий
блин, вот у них формы
Дмитрий
все скинуто в одну папку
Дмитрий
блин, как обычно, у зенда хорощие вещи сделаны некоторые, у симфони свое
Дмитрий
но у всех говно тоже
Дмитрий
полноценно один фрейм использовать как-то проблематично вообще
Дмитрий
https://github.com/symfony/symfony/blob/6.2/src/Symfony/Component/Form/Button.php вот кнопка, она идет от интерфейса FormInterface, в котором есть лишние методы для графических компоннетов именно самой формы, например зачем кнопке там метод submit который логически идет по идее только для формы самой, метода этого нет, то есть FormInterface недостаточно абстрагирован, у зенда лучше структурировано формы
Дмитрий
плак плак, со всем этим, остается только собирать гибридов
Vladimir
плак плак, со всем этим, остается только собирать гибридов
Остаётся спокойно работать на джумла и предлагать свои улучшения
Vladimir
Они открыты
Pavel
))
Pavel
Ну я пока с Лары что нравится утаскиваю в Джумла, реализовал свой вариант дата маппера. Но в целом я думаю прям заморачиваться на идеальное решение смысла нет, больше времени на красоту будет уходить чем на полезный код.
Pavel
Вон питонщики пишут преимущественно процедурный код и не парятся, считают php-программистов низшим сословием)
Дмитрий
=))))
Pavel
))
Pavel
Та с ними спорить бесполезно)
Vladimir
🚀 Визуализатор Json-LD Существует огромное количество редакторов Json-LD, в том числе и визуальных. Хочу показать еще одну онлайн софтинку, но не редактор -а визуализатор Json-LD, который позволяет быстро проанализировать текущую разметку. Этот визуализатор - большое подспорье для всех, кто только начал изучать структурированные данные. Как вы знаете, микроразметка сейчас является обязательной составной частью продвижения сайта и практически её можно выделить как отдельный фактор ранжирования. Используйте свои примеры или попробуйте взять стандартные примеры и попытайтесь разобраться с разметкой. Это интересно и поучительно. Сразу хочу отметить, что на рабочих проектах, в отличии от примеров, разметка на порядок сложней и запутанней. Развлекайтесь ))) #DrMax #JsonLd #SEO
RINAT
​​Дождались! Ahrefs сдержал обещание и запускает свою поисковую систему yep.com! Еще в 2019 году компания объявила о планах создать собственную поисковую систему с принципами «возврата к истокам» и поддержки хорошего контента. 90% прибыли от рекламы Ahrefs обещает отдавать создателям контента. Ещё из особенностей. Yep обещает не собирать и не разглашать наши личные данные (геолокацию, имя, возраст, пол), не хранить историю поиска. Поиск даже не использует файлы cookie по умолчанию (до момента пока мы не решим изменить эти настройки). Пару слов о процессе работы нового поисковика: • Yep собирает данные с помощью AhrefsBot, но в будущем планируют заменить его на YepBot; • Примерное гео поиска Yep определяет по IP до масштаба региона или города; • По-прежнему Ahrefs заявляет, что по активности их бот на втором месте после бота Google и способен обходить более 8 миллиардов страниц в сутки; • Индекс Yep обновляется каждые 15-30 минут, ежедневно в индекс добавляется 30 миллионов новых страниц; • За 12 лет работы Ahrefs накопил огромное количество данных о ссылках (и не только). Эти данные будут использованы для в работе Yep. Пока Yep доступен на 7 языках, в том числе на русском. До конца года компания планирует запустить дата центр в США и масштабироваться. Ну что, погнали seoшить под Yep?! PS На первый взгляд что-то ищет, но с гео полная фигня – кажется, мультирегиональность им еще предстоит изобрести. Если честно, не верю, что они обретут хоть какую-то популярность.
Null
Ручеёк, перспективы электронной коммерции и как мы участвовали в создании платёжных плагинов Электронная коммерция врывается в дом каждого потребителя и с каждым годом, а особенно после античеловечных ковид-ограничений, становится все более актуальным и прибыльным занятием. Существующие на данный момент топовые e-commerce обросли плюшками и хорошо известны, однако если заглянуть под капот, то код написан с использованием устаревших технологий, что ограничивает возможность в масштабировании и делает проекты более ресурсоёмкими. То, с чем можно справиться программно, вешается на железо. Что увеличивает издержки на аренду серверов. Учитывая все эти недостатки, активные участники русской тусовки Joomla разработчиков начали пилить собственное решение - магазин RadicalMart. Я также поддержал данную инициативу и влился в команду, приняв прямое участие в разработке плагинов оплаты и эквайринга с популярными платежными сервисами и банками. Ведь какой магазин без разнообразия платежных систем? Итак, код писали другие ребята. Моя роль заключалась в том, что называется менеджмент проекта. Я побегал по банкам и заключил кучу бумажных договоров на открытие аккаунтов/подключение эквайринга, чтобы получить тестовую среду для разработки. Далее, передача данных коллегам, наполнение тестового магазина, сделанного под реальный и тестирование плагинов. Попутно проверка на правильное формирование данных для дальнейшей передачи на фискализацию чека во внешний сервис. Что еще было? Взаимодействие с тех.поддержкой сервисов/банков в случае возникновения вопросов или проблем. Завершающий штрих - подготовка карточек товаров и новостей - описание, в котором нужно перечислить преимущества и особенности каждого плагина. А также дизайн красочных промо-изображений. За пол года мы подготовили 6 плагинов: Эквайринг банков: - Сбербанк - Тинькофф - Модульбанк Платежные сервисы: - IntellectMoney (а вот эти ребята дают своё решение по фискализавции, что позволит избежать аренды кассового аппарата, что важно для нового бизнеса) - Robokassa (также дают своё решение по фискализации) - Юkassa Работа была тяжелой, требующей внимательности и аккуратности. Хочу выразить благодарность парням, с которыми мы это делали. Спасибо, ребята! Без вас, вашего профессионализма и творческого подхода, ничего не получилось бы! Собственно, о чем данный пост? А в этом посте я просто рассказываю будни и подноготную глазами менеджера проекта: работа, которую отчасти не видно, но которая чрезвычайно важна для конечного продукта. Когда пашешь и падаешь на кровать, потому что уже нет сил, когда выполняешь вредную, но важную работу на перспективу и за которую не заплатят, ибо это личные эксперименты и вложение в своё будущее. Проверить эффективность данного решения можно только опытным путём. И для этого нужно работать, не покладая рук. Перспективы В Москве 8 и 9 июня пройдет выставка ECOM Expo 2022. Команда RadicalMart участвует в этой выставке. Стенд готов. С удовлетворением замечу, что проект RadicalMart готов к интеграции и у конечных клиентов теперь есть выбор, как принимать платежи. И это - результат кропотливой работы, в которо принимал участие в том числе и я. Уверен, что проект займёт достойную часть рынка. Не сразу, но это произойдет. Ведь вокруг RadicalMart сплотилась активная команда людей, замотивированных на успех. А значит всё получится! Чат проекта #будни #мотивация
Олег
сделал пункт меню блог категорий и вывожу там материалы в два столбика как сделать пагинацию - номера страниц по 10 материалов чтоб было на одной странице в джумла 4 ну или в джумла 3 наверно эдентично подскажите кто ведает!)
Олег
всё просмотрел не могу найти и всё
Олег
!!
Олег
ну да!
Олег
чтоб можно было внизу нажимать на 1-2-3-4-5 и переходить на страницы с материалами
Олег
пагинаця так сказать
Олег
Null
вот параметры
Олег
спс.
Null
ставь так: во всю ширину: 0 только вводный текст: 10 кол-во столбцов: 2 Количество ссылок на другие материалы: 0 тогда будет по 5 материалов на столбец
Null
два столбца
Олег
ок попробую
RINAT
Бот
RINAT
И не требовалась дольго ждать😂
Pavel
Ребят, никто не в курсе, как подменить сервис провайдер в 4 Джумле?
Artem
Ребят, никто не в курсе, как подменить сервис провайдер в 4 Джумле?
никак. Там хардкод $extensionPath . '/services/provider.php'
Pavel
Не, немного неправильно задал вопрос. Скорее даже сам сервис провайдер подменять нет смысла. Мне надо подменить сущность в контейнере, которую задаёт стандартный сервис провайдер. Вот у нас инициили зируются стандартные сервис провайдеры:
Pavel
Pavel
Вот тут у нас Сервис провадер юзера регистрирует юзеринтерфейс в контейнере:
Pavel
Pavel
Когда дело доходит до сервис провайдера кастомного компонента, этот самый user.factory уже вызывается и создается экземпляр. Поэтому переопределять в сервис провайдере компонента уже поздно. В какой момент правильно его переопределять?
Pavel
Мне по сути надо расширить UserFactory и этим расширенным класс подсунуть вместо стандартного
Artem
Событие onBeforeExtensionBoot не то?
Pavel
Событие onBeforeExtensionBoot не то?
Хм.. Попробую, но есть подозрение что это уже поздно.
Artem
Мне кажется, это в самый раз
Artem
Хотя... Лучше, наверное, onAfterExtensionBoot Потому что дефолтный провайдер вызывается потом.
Artem
Т.е. если ты засунешь свои провайдеры на onBefore, то они потом могут быть переназначены
Pavel
Событие onBeforeExtensionBoot не то?
Проверил, слишком поздно, нужно что-то раньше. Что-то, что идет сразу после регистрации стандартных сервис провайдеров
Pavel
Там проблема в том, что к этом у моменту система уже использует стандартный UserFactory из-за чего его подмена может вызвать проблемы, нужна подмена до того как система начнет его испольщовать
Pavel
Удивительно, проверил все системные эвенты, ни один не срабатывает достаточно рано. Вроде ребята сделали крутую штуку, чтобы можно было подменить UserFactory, а по факту воспользоваться ей походу невозможно
Pavel
onAfterInitialise. Но главный вопрос в том зачем тебе меня факторию юзера
Не, тоже поздно. Там экземпляр UserFactory создается одновременно вместе application. Прост у нас по сути юзеры берутся и хранятся на стороннем ресурсе, а на сайте только специфичные для этого сайта данные. Хотел сделать всё, чтобы выглядело нативно и чтобы бизнес логика даже не догадывалась о происхождении юзеров.
Pavel
Так просто докинь/подмени данные в user factory
Допустим есть код: $this->userFactory->loadUserById($id) Он же сразу напрямуюсохдают стандартный экщемпляр User, который при констракте берет данные из БД. В теории тут можно подцепиться на onTableAfterLoad, но ведь запрос в БД всё равно сделан будет, а уже только после на событии я подменю данные. Вообще сам факт что при обращении к фактори будет возвращаться стандартный Joomla\CMS\User\User - сильно ограничивает.