Как я могу получить доступ к переменной базы данных Drupal 7 $? - PullRequest
1 голос
/ 27 мая 2011

Я написал несколько запросов php / mysql внутри node.tpl.php и page.tpl.php.

Имя пользователя и пароль, которые эти страницы используют для подключения к MySQL, указаны в файлах.

Вместо этого я хотел бы иметь возможность использовать параметры подключения MySQL, которые определены в файле settings.php Drupal.

Я пытаюсь безуспешно включить файл settings.php в node.tpl.php и page.tpl.php.

<?php include("sites/default/settings.php") ?> 

Затем я пытаюсь получить доступ к массиву $ database из settings.php следующим образом:

$databases['default']['default']['username']

Массив $ database имеет следующую структуру:

$databases = array (
                   'default' => 
                        array (
                          'default' => 
                               array (
                                    'database' => 'sdnndr',
                                    'username' => 'root',
                                    'password' => '',
                                    'host' => 'localhost',
                                    'port' => '',
                                    'driver' => 'mysql',
                                    'prefix' => '',
                                ),
                        ),
              );

Мой подход не работает. Может ли кто-нибудь предложить

Ответы [ 2 ]

3 голосов
/ 27 мая 2011

Позвольте мне сосчитать, как вы делаете это неправильно. Вы не пишете запросы в шаблоны. Никогда. Потому что если вы измените внешний вид позже, вы потеряете свою логику Поместите их в модули, где они принадлежат. Вам не нужно включать настройки, это уже включено. Вы не пишете запросы MySQL, потому что они небезопасны, вместо этого вы используете http://api.drupal.org/api/drupal/includes--database--database.inc/group/database/7, что поощряет (а в некоторых случаях даже обеспечивает) безопасность.

1 голос
/ 30 мая 2011

Наряду с тем, что говорит chx

Позвольте мне сосчитать, как вы делаете это неправильно.Вы не пишете запросы в шаблоны.Никогда.Вы не включаете настройки, это уже включено.Вы не пишете MySQL-запросы, которые используете

в файле template.php вашей темы, у вас есть доступ к большинству переменных, поступающих в page.tpl.php.используйте

hook_preprocess(&$variables, $hook);

затем dump или dsm ($ variable);(модуль devel должен быть установлен).

Если вам действительно нужно запросить базу данных, создайте небольшой модуль и в файле .module используйте функции drupal для запроса базы данных.Также вам не нужно беспокоиться о подключении к базе данных, что происходит в процессе начальной загрузки.

...