Drupal 6.x

Модули для Друпал версии 6.x
Опубликовано VladSavitsky
Задача: 

Нужно создать программно CCK-поле. Например, может потребоваться создать CCK-поле из hook_update_N.

Решение:
В отличии от предыдущих версий ССК в версии под 6ку манипулирование полями из кода стало проще.

  • Сначала нужно создать поле с помощью пользовательского интерфейса CCK
  • Далее нужно использовать PHP-функцию var_export(), чтобы получить дамп поля ноды в виде массива:
    var_export(content_fields('field_ИМЯ_ПОЛЯ', 'ТИП_КОНТЕНТА'));

    См. API: http://drupalcontrib.org/api/function/content_fields

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

 

Читать дальше...
Авторы решений:
Темы:
Версия Drupal:
Модули:
| Добавить комментарий
Опубликовано VladSavitsky
Задача: 

При переносе сайта с одного движка на другой URL страниц меняется и возникает необходимость сохранить старые URL, потому что на них есть ссылки с других сайтов и поисковики тоже хранят (какое-то время) в индексе именно старые URL. Итак рецепт о том, как сохранить старые URL.

Решение
Старые URL уже не существуют, но могут использоваться. Нам нужно сделать 301й редирект со старого URL на новый.

Варианты

  • Редирект со старого URL на новый URL в файле .htaccess
  • Редирект со старого URL на новый URL с помощью модулей Pathauto и Global Redirect

Редирект со старого URL на новый URL в файле .htaccess

Самый простой вариант.
В файле .htaccess (в корне сайта) после:

<IfModule mod_rewrite.c>
  RewriteEngine on

добавить:
 

Читать дальше...
Опубликовано VladSavitsky
Задача: 

Нужно создать вид (представление) для Views программно, то есть в своем модуле.

Решение
Чтобы задать вид с помощью кода для Views 2 в Drupal 6 нужно:

  1. Создать вид, используя визуальный интерфейс Viws, как это обычно делается
  2. Сделать экспорт этого вида и получить код
  3. Заменить первую строку ($view = new view;) на $view = views_new_view();
  4. Далее можно показать, выполнить, вставить и всё, чего пожелаете (то есть $view->execute_display('default', array())

Ниже пример, который использует простой Вид, который показывает Заголовки всех опубликованных нод:

//создать новый вид

Читать дальше...
Авторы решений:
Темы:
Версия Drupal:
Модули:
| Добавить комментарий
Опубликовано VladSavitsky
Задача: 

Нужно сделать так, чтобы при смене (переключении) языка сайта ссылка на главную меняла свой якорь (текст). Например, "Главная" для русского, "Home" - для английского.

Решение

Авторы решений:
Версия Drupal:
Модули:
| Добавить комментарий
Опубликовано VladSavitsky

Задача:

Нужно в форме поиска вставить в поле текст "Поиск по сайту", который исчезает при клике мышью, то есть, когда курсор попрадет в это поле и поле получает фокус.

Читать дальше...
Опубликовано VladSavitsky

Задача
Табы и вкладкиНужно на страницу ноды, где по умолчанию есть табы "Смотреть" ("View") и "Редактировать" ("Edit") добавить произвольный таб.

Решение

Добавление таба в Drupal 6

Таб для всех нод и без ограничения доступа:

$items['node/%node/new_tab'] = array(
    'title' => 'New Tab',
    'page callback' => 'mycallback',
    'page arguments' => array(1),
    'access callback'   => TRUE,

Читать дальше...
Авторы решений:
Версия Drupal:
| 3 комментария
Опубликовано VladSavitsky

Задача:
Нужно определить тип ноды, которая отображается. В форме редактирования нет об этом информации.

Читать дальше...
Опубликовано Гость
Задача: 

Нужно вывести (внедрить) форму создания ноды на странице, которая не совпадает со стандартным URL для создания нод (node/add/[тип нод]). То есть на произвольной странице показать ноду создания контента одного из типов. При этом нужно сохранить весь функционал этой формы - AHAH, валидацию и корректное сохранение.

Иногда бывает нужно встроить (embed) форму редактирования ноды.

Drupal 5

Для 5й версии можно использовать модуль subform element (http://drupal.org/project/subform_element), который позволяет это легко сделать.

Drupal 6

В 6й версии Drupal формы стали сложнее (активно используется AHAH), поэтому при при неаккуратном использовании формы могут перестать работать. Создадим модуль, который будет показывать внедрённую форму на произвольной странице.
Чтобы не нарушить работу AHAH нужно просто не менять структуру массива $form.

Опубликовано VladSavitsky
Задача: 

Нужно отключить возможность менять заголовок комментария при создании и не показывать заголовок на странице ноды в списке всех комментариев.

Варианты:

  • Использовать стандартные возможности Drupal
  • Использовать модуль Re: Comment subjects
  • Скрыть заголовки средствами CSS
  • Использовать модуль "Comment automatic title"
  • Использовать хук hook_comment()

Использовать хук hook_comment()

См. http://api.drupal.ru/api/function/hook_comment/6
Теория:

  • Нужно перехватить вывод формы комментария и отключить вывод заголовка.
  • Читать дальше...
Опубликовано VladSavitsky
Задача: 

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

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

Обратите внимание: Вес может быть отрицательным. Отрицательный вес считается более тяжёлым и срабатывает раньше. Положительный срабатывает позже (и после того, как сработает вес по умолчанию - нулевой). Если задан одинаковый вес, то используется сортировка по алфавиту.

Читать дальше...
 
 
 

RSS-лента новостей

Dries Buytaert по-русски
]]>Русский поиск Drupal]]>

Перенос сайта из Joomla в Drupal
Перенос сайта из WordPress в Drupal

]]> Drupal - это бесплатная система управления контентом с открытым исходным кодом ]]>