Блог пользователя - VladSavitsky

Чиним ссылку OpenID на форме входа

5 июня 2008 в 13:57

В друпал6 модуль openid входит в ядро.
На форме входа появляется доп. ссылка - вы щёлкаете и, вместо логина/пароля, видите поле для ввода OpenID.
Всё это делается без перезагрузки страницы - AJAX.

Но ссылка, которая используется (перехода по ней нет) имеет кривой вид типа: drupalcookbook.ru/%23
Поисковики как-то её нашли (в блоке нашли - страница user/login запрещена в robots.txt) и ругаются, что она не работает.

Чинится это так:
Открыть файл /modules/openid/openid.module
Найти функцию function openid_form_alter(&$form, $form_state, $form_id)
В ней изменить код:
<?php
// 'data' => l(t('Log in using OpenID'), '#'),
//Start

Анализ производительности базы данных MySQL

30 мая 2008 в 2:41

Задача

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

Решение

Начнём с простых методов анализа.

Варианты

  • Стандартные возможности Друпал
  • Скрипт "tuning primer" (Matt Mongomery)
  • Включение полного лога запросов

Включение полного лога запросов

Включение полного лога в my.cnf:

Интеграция модулей nodeteaser и meta tags (nodewords)

29 мая 2008 в 20:14

При одновременной работе этих модулей получается, что автозаполнение мета-тега description анонсом не происходит.
На друпал.орг нашёл упоминания о том, что и в других случаях такое бывает.
Решением стала правка кода модуля с самой благородной целью - подружить оба модуля и получить искомый мета-тег.

В /sites/all/modules/nodewords/metatags/description.inc код функции нужно изменить:
<?php
function nodewords_description_prepare($type, $ids, $value, $settings) {
if ((!isset($value) || empty($value)) && $settings['use_teaser'] && count($ids) == 1) {
switch ($type) {
case 'node':
$node = node_load($ids[0]);
if ($node && node_access('view', $node)) {

Удалить содержание из документа типа book

21 мая 2008 в 0:46

Задача

При просмотре документа типа book снизу выводится навигация по книге - дочерние документы, а также предыдущий, следующий документы и "вверх" на один уровень.
Нужно удалить эту навигацию.

Решение

Друпал 6

Варианты:

  • Исправление шаблона навигации модуля book
  • Вариант, который будет работать после обновления версии Друпал.

Исправление шаблона навигации модуля book

Вывести развернутое содержание книг в модуле Book в Друпал 6

20 мая 2008 в 21:55

После изучения API Drupal 6 написал такое:

<?php
//http://api.drupal.org/api/function/book_block/6
function book_toc_recursive() {
  $book_menus = array();
  $pseudo_tree = array(0 => array('below' => FALSE));
  foreach (book_get_books() as $book_id => $book) {
    $menu_item=menu_tree_all_data($book['menu_name'], $book);
    $book_menus[$book_id] = menu_tree_output($menu_item);
  }
  return theme('book_all_books_block', $book_menus);
}
echo book_toc_recursive();
?>

Код выводит таки оглавление, но до 2го уровня вложенности.
А мне нужно все уровни. Чтобы было как настоящее содержание в книге.
Подскажите как это сделать.

Вот фото того, что есть на данный момент:

Изменения в модуле Book в Друпал 6

20 мая 2008 в 0:51

Задача

Найти и понять изменения в модуле Book, чтобы можно было адаптировать сниппеты и модули, которые взаимодействуют с модулем Book, для работы в Друпал 6.

Анализ модуля Book прошёл успешно!

Странные пути в Друпал 6

26 апреля 2008 в 0:50

Просматирвал статистику обращений к серверу и обнаружил вызов такого пути:
http://example.com/book/js/form
Ответ сервера:
{ "status": false, "data": "" }

Поискав я нашёл информацию, что это ответ вызова AJAX-функции модуля book.
В 5й версии Друпала этого нет - такой путь просто выдаёт список книг на сайте.
Вопрос такой:
Нормально ли это? Не вызовет ли это каких-то проблем (XSS или с поисковиками)?...

Работает ли поиск в Друпал для комментариев?

23 апреля 2008 в 22:21

Такое подозрение, что стандартный модуль Search не ищет в комментариях.
Это правда?
Может быть поиск в комментариях нужно как-то настроить?

Если не работает поиск, то нужно ставить модуль, который переводит комментарии в ноды, чтобы по ним поиск заработал...

Друпал - победитель Webware 100

23 апреля 2008 в 10:18

Друпал - победитель Webware 100Второй раз подряд Друпал получает награду Webware 100

Награды Webware даются лучшим сайтам, сервисам и приложениям Сети сегодня.

Учитывая, что более чем 5000 продуктов были номинированы на эту награду и около 2х миллионов пользователей голосовали, чтобы определить 100 лучших продуктов - эта награда является огромным доказательством могущества сообщества Друпал.

Сообщество Друпал стремительно растет!

Переадресация при переносе сайта из поддомена в корень сервера

18 апреля 2008 в 16:24

Задача

Сайт был доступен в поддомене и нужно переместить его в корень сервера.
Или нужно сделать канонизацию доменного имени (сайт с "www" должен указывать на сайт без "www")

Решение

В файле .htaccess (файл находится в корне сайта) после:

<IfModule mod_rewrite.c>
  RewriteEngine on

добавляем:

  RewriteCond %{HTTP_HOST} ^www\.example\.com
  RewriteRule ^(.*)$ http://example.com/$1 [R=301,L]

Как работает такая переадресация:

Преимущества:

Переезд сайта из подпапки в корень сервера с точки зрения поисковиков.

8 апреля 2008 в 17:11

Озадачился я вот каким вопросом.
Сайт долгое время был в подпапке и поисковики успели его проиндексировать.
Затем он переехал в корень сервера, а все прежние (проиндексированные) ссылки стали нерабочими.
Это не хорошо. Кроме того, кто-то уже мог и ссылку на них поставить....

Вот какое я нашёл решение:
В файле .htaccess (что в корне сайта) пишем до всех правил:

  #From subfolder to root. Start
  RewriteCond %{REQUEST_URI} ^/subfolder
  RewriteRule ^subfolder/(.*)$ http://site.ru/$1 [R=301,L]
  #From subfolder to root. End

Преимущества:

Гуру Друпала :-)

28 марта 2008 в 16:16

Вопрос гуру

Я сделал только перевод. Оригинал картинки: http://www.robcottingham.ca/20070606/doodle-drupal-guru/
Что самое интересное - "в каждой шутке есть доля шутки" ... а остальное - правда!
Гуру всех стран - объединяйтесь!

Делаем резервную копию базы данных

25 марта 2008 в 17:33

Чтобы в будущем можно было восстановить базу данных, которая была утрачена нужно сделать резервную копию базы данных (дамп). Для этого можно использовать:

  • автоматизированные инструменты, которые предоставляет ваш хостер,
  • бесплатный скрипт phpMyAdmin, который позволяет управлять базой данных, а также создать дамп базы данных и скачать его
  • бесплатный скрипт Sypex Dumper Lite, который позволит вам создавать резервные копии любых размеров и восстанавливать их.

Список терминов определённого словаря с иерархией (+ количество документов)

20 марта 2008 в 1:52

Пример иерархииЭтот код выводит иерархический (!) список терминов определённого словаря.
Каждый термин является ссылкой на страницу с анонсами статей, принадлежащих этому термину.
Рядом с каждым термином выводится количество документов.
Если документов нет, то нуль не выводится и название термина не является ссылкой.

Ускорение выдачи JS сервером.

19 марта 2008 в 15:47

В результате поисков в интернете и экспериментов доказано, что такая конфигурация работает:

В файле .htaccess (в корне сайта) сразу после

<IfModule mod_rewrite.c>
  RewriteEngine on

добавил:

    RewriteEngine on
    RewriteRule ^(.*\.js\.gz)$ - [L]
    RewriteCond %{HTTP:Accept-Encoding} gzip
    RewriteCond %{REQUEST_FILENAME}.gz -f
    RewriteRule ^(.*)$ $1.gz

Упаковал *.js файл в *.js.gz и закачал на сервер в ту же папку, где был оригинальный JS-файл.

Открыл браузер загрузил страницу и посмотрел заголовки запроса:

  • Response Headers
  • Date Wed, 19 Mar 2008 12:32:09 GMT
  • Server Apache
  • Cache-Control max-age=1209600

Перевод Legal. У каждого сайта должны быть свои правила!

24 февраля 2008 в 18:03

Модуль позволяет создать "Правила сайта" и требовать при регистрации согласиться с этимим правилами.
Из приятных мелочей есть функция обновления этих правил и ознакомления тех, кто уже согласился с изменениями. Это действительно удобно!

Страница модуля: http://drupal.org/project/legal
Версия: 5.x-1.3
Перевод на друпал.орг: http://drupal.org/node/226087

Особенности перевода:

Список самых нужных пунктов админ-меню в одном блоке

24 февраля 2008 в 17:35

Надело лазить по большому меню - решил самые нужные пункты вынести в отдельный блок. Оказалось, что их не так уж и много. Создаём блок, вставляем код приведённый ниже, ставим формат ввода РНР и сохраняем. Теперь настройте где этот блок должен показываться. Вот и всё!

<ul>
  <li><?php echo l("Блоки","admin/build/block");?></li>
  <li><?php echo l("Модули","admin/build/modules");?></li>
  <li><?php echo l("Меню","admin/build/menu");?></li>
  <li><?php echo l("Контроль доступа","admin/user/access");?></li>
  <li><?php echo l("Роли","admin/user/roles");?></li>
  <li><?php echo l("Импорт перевода","admin/settings/locale/language/import");?></
li>

Сниппет: выводим все пункты подменю "Создать" в отдельном блоке

22 февраля 2008 в 0:41

Задача:
В меню "Навигация" есть подпункт "Создать" (или "Создать материал").
Нужно в отдельном блоке вывести его содержимое.

Решение:
1. Можно создать блок, где вручную прописать ссылки на нужные страницы. Будет быстро работать, но при добавлении новых пунктов нужно будет руками вносить изменения каждый раз. Не подходит!