Делегирование 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 на ваш сайт. Не забудьте обновить реестр тем, чтобы увидеть последние изменения.