Создание модуля под Drupal 7. Часть 2

от автора

Предисловие

В первой части я показал как создавать модуль под Drupal 7. И как я и обещал, теперь покажу как добавлять к модулям js-файлы (использовать в них jQuery) и как осуществляется его локализация.

Добавление js-файлов

Для начала создадим в папке с модулем любой js-файл. Я назвал его main.js.

Далее добавляем в файл rss_feeds.info строку:

scripts[] = main.js

В своем модуле я использовал jQuery. В main.js я реализую функции для кнопки «Вверх». Для того, чтобы не было конфликтов, необходимо написать следующее:

(function ($) {  })(jQuery); 

И в этой конструкции пишем код:

$.fn.extend({         topMouseover: function(self) {             this.on('mouseover',function() {                 self.opacity.stop().animate({opacity:"1"},300);                 self.button.stop().animate({opacity:"1"},300);             });         },         topMouseout: function(self) {             this.on('mouseout',function() {                 self.opacity.stop().animate({opacity:"0"},300);                 self.button.stop().animate({opacity:"0.4"},300);             });         },         wScroll: function(g) {             if(g == 0) this.removeClass("no-count");             if(!this.hasClass("no-count")){                 if(g > 500 && this.is(":hidden")){                     this.addClass("visible");                     this.css("cursor","pointer");                     this.fadeIn(500);                     this.click(function(){                         $("body, html").animate({scrollTop:0},600);                         this.fadeOut(300);                         this.addClass("no-count");                     });                 }                 if(g < 200 && this.hasClass("visible")){                     this.removeClass("visible");                     this.fadeOut(300);                 }             }else{                 this.unbind("click");             }         }     });      function toTopBtn(toTop, opacity, btn) {         this.toTopBtn = $(toTop);         this.opacity = $(opacity);         this.button = $(btn);         this.windowScroll();         this._init();         return this;     }      toTopBtn.prototype = {         _init: function () {             var self = this;             this.toTopBtn.topMouseover(self);             this.toTopBtn.topMouseout(self);         },         windowScroll: function() {             var g = $(window).scrollTop();             this.toTopBtn.wScroll(g);         }     }     $(document).ready(function() {         upButton = new toTopBtn(".toTopWrapper",".toTopOpacity",".toTopBtn");          $(window).scroll(function(){             upButton.windowScroll();         });     }); 

Но по умолчанию в Drupal 7 идет jQuery 1.4.4. Функция .on() в ней не реализована. Для обновления jQuery скачайте модуль Query Update. В нем все интуитивно понятно. В настройках выбираем нужную версию (я выбрал 1.8).

Для того, чтобы кнопка отображалась, изменяем файл rssfeeds_content.tpl.php:

<div class="toTopWrapper"> 	<div class="toTopOpacity"></div> 	<div class="toTopPanel" title="Up"> 		<div class="toTopBtn"> 			<span class="arrow">↑</span> <span class="label">up</span> 		</div> 	</div> </div> <br><br> <?php foreach ($items->channel->item as $item): ?> 	<span class="title"><a href="<?php echo $item->link; ?>"><?php echo $item->title; ?></a></span><br><br> 	<?php echo $item->description; ?><br><br><?php echo $item->pubDate; ?> 	<hr><br><br> <?php endforeach; ?> 

… и добавляем стили в main.css:

/* "TO UP" BUTTON */  .toTopWrapper { 	position:fixed; 	top:0; 	bottom:0; 	left:0; 	width:7%; 	display:none; 	background-color: #87ceeb; 	opacity: 0.3; }  .toTopOpacity { 	position:fixed; 	top:0; 	bottom:0; 	left:0; 	width:7%; 	background-color: #87ceeb; 	opacity: 0.1; } .toTopWrapper .toTopPanel { 	width:100%; 	height:100%; 	font-size:13px; 	color: black; 	padding-top:10px; 	position:relative; } .toTopWrapper .toTopBtn { 	text-align:left; 	line-height:15px; 	margin-left: 30%; 	font-family:tahoma,arial,verdana,sans-serif; 	font-weight:bold; 	opacity: 0.2; } .toTopWrapper .toTopBtn .arrow{ 	font-size:14px; 	font-weight:bold; 	vertical-align:middle; }  /* END OF "TO UP" BUTTON */ 

Теперь на странице отображения контента RSS-ленты будет появляться кнопка «Вверх».

Локализация модуля

Все переводы модуля хранятся в папке translations и состоят как минимум из двух файлов — modulename.pot (это шаблон перевода) и modulename.po (непосредственно сам перевод).

Чтобы генерировать эти файлы используется модуль Translation Template Extractor. Скачиваем и устанавливаем этот модуль. Теперь переходи на страницу admin/config/regional/translate и выбираем вкладку EXTRACT. Выбираем наш модуль и нажимаем Extract:

Получаем файл шаблона rss_feeds.pot, и сохраняем его в папку модуля translations.

Потом проделываем все то же, только ставим переключатель на Template file for Russian translations и ставим галочку на Include translations. Сохраняем полученный перевод rss_feeds.ru.po в эту же папку.

Теперь остается только открыть .po-файл и вписать туда свои переводы. Теперь при установке модуля перевод будет автоматически импортироваться.

Заключение

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

Спасибо за внимание!

ссылка на оригинал статьи http://habrahabr.ru/post/200382/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *