Рейтинг:0

Post Data to D7 from D9

флаг cn

How do I post data from Drupal 9 when a content is created, post data to Drupal 7 hosted in a different server to create node content.

In Drupal7, I have enabled services module and created a resource to create login session, accept json data and creates node content. This is working fine when I test from POSTMAN.

I am new to Drupal 8/9 and not sure how to post json data to D7. Please could anyone suggest? so far, i have created a custom module in D9 and have added additional custom_form_submit where I can add code to post data once the node is submitted. I need to login to D7, grab token, post data to D7 to create node in D7, then logout from D7.

Or can the login process be handled separately via sysadmin configurations like proxy/firewall settings? Both D7 and D9 are hosted in separate servers but in same organisation cloud.

[updated] Our current D7 app has a lot of custom features used internally within our organisation and externally. We are in the process of migrating the app to D9 prioritising externally accessible features and to keep D7 as legacy system for internal use. We only need 5 fields in ONE cck in D9 to be stored in real time in D7 to continue using D7.

The 5 fields include integer, date&time and list fields. I have tried to maintain the cck and field machine names SAME in both D7 and D9 sites. The rest of the fields in this cck are very different in both sites.

флаг cn
В частности, какие данные вы пытаетесь опубликовать? Какова связь между сайтом D7 и сайтом D9? Должны ли они быть «зеркалами» друг друга и иметь одних и тех же пользователей, контент и т. д.? Или это в основном отдельные сайты с разным контентом и пользователями? Во многих случаях вы можете использовать модуль Feeds для синхронизации контента между сайтами Drupal.
shablm avatar
флаг cn
см. обновленный вопрос с ответами на ваши вопросы. Синхронизация с использованием модуля Feeds звучит намного проще, чем веб-сервисы. Будет ли он работать с сайтами с разными версиями drupal, например, между D7 и D9?
флаг cn
Да, фиды будут работать с разными версиями Drupal и даже с сайтами, не поддерживающими Drupal. Это зависит от того, какой контроль доступа вам нужен, но в самой простой настройке вы можете создать представление на сайте D9, которое выводит нужные вам данные, и указать на него сайт D7, и импортировать его в Feeds на D7.
shablm avatar
флаг cn
Большой! Обязательно попробую модуль Feeds. Просто еще один быстрый вопрос о контроле доступа, все наши формы и представления защищены входом в систему и не должны быть доступны публично. Можно ли настроить представление в D9, которое выводит данные, для доступа только через D7/логин и т. д.?
флаг cn
Да, смотрите сборщики здесь: https://www.drupal.org/node/856644
shablm avatar
флаг cn
Здравствуйте, к сожалению, поскольку модуль фидов не подпадает под рекомендации по безопасности Drupal, мы не можем использовать этот модуль в соответствии с политикой нашей организации. Пожалуйста, не могли бы вы предложить альтернативу? огромное спасибо
флаг cn
Ленты — это способ уйти от экосистемы contrib, поэтому, если вы не можете их использовать, вы будете кодировать все сами, удачи. В этом случае я бы рассмотрел SSO (Single Sign-On) между сайтами D7 и D9, а затем просто позволил бы пользователям на сайте D7 получать доступ к содержимому непосредственно с сайта D9. Это также устраняет дублирование контента между D9 и D7. Но это работает только в том случае, если у вас есть одни и те же пользователи на обоих сайтах.
Этот вопрос на других языках:

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.