Как стать автором
Обновить

Полезные и интересные модули для Drupal 6.xx + Советы и трюки (Часть I)

Время на прочтение6 мин
Количество просмотров4.6K
В апреле прошлого года хабраюзер @7paca написал отличную статью про полезные модули и я решил её продолжить

Модули:



Filefield Paths — позволяет создавать собственные token-шаблоны для загружаемых через filefield-поле файлов. Удобно для упорядочивания фотографий в галереях (замечено, что не работает с Image FUpload).

Uploadpath — разрешает использовать token-шаблоны для хранения файлов в директориях или субдиректориях.

Hide Submit — позволяет прятать кнопку «Submit» после нажатия. Предохраняет от повторной отправки данных.

Uploadify — мультизагрузка файлов. Модуль ещё в разработке, но уже многие начинают им пользоваться.

WordPress Comments — Для тех, кто привык к форме комментирования а-ля Wordpress

Remember me — модуль добавляет к форме авторизации чекбокс «запомнить меня»

Printer, e-mail and PDF versions — модуль позволяет распечатывать страницу, отправлять по почте и конвертировать в формат PDF

One page profile — никаких вкладок в профайле пользователя, всё размещается на одной странице. Очень удобно

Contact attach — даёт возможность пользователям прикреплять к письму, отправляемого через форму обратной связи, файлы (аттач).

Flag — позволяет отмечать материалы, например, «Добавить в закладки». Есть вывод представления на страницу пользователя. Отлично настраивается под любые нужды

XML sitemap — генерация sitemap.

Comment Notify — удобная подписка на комментарии

LoginToboggan — очень удобный модуль для организации авторизации как с помощью логина, так и с помощью email'а. Куча возможностей.

Scheduler с помощью этого планировщика задач можно легко публиковать или снимать с публикации материалы на определённую дату.

Imagecache Actions — модуль позволяет назначать пресеты загружаемым картинкам, например, наложение водяного знака, наложение текста, подкладка фона и т.п.

Privatemsg — модуль для организации внутренней переписки между пользователями сайта

Несколько советов (использовать их в своих проектах или нет — ваше право):


Проверка заполнения полей с jQuery


Мне лично не нравится валидатор Drupal'а и я интегрировал jquery.validate

Собственно интегрировать его не проблема.
Скачайте плагин.
Создайте директорию js в директории вашей темы и поместите туда jquery.validate.min.js.

Откройте ВАША_ТЕМА.info и подключите там плагин:
scripts[] = js/jquery.validate.min.js

* This source code was highlighted with Source Code Highlighter.


Директория js должна находится по пути /sites/all/themes/ваша_тема/

Создайте файл scripts.js в директории /sites/all/themes/ваша_тема/js/ и пропишите в нём следующее:

  $().ready(function() {
    $("#comment-form").validate();
  });
</pre>


* This source code was highlighted with Source Code Highlighter.


Примечание: в этот же файл вы можете вставлять все свои скрипты

Если вы хотите проверять заполнены ли поля при регистрации, сделайте так:

  $().ready(function() {
    $("#comment-form, #user-register").validate();
  });  


* This source code was highlighted with Source Code Highlighter.


Примечание: #comment-form — это идентификатор формы, которую проверяем. Узнать ID можно посмотрев код страницы.

Всё!

Решение target=_blank


Вставляем этот код в /sites/all/themes/ваша_тема/js/scripts.js

  $(function(){
    $('._blank a').click(function(){
      window.open(this.href);
      return false;
    });
  });


* This source code was highlighted with Source Code Highlighter.


Пример использования:

<span class="_blank><a href="http://habrahabr.ru">Habrahabr</a></span>

* This source code was highlighted with Source Code Highlighter.


Или, если ссылка встречается в тексте —

<div class="content _blank">
<p>
<a href="http://www.lipsum.com/">Lorem ipsum</a> dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. <a href="http://www.lipsum.com/">Excepteur</a> sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
</p>
</div>


* This source code was highlighted with Source Code Highlighter.


Добавление тега span в primary/secondary_links


Вставляем этот код в /sites/all/themes/ваша_тема/js/scripts.js

  // Wrap span tags around the anchor text in the primary menu.
$(document).ready(function(){
 $("#primary li a")
 .wrapInner("<span>" + "</span>");
});


* This source code was highlighted with Source Code Highlighter.


и в template.php нашей темы этот код:

/**
* Override the theme_links function
*
* We use this to insert <span></span> tags around anchor text in the
* primary and secondary links. We need these to support Internet Explorer
* when building sliding door tabs with hover effects.
*/
function ВАША_ТЕМА_links($links, $attributes = array('class' => 'links')) {
 $output = '';
 if (count($links) > 0) {
  $output = '<ul'. drupal_attributes($attributes) .'>';

  $num_links = count($links);
  $i = 1;

  foreach ($links as $key => $link) {
   $class = $key;

   // Add first, last and active classes to the list of links to help out themers.
   if ($i == 1) {
    $class .= ' first';
   }
   if ($i == $num_links) {
    $class .= ' last';
   }
   if (isset($link['href']) && ($link['href'] == $_GET['q'] || ($link['href'] == '<front>' && drupal_is_front_page()))) {
    $class .= ' active';
   }

   $output .= '<li'. drupal_attributes(array('class' => $class)) .'>';

   // wrap <span>'s around the anchor text
   if (isset($link['href'])) {
    $link['title'] = '<span>' . check_plain($link['title']) . '</span>';
    $link['html'] = TRUE;  
    // Pass in $link as $options, they share the same keys.
    $output .= l($link['title'], $link['href'], $link);   
   }
   else if (!empty($link['title'])) {
    // Some links are actually not links, but we wrap these in <span> for adding title and class attributes
    if (empty($link['html'])) {
     $link['title'] = check_plain($link['title']);
    }
    $span_attributes = '';
    if (isset($link['attributes'])) {
     $span_attributes = drupal_attributes($link['attributes']);
    }
    $output .= '<span'. $span_attributes .'>'. $link['title'] .'</span>';
   }

   $i++;
   $output .= "</li>\n";
  }

  $output .= '</ul>';
 }
 return $output;
}

* This source code was highlighted with Source Code Highlighter.


Упорядочиваем шаблоны Views


Очень неприятно, когда шаблонов в /sites/all/themes/наша_тема/ становится очень много. Даже до безобразия много. Путаницы конечно не будет, если именно вы делали тему для своего сайта или блога, но большое количество файлов в директории с темой напрягает!

Есть решение!

Создаём в директории с темой папку views и переносим туда все свои шаблоны вида views-view-fields--gallery-page.tpl.php (или подобные).

Переходим в настройки тем (/admin/build/themes/settings) и нажимаем сохранить.

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

Удачи!

UPD: krig сделал ценное замечание

конструкцию
$(document).ready(function(){
// do some fancy stuff
});


* This source code was highlighted with Source Code Highlighter.

меняем на
Drupal.behaviors.myModuleBehavior = function (context) {
//do some fancy stuff
};


* This source code was highlighted with Source Code Highlighter.


Часть II

Теги:
Хабы:
Всего голосов 63: ↑56 и ↓7+49
Комментарии22

Публикации

Истории

Ближайшие события

15 – 16 ноября
IT-конференция Merge Skolkovo
Москва
22 – 24 ноября
Хакатон «AgroCode Hack Genetics'24»
Онлайн
28 ноября
Конференция «TechRec: ITHR CAMPUS»
МоскваОнлайн
25 – 26 апреля
IT-конференция Merge Tatarstan 2025
Казань