Уроки

Урок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) {
    //если пользователь авторизовался, то

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

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

  • пункт 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. Надеюсь, суть понятна. Если нет - вот тут реализованно такое меню. Покликайте по пунктам - увидите

Реализация

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

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

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

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

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

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

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

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

где

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

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

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

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

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

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

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

УрокИндивидуальные настройки шаблона (темы)

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

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

Пример своих настроек темы

Дадим пользователю возможность выбирать ширину контента - фиксированную или резину. А так же возможность включения / отключения левой и правой колонки. То есть пользователь в 3 клика может превратить двухколоночный резиновый шаблон в трёхколоночный фиксированный. Удобно, правда? Теперь к реализации.

Для начала создадим файл theme-setings.php и добавим туда такой код:

<?php
 
function phptemplate_settings($saved_settings) {
 
  // Задаём значения по умолчаю.
  // Наша тема по умолчанию будет иметь фиксированной дизайн

УрокБазовая информация о кэше и о работе с ним в Друпале

Сегодня речь пойдёт о кэше. Не о деньгах, а именно о системе кэширования в качестве увеличения производительности сайта.

Страницы