УрокУменьшаем количество исходного кода на странице при помощи javascript

Не секрет, что большинство поисковых систем обращают внимание на соотношение количества нормального текста к количеству html и javascript кода на странице. И чем меньше "лишнего" на странице, тем лояльнее к сайту относится эта система. Поэтому надо каким-то образом этот код урезать. Но что же делать, если, например, дизайн не позволяет? Ну вот нарисовал дизайнер закруглённые уголки в комментариях - а это как минимум 4 ( а в худшем случае и все 8 ) лишних классов для каждого коммента! Представьте, что на странице 100 комментариев. Это 400 (800) лишних классов только для уголков!!

Я предлагаю абсолютно нехитрый способ решения этой проблемы: пару строк кода на Jquery - и поисковик, а вместе с ним и Вы, будете счастливы.

Предположим, у нас шаблон комментария comment.tpl.php выглядит таким образом:

<div class="comment <?php print $comment_classes; ?>">
 
  <!-- вывод переменных, html разметка и прочее -->

УрокФункции предобработки переменных перед выводом в шаблон

Все мы знакомы с обычными файлами шаблонов, выглядящими по принципу файл.tpl.php. И все привыкли, что в этом шаблоне откуда-то (магия?) появляются переменные с даннами. Сегодня я приоткрою эту тайну: для того, чтобы попасть в шаблон, была придумана функция предобработки переменных. Обычно она выглядит вот таким образом:

<?php
  function template_preprocess_что_обрабатываем(&$variables) {
    //код
  }

где

  • template- это имя темы или модуля (в зависимости от того, где реализуем функцию)
  • $variables - массив с доступными переменными
  • preprocess_что_обрабатываем - собственно, название функции с говорящим названием :)

Как пример - в каждой теме присутствует файл page.tpl.php. Функция, которой можно обработать этот файл - template_preprocess_page.

БлогМодуль для конвертации валют

Модуль для конвертации валют

Не так давно я написал один занятный модуль для быстрой конвертации валют между собой. Модуль тянет по крону данные о валютах из банков на выбор - ЦБР или НБРБ (Российский и Белорусские центральные банки). Валюты можно включать или отключать, менять их местами. Так же в качестве основной можно использовать абсолютно любую валюту. В модуль встроен css, который можно отключать при необходимости.

Модуль имеет довольно удобную и пользовательски-простую страницу с настройками. Устанавливается модуль просто - достаточно закинуть его в папку с модулями /sites/all/modules, потом перейти на сайте в раздел настройки модулей /admin/build/modules и включить. После данной операции в разделе с блоками /admin/build/block появится блок "Валютный конвертер". Достаточно перетащить его в любой регион и (обязательно) запустить крон (для того, чтобы модуль получил данные из банков). После этого блок будет работать.

УрокИзмерение времени выполнения скрипта

Иногда может понадобиться измерить время выполнения кода, причин несколько:

  1. Измерить производительность, например измерить время выполнения двух функций, выполняющих одно и то же, но найти ту что быстрее.
  2. Просто вывести для пользователя время обработки его запроса, как на пример тут
  3. На одном сайте я видел фишку: "Мы работали для вас n секунд"

Могут быть и другие причины, мне другие пока не встречались. Делается это так:

  1. Функцией timer_start($name) включаем таймер.
  2. Выполняем какие то действия.
  3. При помощи timer_read($name) получаем количество миллисекунд, прошедших с момента включения таймера.

ВидеоРабота с установочными профилями

Для того, чтобы понять и научиться работать с установочными профилями в Друпале был создан данный видеоурок. Содержит в себе основную информацию о профилях плюс пример создания своего установочного профиля. Спасибо за него Саше Концевому.

УрокВывод подменю при клике на пункт меню верхнего уровня

О чём я хочу сегодня поговорить - это о том, как выводить подменю, при нажатии на пункт меню. Вот что я имею ввиду: допустим, у нас есть такая структура у меню:

  • пункт 1

    • подпункт 1.1
    • подпункт 1.2
    • подпункт 1.3
  • пункт 2
  • пункт 3
    • подпункт 3.1
    • подпункт 3.2

И выводится только верхние пункты - то есть пункт 1, пункт 2, пункт 3. При клике на пункт 1 у нас появится блок, содержащий подпункт 1.1, подпункт 1.2, подпункт 1.3. По клику на пункт 2 - ничего не появится (т.к. этот пункт не содержит подменю). Кликнув на пункт 3 мы получим подпункт 3.1 и подпункт 3.2. Надеюсь, суть понятна. Если нет - вот тут реализованно такое меню. Покликайте по пунктам - увидите

Реализация

УрокPop-up логин при помощи javascript

Обычный логин занимает на сайте много места, а это может быть критично для некоторых сайтах. Так что сегодня я расскажу о том, как можно сделать симпатичный всплывающий логин.

Как это сделать в теории:

  • запихиваем блок логина в какой-нибудь div
  • скрываем этот div через css (display:none;)
  • создаём кнопку/ссылку с надписью ВХОД
  • вешаем скрипт, который при нажатии на кнопку ВХОД показывает/прячет div с блоком логина

А теперь к практике:

Напишем в template.php функцию, которая будет показывать анонимам кнопки ВХОД и РЕГИСТРАЦИЯ, а зарегистрированным - ПРОФИЛЬ и ВЫХОД (а заодно и блок логина обернём в div):

  function custom_login() {
 
  $output = '<div id = "custom_login">'; //оборачиваем наш код в дополнительный div
  global $user;
 
 
  if ($user->uid) {
    //если пользователь авторизовался, то

УрокСтандартные функции для создания темы

У каждого программиста, создающего шаблоны на друпал, есть свой каркас, на основе которого он создаёт последующие шаблоны. Это могут быть наброски в css, свои файлы .tpl, свой template.php, с которого удобно программисту начинать, и прочее. Сегодня я расскажу о некоторых функциях из template.php, с которыми мне очень удобно работать.

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

function phptemplate_button($element) {
  if (isset($element['#attributes']['class'])) {
    $element['#attributes']['class'] = 'form-'. $element['#button_type'] .' '. $element['#attributes']['class'];
  }
  else {
    $element['#attributes']['class'] = 'form-'. $element['#button_type'];
  }
 
  if (stristr($element['#attributes']['style'], 'display: none;') ||

Страницы