Делегирование OpenId для сайта на Drupal 7.
Прочитав про получение OpenId для своего сайта вы можете спросить "А как же мне добавить те две строчки в секцию <head> сайта на Друпале?" Не заморачивайтесь установкой дополнительных модулей - у них нулевые шансы успевать за апдейтами версий Друпала. Читайте дальше, это гораздо проще сделать самостоятельно. Я буду рассказывать про Drupal 7 в примерах (поскольку этот сайт построен на Drupal 7 в данный момент), но похожий подход можно с лёгкостью применить к другой версии Друпала, потратив несколько минут на поиск соответствующей функции.
В первую очередь, найдите файл template.php для темы вашего сайта. Хорошей практикой будет сделать дочернюю тему вместо редактирования стандартной потому, что любой апдейт стандартной темы может откатить ваши изменения и вам придётся делать всё заново. Создание дочерних тем выходит за рамки данной статьи, я поверю, что вы всё делаете правильно. Откройте template.php для вашей (надеюсь, дочерней) темы и найдите функцию
1 | 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>:
1 2 3 4 5 | < head > ... </ head > |
Вот, как это делается:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | 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' , ), ); $element_openid_delegate = array ( '#tag' => 'link' , '#attributes' => array ( 'rel' => 'openid.delegate' , ), ); 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 на ваш сайт. Не забудьте обновить реестр тем, чтобы увидеть последние изменения.