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