На сайте есть части на которых используется своя БД и свои php файлы. В старой версии сайта модержимое php файлов подгружалось в ноды через формат ввода с PHP обработчиком. Как посоветуете делать в новой версии?
В Drupal все принято реализовывать модулями.
Если необходимо подключение стороннего, чужого кода - его можно оформить в виде библиотеки, и подключить композером.
Дык некоторые Друпал считают сторонним кодом Композер - это как план Б.
Как я уже поэкспериментировал, php файлы в Drupal 8 подключаются, но не работают со своими БД. Что делать чтобы работали? Размещать их вне директории сайта? Тогда как подключать?
Извините за тупой вопрос. Есть набор html php файлов, который работал на прошлой версии сайта со своей БД-й. У меня на Опенсервер это тоже работает (а главное php-файлы с паролями скачать можно). Залил это все на домен отдельный от Друпала - php не работает с БД. Как сделать чтоб работало?
Никогда не строил свои ЦМС. Уже догадываюсь о причинах переделки всего сайта.
Если есть, скажем, форум на стороннем движке, кладём его в субдиректорию и говорим апачу или нжинксу, как обрабатывать страницы этой субдиректории. Друпал тут ни при чём. Он даже не должен затрагиваться при обработке таких страниц. Совершенно нормальная практика, классический пример - fast 404.
Спсибо за уделенное внимание!
Как -то все стало работать. При каких то других настройках сервера. Думаю более правильных. С проблемой разобрался. С композер - на будущее.
Какого Бориса вы имеете ввиду?
Нет ни чего плохого подключиться к drupal из своего скрипта для получения доступа к работе с ним. Свои скрипт может вообще быть не связан с сайтом и делать что то свое.
Делать это можно вот так
<?php use Drupal\Core\DrupalKernel; use Symfony\Component\HttpFoundation\Request;
define('DRUPAL_DIR', '/home/www'); require_once DRUPAL_DIR . '/core/includes/database.inc'; require_once DRUPAL_DIR . '/core/includes/schema.inc';
$autoloader = require_once DRUPAL_DIR .'/autoload.php';
$request = Request::createFromGlobals();
// Bootstrap drupal to different levels $kernel = DrupalKernel::createFromRequest($request, $autoloader, 'prod'); $kernel->boot(); $kernel->prepareLegacyRequest($request);
?>
Это зависит от того, что вы делаете, а не потому, что "принято"
Если у вас связка какой-то системы, которая живет в рамках одной машины в API нет необходимости.
А если оно понадобиться то его можно быстро реализовать. Отталкиваться нужно от задачи всегда.
Так "принято", потому что это кейс из "лучших практик", и с ним сталкивалось огромное число людей, пришедших в итоге к общему решению подобных задач. Никто не заставляет делать так, и никак иначе.
Поддержу коллегу. Если придерживаться друпал вай и хороших системных практик, то сокращаются затраты на дальшейшую поддержку и развитие кода, иначе делать то же можно, но надо понимать до конца последствия своих действий.
Комментарии
Советую не делать так в новой версии.
А как правильно делать в новой версии? Как отобразить на сайте работу не-Drupal php файлов?
У многих людей сайт на одной платформе, а форум (и много чего другого) на другой.
В Drupal все принято реализовывать модулями.
Если необходимо подключение стороннего, чужого кода - его можно оформить в виде библиотеки, и подключить композером.
Дык некоторые Друпал считают сторонним кодом Композер - это как план Б.
Как я уже поэкспериментировал, php файлы в Drupal 8 подключаются, но не работают со своими БД. Что делать чтобы работали? Размещать их вне директории сайта? Тогда как подключать?
"Спрошу как надо - но во внимание не приму, сделаю по-своему. Чего мне там какое-то чужое время..."
По работе стороннего кода - задавайте вопросы его автору, если сами не осилите разобрать.
Т.е. если какая-то сторонняя программа вне папки сайта - это нормально. А показ ее работы на сайте может осуществляться только через Композер?
Упрощаю вопрос. Есть другой сайт который работает на поддомене. Есть ли простой вариант отобразить html файл этого сайта в ноде Drupal-а ?
т.е. Drupal дает php файлам общаться со своими БД-ами, только если эти php файлы внутри drupal-модулей?
Нет, но модули - это правильный подход
как еще можно? Модулей скопов и ифреймов для D8 увы не вижу.
С каких пор для того чтобы iframe вставить модуль нужен?
Если честно, бродил по продуктовому и думал: а нахрена для этого модуль?
Извините за тупой вопрос. Есть набор html php файлов, который работал на прошлой версии сайта со своей БД-й. У меня на Опенсервер это тоже работает (а главное php-файлы с паролями скачать можно). Залил это все на домен отдельный от Друпала - php не работает с БД.
Как сделать чтоб работало?
Никогда не строил свои ЦМС. Уже догадываюсь о причинах переделки всего сайта.
Если есть, скажем, форум на стороннем движке, кладём его в субдиректорию и говорим апачу или нжинксу, как обрабатывать страницы этой субдиректории. Друпал тут ни при чём. Он даже не должен затрагиваться при обработке таких страниц. Совершенно нормальная практика, классический пример - fast 404.
Я понимаю что Друпал ни при чем. Теперь точно ни при чем.
Хорошо, упрощу вопрос до предела. папка, в ней 2 файла html и php (в нем пароли к БД). Как обрабатывать страницы? Что сказать Nginx-у?
Это лучше у Бориса спросить, он по нжинксу спец))
А он ответит, что на этот вопрос невозможно ответить не глядя на запускаемое...
Спсибо за уделенное внимание!
Как -то все стало работать. При каких то других настройках сервера. Думаю более правильных. С проблемой разобрался. С композер - на будущее.
Какого Бориса вы имеете ввиду?
Который чуть выше отписывался. @bsyomov
Извните, ошибся. Был тут Дубовский (с Белоруссии, а не с Радона). Борис, я вас все время с ним путал.
Нет ни чего плохого подключиться к drupal из своего скрипта для получения доступа к работе с ним. Свои скрипт может вообще быть не связан с сайтом и делать что то свое.
Делать это можно вот так
<?php
use Drupal\Core\DrupalKernel;
use Symfony\Component\HttpFoundation\Request; define('DRUPAL_DIR', '/home/www');
require_once DRUPAL_DIR . '/core/includes/database.inc';
require_once DRUPAL_DIR . '/core/includes/schema.inc'; $autoloader = require_once DRUPAL_DIR .'/autoload.php'; $request = Request::createFromGlobals(); // Bootstrap drupal to different levels
$kernel = DrupalKernel::createFromRequest($request, $autoloader, 'prod');
$kernel->boot();
$kernel->prepareLegacyRequest($request); ?>
Для "своих скриптов" принято делать API.
Это зависит от того, что вы делаете, а не потому, что "принято"
Если у вас связка какой-то системы, которая живет в рамках одной машины в API нет необходимости.
А если оно понадобиться то его можно быстро реализовать. Отталкиваться нужно от задачи всегда.
Так "принято", потому что это кейс из "лучших практик", и с ним сталкивалось огромное число людей, пришедших в итоге к общему решению подобных задач. Никто не заставляет делать так, и никак иначе.
Поддержу коллегу. Если придерживаться друпал вай и хороших системных практик, то сокращаются затраты на дальшейшую поддержку и развитие кода, иначе делать то же можно, но надо понимать до конца последствия своих действий.
Конвертировать в друпальную
Портировать на D8
Спасибо Алексей, ты как всегда вовремя!
Там в соседней теме человек пилит строительную биржу на нескольких БД, можешь объяснить ему что и как?
Спасибо за на водку, обязательно поработаем.