Произвольный <meta>-теги и другие теги в <head>-области HTML страницы

Прислано: andyceo

чт, 06/12/2007 - 14:35

Приветствую, дамы и господа, друпаллерши и друпаллеры!

Искал-искал, искал-искал, ИСКАЛ-ИСКАЛ по разным сайтам и всему интернету, но не нашёл ответ на следующий вопрос.

Какой модуль Друпала позволяет формировать произвольные мета-теги в head-части HTML-страницы? Т.е.:

<html>
  <head>
    <title>Тестовая страница</title>
    <meta name="robots" content="index,follow" />
    <meta name="verify-v1" content="ApEbWaOK3CfB1B0vwz1aXiPM4AyF25WXJcivNFmEKtQ=" />
    <meta name="ПРОИЗВОЛЬНАЯ МЕТА" content="ПРОИЗВОЛЬНЫЙ КОНТЕНТ МЕТЫ">
  </head>
  <body>
ВСЯКАЯ ВСЯЧИНА
  </body>
</html>

Все мы знаем про модуль MetaTags-который-сейчас-NodeWords, но это не совсем то что нам надо.

Здесь на форуме нашёл некоторое решение, оно с использованием CCK и с написанием своего небольшого модуля. А вот здесь один несчастный ещё в 2005 году интересовался подобным вопросом, но ему никто не ответил.

Эта задача встречается очень часто. Например, Центр веб-мастеров Google просит ввести в страницу мету, чтобы подтердить вашу собственность на сайт (или закачать файл с кодом на сайт). Так же поступает Yahoo!

Да и в других случаях эта особенность не помешает. Например, я поставил себе на сервер сервер OpenID (извините за тафтологию). и теперь я могу логиниться на любой сайт поддерживающий openid, указывая в ссылке OpenID такую примерно строку: http://мой_сайт/openid.php Есть возможность указывать её следующим образом: http://мой_сайт

но при этом нужно в head-части страницы указать:

    <link rel="openid.server" href="http://мой_сайт/openid.php">
    <link rel="openid.delegate" href="http://мой_сайт/openid.php">

Это уже не мета. Значит вопрос звучит следующим образом:

Какой модуль позволяет нам вносить любые теги в head-область страницы на Друпале?

Комментарии


Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Применить"
Опубликовано player в чт, 06/12/2007 - 17:33.

зачем модуль? ручками page.tpl.php


Опубликовано andyceo в чт, 06/12/2007 - 17:46.

ага, у меня мультисайтинг.

Т.е. файлы темы одни и те же для каждого сайта. (используется стандартная на первых порах).

Т.е. я не могу прописать мету с одним и тем же именем два раза в один и тот же файл - это раз, а во-вторых, для OpenID хотелось бы, чтобы возможность указать провайдерский скрипт OpenID была только у одного сайта.

Такие вот сложности. Ну что, модуль писать? :)


Опубликовано andyceo в чт, 06/12/2007 - 17:53.

Хотя, конечно, думается такой вариант. Для каждого сайта создать директорию sites/мой_сайт/themes и туда кинуть тему и там её менять. Однако...

Но в-третьих, имхо удобнее иметь модуль, в котором структурировано расположены нужные меты...

В-четвёртых, Google И Yahoo периодически прост код на сайте обновить. каждый раз ручками файлик править - моветон, для такой системы как Друпал! :)

И всё-таки, модуль был бы прикольнее! Как вы считаете?


Опубликовано andyceo в чт, 06/12/2007 - 23:11.

Да. плохие новости. на drupal.org говорят что такой функционал возможно появится к 7 версии. ужосс..


Опубликовано andypost@drupal.org в чт, 06/12/2007 - 23:24.

Модуль nodewords имеет свой API и свои хуки
расширяется элементарно - созданием .inc файлика с парой функций в папке tags
весь функционал реализован именно таким образом - разобраться совсем не сложно - достаточно посмотреть текущую реализацию


Опубликовано edhel в пт, 07/12/2007 - 03:28.

И всё-таки, модуль был бы прикольнее! Как вы считаете?

Не понимаю проблемы. page.tpl.php - вот и весь функционал.


Опубликовано marazmus в пт, 07/12/2007 - 04:09.

Сделайте область (регион) там, где нужно расположить метатеги - оформите ее в template.php и пропишите ее вывод в page.tpl.php.

Затем достаточно будет сделать блок, ввести туда нужные метатеги (не забыв использовать фильтр Full HTML или PHP), и включить этот блок в нужное время в нужном месте - положив блок в свежеоформленную область.

Правда, при этом нужно будет помнить, что в этот блок нельзя пихать "визуальные" теги, но это уже издержки гибкости. Зато мы можем описать (запрограммировать или прописать через пути друпала), когда и где должен появляться этот блок. Еще плюс - блоков можно насоздавать много, для разных случаев.


Опубликовано edhel в пт, 07/12/2007 - 05:58.

У блоков автоматом div с классами проставляется.


Опубликовано Dan в пт, 07/12/2007 - 06:29.

У блоков автоматом div с классами проставляется.

Не автоматом, а темой. Под эти блоки надо будет свои block-...tpl.php писать. Но самый верный вариант, как уже сказал andypost, разобраться с модулем NodeWords


Опубликовано player в пт, 07/12/2007 - 07:51.

короче модуль можно написать если уж на то пошло.


Опубликовано andyceo в сб, 05/01/2008 - 17:37.

Итак, господа!

Ой, простите, дамы и господа!

Прежде всего хочу поблагодарить всех кто откликнулся на мою беду. Вы привели достаточно интересных и достойных способов сделать то, что мне требовалось.

Однако.. Я нашёл несколько другой способ. И думаю, он оптимален! Делюсь с сообществом:

Нам необходимо создать блок типа PHP на странице управления блоками. Типа PHP означает, что нужен блок, в котором в качестве фильтра указывается обработчик PHP.

Вводим в тело блока следующий код:

<?php
drupal_set_html_head
('<meta name="verify-v1" content="fmX1YhAzQ20sKTBkoEAa3W+h432WiBjtbyM78gi0V/o=" />'); //for Google
drupal_set_html_head('<meta name="y_key" content="ec64d4a23b420294" />'); //for Yahoo
drupal_set_html_head('<meta name="yandex-verification" content="6dcc2d578ba99b72" />'); //for Yandex
drupal_set_html_head('<link rel="openid.server" href="http://andyceo.ruware.com/openid.php" />'); //     for OpenID server
drupal_set_html_head('<link rel="openid.delegate" href="http://andyceo.ruware.com/openid.php" />'); // for OpenID server
?>

После чего блок сохраняем.

Затем идём в его настройки и выставляем:

Название:
Оставляем пустым обязательно! (то самое называние, что должно якобы показываться пользователю)

Описание блока:
произвольные меты в head
или любое другое название, что вы хотите

Настройки видимости для пользователя
Пользователи не могут управлять видимостью блока. - ставим галочку тут

Настройки видимости для ролей
anonymous user - - ставим галочку тут

Установки видимости для страницы
Показывать только на перечисленных страницах:
<front>
(т.е. показываем блок только на главной странице)

Сохраняем блок.

В списке блоков нашему блоку выставлем ему :

  • Область сайта, в которой будет якобы отображаться блок - я выставил ему Заголовок, и
  • вес поставил -10.

И после этого наживаем Сохранить блоки.

Итак, если всё сделано правильно, мы увидим введённые теги только на главной странице и только для незарегистрированных пользователей.

Приятным сюрпризом для меня стало то, что данный блок вообще ничего не выводит и поэтому он не обрамляется div'ами. php-код работает через API Друпала, и обеспечивает модификацию

<head><code> до вывода страницы пользователю.
 
В общем, пользуемся и радуемся!
 
<strong>PS:</strong> До чего же гибкая система Drupal! Я когда искал инфу обо всём этом, набрёл на оф. сайте на то как один чел сделал это всё <a href="http://drupal.org/node/112698">через редирект</a>, а точнее через модуль <a href="http://drupal.org/project/path_redirect">path_redirect</a> - он как бы создал проверочный файл (центр вебмастеров Google требует для подтверждения собственности на сайт вставить в него определённую мету, или создать файл в корневой директории на сервере) и редиректился с него на главную страницу своего сайта с кодом 302. Пишет, что сделал он это "элегантно, всё в друпале, никакого фтп, никаких закачек файлов на сервер".
 
<strong>PPS:</strong> На всякий случай полезная инфа:
 
Центр вебмастеров Google: http://www.google.ru/webmasters/
Центр вебмастеров Yahoo: https://siteexplorer.search.yahoo.com/
Центр вебмастеров Yandex: http://webmaster.yandex.ru/
 
PPS: Спасибо <a href="http://drupal.org/node/http://drupal.ru/node/197788comment-648624" title="англ.">этому посту</a> за подсказку.


Опубликовано player в пн, 07/01/2008 - 12:51.

Интересный вариант!


Опубликовано andyceo в пн, 21/07/2008 - 11:35.

Собрал весь этот опыт в статье в блоге в статье Drupal: Как добавить произвольные meta-теги и другие теги в head-область HTML-страницы


Новое на сайте

Ссылки партнёров