Произвольный <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-область страницы на Друпале?
- Блог andyceo
- Для комментирования войдите или зарегистрируйтесь
зачем модуль? ручками page.tpl.php
- Для комментирования войдите или зарегистрируйтесь
ага, у меня мультисайтинг.
Т.е. файлы темы одни и те же для каждого сайта. (используется стандартная на первых порах).
Т.е. я не могу прописать мету с одним и тем же именем два раза в один и тот же файл - это раз, а во-вторых, для OpenID хотелось бы, чтобы возможность указать провайдерский скрипт OpenID была только у одного сайта.
Такие вот сложности. Ну что, модуль писать? :)
- Для комментирования войдите или зарегистрируйтесь
Хотя, конечно, думается такой вариант. Для каждого сайта создать директорию sites/мой_сайт/themes и туда кинуть тему и там её менять. Однако...
Но в-третьих, имхо удобнее иметь модуль, в котором структурировано расположены нужные меты...
В-четвёртых, Google И Yahoo периодически прост код на сайте обновить. каждый раз ручками файлик править - моветон, для такой системы как Друпал! :)
И всё-таки, модуль был бы прикольнее! Как вы считаете?
- Для комментирования войдите или зарегистрируйтесь
Да. плохие новости. на drupal.org говорят что такой функционал возможно появится к 7 версии. ужосс..
- Для комментирования войдите или зарегистрируйтесь
Модуль nodewords имеет свой API и свои хуки
расширяется элементарно - созданием .inc файлика с парой функций в папке tags
весь функционал реализован именно таким образом - разобраться совсем не сложно - достаточно посмотреть текущую реализацию
- Для комментирования войдите или зарегистрируйтесь
И всё-таки, модуль был бы прикольнее! Как вы считаете?
Не понимаю проблемы. page.tpl.php - вот и весь функционал.
- Для комментирования войдите или зарегистрируйтесь
Сделайте область (регион) там, где нужно расположить метатеги - оформите ее в template.php и пропишите ее вывод в page.tpl.php.
Затем достаточно будет сделать блок, ввести туда нужные метатеги (не забыв использовать фильтр Full HTML или PHP), и включить этот блок в нужное время в нужном месте - положив блок в свежеоформленную область.
Правда, при этом нужно будет помнить, что в этот блок нельзя пихать "визуальные" теги, но это уже издержки гибкости. Зато мы можем описать (запрограммировать или прописать через пути друпала), когда и где должен появляться этот блок. Еще плюс - блоков можно насоздавать много, для разных случаев.
- Для комментирования войдите или зарегистрируйтесь
У блоков автоматом div с классами проставляется.
- Для комментирования войдите или зарегистрируйтесь
У блоков автоматом div с классами проставляется.
Не автоматом, а темой. Под эти блоки надо будет свои block-...tpl.php писать. Но самый верный вариант, как уже сказал andypost, разобраться с модулем NodeWords
- Для комментирования войдите или зарегистрируйтесь
короче модуль можно написать если уж на то пошло.
- Для комментирования войдите или зарегистрируйтесь
Итак, господа!
Ой, простите, дамы и господа!
Прежде всего хочу поблагодарить всех кто откликнулся на мою беду. Вы привели достаточно интересных и достойных способов сделать то, что мне требовалось.
Однако.. Я нашёл несколько другой способ. И думаю, он оптимален! Делюсь с сообществом:
Нам необходимо создать блок типа 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> за подсказку.
- Для комментирования войдите или зарегистрируйтесь
Интересный вариант!
- Для комментирования войдите или зарегистрируйтесь
Собрал весь этот опыт в статье в блоге в статье Drupal: Как добавить произвольные meta-теги и другие теги в head-область HTML-страницы
- Для комментирования войдите или зарегистрируйтесь






Комментарии