Как "соединить" проект Laravel с сайтом Craft 3 CMS
Я разработал приложение, которое извлекает данные из API, основанного на Laravel 5.5 . Маркетинговая страница landingpage приложения основана на Craft CMS версии 3. Маркетинговый сайт, API и базы данных обеих систем работают на одном сервере.
Я хочу сгенерировать landingpages для каждой строки таблицы X базы данных Laravel.
Www.website.com/awesome-landingpage-about - {slug}
Каков наилучший подход для реализации этого?
- я не хочу получать данные непосредственно из базы данных Laravel
- я не хочу синхронизировать базу данных CMS Craft с Laravel (добавлять / удалять строки из базы данных laravel как записи в Craft)
- было бы здорово иметь запись типа "Landingpage", где мы можем дополнительно создать landingpage, ссылаясь на идентификатор таблицы laravel и добавить дополнительное содержимое для landingpages.
Будет JSON-API от Laravel создать CMS плагин хорошая идея производительности?
Одним из вариантов было бы использовать динамический маршрут и просто получить данные от 127.0.0.1 (потому что тот же сервер) из файла шаблона? Или есть более умный способ в Craft CMS?
1 ответ:
Начнем с:
- "я не хочу получать данные непосредственно из базы данных Laravel"
Я предполагаю, что вы не хотите писать код в CraftCMS для доступа к базе данных другого проекта. Хорошо. Если вы планируете, чтобы они выполняли отдельные задания и использовали Laravel API для извлечения данных в одиночку, пусть он обрабатывает свою собственную базу данных.
- " я не хочу синхронизировать базу данных CMS Craft с Laravel (добавлять / удалять строки из базы данных laravel в качестве записей в Ремесло) "
Итак, это мой вопрос: Вы хотите иметь возможность создавать целевые страницы только на основе строк Laravel или на основе строк базы данных Laravel и CraftCMS?
Все сводится к тому, насколько хорошо вы хотите абстрагировать оба фреймворка. Я, вероятно, сказал бы laravel принимать запросы от аутентифицированного пользователя (пользователя CraftCMS) или от localhosts (только из машины), и я бы создал конечные точки для добавления/удаления/редактирования/получения данных в моем распоряжении. Тогда я притащу строк с фреймворк Laravel и объедините с моей собственной (предположим, что я CMS). Даже в интрасети запрос на доступ к базе данных laravel занимает больше времени, чем запрос на доступ к базе данных CraftCMS, поэтому следует ожидать зависимости между двумя проектами.Для пункта 3 вам придется хранить информацию о чем-то в каждой базе данных. На CraftCMS, чтобы сохранить по крайней мере ID, он будет запрашивать laravel, и laravel должен будет получить конечную точку, где он может вставить новый материал, если вы планируете имея там дополнительный контент.
Я не совсем уверен, понял ли я идею, которую вы пытаетесь показать, когда говорите "добавить дополнительный контент для целевых страниц", но я бы постарался сохранить ее простой и абстрактной, чтобы сохранить эту "информацию", которую CMS не должна обрабатывать в первую очередь (или вы можете разработать некоторые дополнительные таблицы и импортировать их в другую базу данных). Эффективность воздействия? Зависит от количества имеющихся у вас данных