Как "связать" проект 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 ответ

Решение

Давайте начнем с:

  1. "Я не хочу получать данные напрямую из базы данных Laravel"

Я предполагаю, что вы не хотите писать код в CraftCMS для доступа к базе данных другого проекта. Хорошо. Если вы планируете, чтобы они выполняли отдельные задания и использовали Laravel API для выборки данных, пусть он обрабатывает свою собственную базу данных.

  1. "Я не хочу синхронизировать базу данных Craft CMS с Laravel (добавить / удалить строки из базы данных laravel как записи в Craft)"

Итак, это мой вопрос: вы хотите иметь возможность создавать целевые страницы, основываясь только на строках Laravel или на основе строк базы данных Laravel и CraftCMS?
Все сводится к тому, насколько хорошо вы хотите абстрагировать обе структуры. Я, вероятно, сказал бы laravel принимать запросы от аутентифицированного пользователя (пользователя CraftCMS) или от локальных хостов (изнутри одной машины), и я бы создал конечные точки для добавления / удаления / редактирования / получения данных в моем распоряжении. Затем я выбираю строки из Laravel и объединяюсь со своими (предположим, что я CMS). Даже в сети интрасети запрос на указание laravel для доступа к базе данных длиннее, чем для доступа к базе данных из CraftCMS, поэтому следует ожидать зависимости между двумя проектами.

Для пункта 3 вам нужно будет хранить информацию о каждой базе данных о чем-либо. На CraftCMS для хранения хотя бы идентификаторов, которые он будет запрашивать у laravel, и laravel должен будет получить конечную точку, в которую он может вставлять новые вещи, если вы планируете иметь там дополнительный контент.

Я не совсем уверен, что у меня возникла идея, которую вы пытаетесь показать, когда говорите "добавьте дополнительный контент для целевых страниц", но я бы постарался сделать его простым и абстрактным, поскольку Laravel хранит эту "информацию". что CMS не должна обрабатывать в первую очередь (или вы можете разработать некоторые дополнительные таблицы и импортировать их в другую базу данных). Влияние производительности? Зависит от количества данных, которые вы получили

Другие вопросы по тегам