Drupal 8. Внешние php файлы. Как подключать правильно? Или правильно не подключать вообще?
26 сентября 2017 в 13:49
На сайте есть части на которых используется своя БД и свои php файлы. В старой версии сайта модержимое php файлов подгружалось в ноды через формат ввода с PHP обработчиком. Как посоветуете делать в новой версии?
- Блог
- Войдите или зарегистрируйтесь, чтобы отправлять комментарии
Комментарии
Советую не делать так в новой версии.
А как правильно делать в новой версии? Как отобразить на сайте работу не-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
Спасибо Алексей, ты как всегда вовремя!
Там в соседней теме человек пилит строительную биржу на нескольких БД, можешь объяснить ему что и как?
Спасибо за на водку, обязательно поработаем.