В апреле прошлого года хабраюзер @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 — модуль для организации внутренней переписки между пользователями сайта
Мне лично не нравится валидатор Drupal'а и я интегрировал jquery.validate
Собственно интегрировать его не проблема.
Скачайте плагин.
Создайте директорию js в директории вашей темы и поместите туда jquery.validate.min.js.
Откройте ВАША_ТЕМА.info и подключите там плагин:
Директория js должна находится по пути /sites/all/themes/ваша_тема/
Создайте файл scripts.js в директории /sites/all/themes/ваша_тема/js/ и пропишите в нём следующее:
Примечание: в этот же файл вы можете вставлять все свои скрипты
Если вы хотите проверять заполнены ли поля при регистрации, сделайте так:
Примечание: #comment-form — это идентификатор формы, которую проверяем. Узнать ID можно посмотрев код страницы.
Всё!
Вставляем этот код в /sites/all/themes/ваша_тема/js/scripts.js
Пример использования:
Или, если ссылка встречается в тексте —
Вставляем этот код в /sites/all/themes/ваша_тема/js/scripts.js
и в template.php нашей темы этот код:
Очень неприятно, когда шаблонов в /sites/all/themes/наша_тема/ становится очень много. Даже до безобразия много. Путаницы конечно не будет, если именно вы делали тему для своего сайта или блога, но большое количество файлов в директории с темой напрягает!
Есть решение!
Создаём в директории с темой папку views и переносим туда все свои шаблоны вида views-view-fields--gallery-page.tpl.php (или подобные).
Переходим в настройки тем (/admin/build/themes/settings) и нажимаем сохранить.
Если возникли проблемы, например, вывод ошибок о том, что что-то не найдено, идём в любое созданное представление и нажимаем Rescan (пересканировать), сохраняем представление. Всё. Теперь более-менее порядок.
Здесь есть информация по поводу организации шаблонов Views.
Удачи!
UPD: krig сделал ценное замечание
конструкцию
меняем на
Модули:
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.