Drupal 5.x

Модули для Друпал версии 5.x
Опубликовано 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 комментария
Опубликовано Гость
Задача: 

Нужно вывести (внедрить) форму создания ноды на странице, которая не совпадает со стандартным 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 и, если вы специально не указали другое, то будет использовано именно это значение. Чтобы это изменить есть, как всегда, несколько путей.

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

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

Модуль позволяет массово менять параметры нод, а именно:

  • Опубликовать/Снять с публикации
  • Поместить на главную/Убрать с главной
  • Закрепить в списках/Отменить закрепление в спискахК
  • Комментарии: Запретить/Разрешить только чтение/Разрешить чтение и запись.
Опубликовано VladSavitsky
Задача: 

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

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

Отключение комментирования для новых нод

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

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

Бывают ситуации, когда Drupal-сайт, который раньше работал со включёнными "чистыми ссылками" перестаёт работать и весь контент недоступен. Это может случиться после:

  • Переноса базы данных на другой сервер,
  • Восстановления копии с сервера на локальной машине,
  • Восстановление из резервной копии (бекапа),
  • "Исчезновения" файла .htaccess,
  • Персонал хостера или вы сами делает какие-то изменения в настройках веб-сервера.

Нужно отключить использование "чистых ссылок" на Drupal-сайте.

Варианты:

  • Доступ по "не-чистым" ссылкам на сайт
  • Использовать SQL-сниппет для отключения "чистых ссылок"
  • Отключить "Чистые ссылки" в settings.php

Доступ по "не-чистым" ссылкам на сайт

  1. Откройте http://example.com/?q=user
  2. Залогиньтесь админом (ссылки всё ещё не будут работать)
  3. Откройте http://example.com/?q=admin/settings/clean-urls (DRUPAL 5,6) и отключите "Чистые ссылки" на странице настроек.

Ссылки должны стать рабочими теперь.

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

Модуль работает корректно в мультисайтинге, с модулями Shared SingOn и Login Toggoban.
Позволяет указать срок хранения сессии пользователя.
Требует отключить срок хранения кукис в settings.php

Описание с сайта: 

The Persistent Login module provides the familiar "Remember Me" option in the user login form.

The module's settings allow the administrator to:

* Control how long user logins are remembered.
* Control how many different persistent logins are remembered per user.
* Control which pages a remembered user can or cannot access without explicitly logging in with a username and password (e.g. you cannot edit your account or change your password with just a persistent login).

Each user's 'my account' view tab gives them option of explicitly clearing all of his/her remembered logins.

Persistent Login is independent of the PHP session settings and is more secure (and user-friendly) than simply setting a long PHP session lifetime. For a detailed discussion of the design and security of Persistent Login, see Improved Persistent Login Cookie Best Practice.

Persistent Login is compatible with: Login Toboggan.

Maintained by markus_petrux.

Опубликовано VladSavitsky

Модуль не заработал вместе с Login Toggoban и Shared SignOn. Происходили постоянные редиректы с одного домена на другой.
Альтернатива, которая работает с этими модулями - Persistent Login

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

Описание с сайта: 

Fostering a relationship of trust with your visitors is essential when you aim to collect personal information and provide a service with which they feel secure. With this familiar little feature added to your installation you will portray the message of making every effort to address your users' security concerns and put them at ease. It shows that you stop at nothing to go the extra mile and allow them the peace of mind, to access your site with confidence from anywhere in the world knowing that you have taken every precaution to ensure their identity is safe.

Did you know that the default Drupal behaviour is to remember your session for the extent of 3 weeks and 2 days. This entails that if a user abandons a workstation, closes the browser window, experiences a power failure or any other unforeseen circumstance where they refrain from logging out, that their session will stay active on the server. When, at a later stage, they or anyone else for that matter, returns to your site using the same browser within the session cookie lifetime they will automatically be logged in without being prompted for authentication credentials. Can you imagine the colossal risk this places on users accessing your service from public terminals or shared workstations, with no means to their disposal of securing themselves against this threat.

If this concerns you, like it does myself and many others, you will also want a means to manage session lifetime. If you are looking for a way to configure quicker session expiry or want to give your users the choice not to be remembered at all, then you need search no morel. Download the latest supported release for D5.x or D6.x now. Extract the tarball archive into your modules directory and enable the module via the modules page. Administer => Site building => Modules from the menu. This will ensure a "Remember me" checkbox added below the password field on one and every log in form. Immediately improving security and gaining added confidence from visitors whom are well accustomed to this feature from other online facilities.

My promise to you:
Enabling this feature for your users will gain confidence in your site, similarly I want you to be confident in this product. Sessions are a crucial part of a web application and one of the most difficult to debug when things go wrong. The core focus of this project is to leave the smallest footprint on the normal Drupal behaviour while enabling this frequently requested use case in the simplest way possible. This module would love to hang around idle, doing nothing all day, at its happiest with all settings reset and left in their default state. This way you can be rest assured that its business as usual and the only change will be a "Remember me" checkbox added to log in forms. Nothing else, nada, Drupal just the way we know and love it...

I will also commit, where time allows, to follow the issue queue and find solutions for bugs, fixes for incompatibilities and consider new features in the scope of this project. You are welcome to leave your comments, remarks, rants, raves and praises but please be patient... all good things will come.

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

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

В файле template.php текущей темы для каждого сайта, где нужны общие аватары для общих пользователей, вставить функцию:

Drupal 6

function phptemplate_user_picture($account) {
  if (variable_get('user_pictures', 0)) {
    if ($account->picture && file_exists($account->picture)) {
      $picture = $GLOBALS['base_url'] .'/'. $account->picture;
    }
    else if (variable_get('user_picture_default', '')) {
      $picture = variable_get('user_picture_default', '');
    }
    if (isset($picture)) {

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

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

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

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

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