Делегирование OpenId для сайта на Drupal 7.
Прочитав про получение OpenId для своего сайта вы можете спросить "А как же мне добавить те две строчки в секцию <head> сайта на Друпале?" Не заморачивайтесь установкой дополнительных модулей - у них нулевые шансы успевать за апдейтами версий Друпала. Читайте дальше, это гораздо проще сделать самостоятельно. Я буду рассказывать про Drupal 7 в примерах (поскольку этот сайт построен на Drupal 7 в данный момент), но похожий подход можно с лёгкостью применить к другой версии Друпала, потратив несколько минут на поиск соответствующей функции.
В первую очередь, найдите файл template.php для темы вашего сайта. Хорошей практикой будет сделать дочернюю тему вместо редактирования стандартной потому, что любой апдейт стандартной темы может откатить ваши изменения и вам придётся делать всё заново. Создание дочерних тем выходит за рамки данной статьи, я поверю, что вы всё делаете правильно. Откройте template.php для вашей (надеюсь, дочерней) темы и найдите функцию
function YOUR_THEME_NAME_preprocess_html(&$variables, $hook) {
В функции preprocess_html можно изменить значение переменной $head до того, как она станет использоваться в дебрях Друпала (главным образом в html.tpl.php при заполнении секции <head>). В Drupal 7 добавилась функция drupal_add_html_head(), которой отныне следует пользоваться для изменения переменной $head. Этот сайт использует myopenid.com в качестве провайдера OpenId (адрес сервера "http://www.myopenid.com/server"), а сам OpenId выглядит как "http://docfish-ru.myopenid.com/", поэтому нам нужно добавить следующие строчки в секцию <head>:
<head> ... <link rel="openid.server" href="http://www.myopenid.com/server" /> <link rel="openid.delegate" href="http://docfish-ru.myopenid.com/" /> </head>
Вот, как это делается:
function YOUR_THEME_NAME_preprocess_html(&$variables, $hook) {
if(drupal_is_front_page()) { //Используйте вместо переменной $is_front, недоступной в template.php
//Создание массива для добавления в секцию HEAD
$element_openid_server = array(
'#tag' => 'link', //HTML тег - <link/>
'#attributes' => array( //Атрибуты тега <link/>
'rel' => 'openid.server',
'href' => 'http://www.myopenid.com/server',
),
);
$element_openid_delegate = array(
'#tag' => 'link',
'#attributes' => array(
'rel' => 'openid.delegate',
'href' => 'http://docfish-ru.myopenid.com/',
),
);
drupal_add_html_head($element_openid_server, 'openid_server');
drupal_add_html_head($element_openid_delegate, 'openid_delegate');
}
}
Обратите внимание на использование функции drupal_is_front_page() - добавление тегов OpenId куда-либо, кроме заглавной страницы не имеет смысла и будет только засорять эфир. Сохраните и загрузите template.php на ваш сайт. Не забудьте обновить реестр тем, чтобы увидеть последние изменения.
