Расположение общего библиотечного файла в Друпале

Главные вкладки

Аватар пользователя roman-yrv roman-yrv 12 октября 2012 в 13:26

Добрый день !

Допустим, у меня есть php-файл с моими пользовательскими функциями, которым я уже давно пользуюсь.

В какой папке Drupal такой файл (или такие файлы) принято размещать размещать, чтобы иметь к ним доступ как из своих модулей, так и из файлов, отвечающих за темизацию ?

В папке sites/all/modules ? Или в какой-нибудь другой ?

Комментарии

Аватар пользователя volocuga@drupal.org volocuga@drupal.org 12 октября 2012 в 14:00

sites/all/libraries/ПАПКА_БИБЛИОТЕКИ

Поставьте модуль Library API, дайте знать ему о вашей библиотеке при помощи

<?php

hook_libraries_info

()

?>

Взять путь к вашей библиотеке

<?php

$libraries 

libraries_get_libraries();

if (isset(

$libraries[$library])) {
  
$path libraries_get_path($library);
}

?>
Аватар пользователя roman-yrv roman-yrv 12 октября 2012 в 20:21

А если такое решение ?

Там, где эта библиотека будет использоваться, просто писать такую строчку.

<?php require_once(DRUPAL_ROOT.'/sites/all/libraries/mylib.php');?>

Аватар пользователя Softovick Softovick 13 октября 2012 в 0:14

roman-yrv wrote:
А если такое решение ?

Там, где эта библиотека будет использоваться, просто писать такую строчку.

<?php require_once(DRUPAL_ROOT.'/sites/all/libraries/mylib.php');?>


Это не DrupalWay

Аватар пользователя Softovick Softovick 13 октября 2012 в 0:14

roman-yrv wrote:
А если такое решение ?

Там, где эта библиотека будет использоваться, просто писать такую строчку.

<?php require_once(DRUPAL_ROOT.'/sites/all/libraries/mylib.php');?>


Это не DrupalWay

Аватар пользователя Softovick Softovick 13 октября 2012 в 9:32

roman-yrv wrote:
Так а что в этом случае нарушается ?

Стандарты разработки под Drupal, на которые ориентируются другие разработчики. Ну есть еще подводный камень - скорее всего вставится этот код куда-нить в тему или блок. А это - и потенциальная уязвимость (включаете PHP Filter) и отладить такой код вы не сможете. Например, в случае ошибки в теме, в логе ошибок Apache проблемный участок почти никогда не фиксируется. По моему даже в дебаггере и профайлере вы не найдете, где же собственно споткнулся PHP.

Аватар пользователя roman-yrv roman-yrv 13 октября 2012 в 10:04

Если использование Library API для подключения модуля - стандарты Drupal, то почему этот модуль отсутствует в ядре и я не нашел никаких о нем упоминаний в литературе по Drupal ?

А насчет отладки - я сейчас интереса ради сделал ошибки в библиотеке - при выводе темы без проблем сообщение об ошибке выдается.
И функция dpm() внутри библиотеки работает.
Думаю, для отладки этого хватит.

Аватар пользователя Softovick Softovick 13 октября 2012 в 10:32

roman-yrv wrote:
Если использование Library API для подключения модуля - стандарты Drupal, то почему этот модуль отсутствует в ядре и я не нашел никаких о нем упоминаний в литературе по Drupal ?

А насчет отладки - я сейчас интереса ради сделал ошибки в библиотеке - при выводе темы без проблем сообщение об ошибке выдается.
И функция dpm() внутри библиотеки работает.
Думаю, для отладки этого хватит.


Хорошо, если так. Но проблема не в использовании / не использовании Libraries. А в том, что код вы пишете не в модуле, а непонятно где - в этом неправильность.

Аватар пользователя volocuga@drupal.org volocuga@drupal.org 13 октября 2012 в 12:05

"roman-yrv" wrote:

Если использование Library API для подключения модуля - стандарты Drupal, то почему этот модуль отсутствует в ядре и я не нашел никаких о нем упоминаний в литературе по Drupal ?

Есть базовая поддержка, см
http://api.drupal.org/api/drupal/modules!system!system.api.php/function/...

Просто Library API расширяет возможности для подключения других библиотек.