Уроки

УрокSEO вёрстка

Немаловажной частью сайта является его "шкурка", шаблон. Внешний вид сайта не должен привлекать посетителей - не существует такого уникального дизайна, который гарантированно всем понравится. Внешний вид не должен отталкивать - с этой задаSeo - немаловажная часть жизни сайта, и о завтрашнем продвижении разработчик должен заботиться уже сегодня, с помощью грамотной верстки. Вообще шаблон сайта может быть рассмотрен с точки зрения seo как элемент внешней оптимизации. И если на этапе разработки программист допустил ошибку, которая будет сказываться на продвижении сайта, то его неминуемо попросят ее исправить. Подробнее про новинки seo можно прочитать на ресурсе seo осень, а мы же займемся программными аспектами.чей может справиться любой трезвый и адекватный дизайнер.

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

Во-первых, самое важное правило, которого всегда надо придерживаться - тэг H1 должен быть на каждой странице сайта ТОЛЬКО один раз. В него можно обернуть название сайта, или его слоган, или заголовок ноды В ПОЛНОЙ СТАТЬЕ (не в анонсе!), или заголовок самой страницы. Но обязательно следите за тем, чтобы этот тэг не повторялся даже дважды.

УрокМодули, которые делают жизнь проще, а солнце ярче

Сейчас я расскажу об основных и дополнительных модулях друпала, без которых выполнение некоторых задач было бы сильно осложнено, особенно на начальном этапе. Все модули актуальны для 6 версии CMS Drupal.

Основные модули друпала - мастхэв

  • cck - добавляет возможность создавать в содержимом допонительные поля (фотографии, текстовые поля, числовые, емейлы, загрузка файлов, голосование и прочее)
  • views - можно сказать, основной модуль друпала. В связке с cck обретает невероятную силу, получая +4 поинта к скорости настройки сайта и +5 к гибкости настройки системы :) Позволяет создавать легкоизменяемые блоки, страницы, меню, новостные ленты и прочие составляющие сайта. Новичкам может показаться слегка сложным, но потратив пару часов на освоение минимальных его возможностей, вы уже ощутите ту лёгкость, с которой можно создавать новые элементы сайта.

УрокJava-скрипт, который обрезает фотографии и сохраняет их на сервере при помощи Ajax

Не так давно получил примерно такое техзадание: вывести фотографию, которую пользователь может обрезать графическими средствами, после чего сохранить картинку на сервере. На самом деле тз было немного сложнее, но к сути вопроса это не относится ;)

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

Для этого я написал небольшой модуль, который можно скачать тут. Он включает в себя файл с упакованным скриптом imgareaselect, и моим модулем, который я назвал image_cropper.

УрокНемного о выводе любых cck-полей программно через node.tpl.php

Сегодня я решил рассказать как выводить cck поля через шаблон node.tpl. Часто бывают такие ситуации, что, например, требуется, чтобы данные из cck полей автоматически закидывать в html-таблицу, или формировать её особым образом, требующим обёртки в дополнительные div'ы (или в любые другие тэги). Поэтому надо обязательно знать, каким образом вывести эти поля в своём шаблоне.

Алгоритм вывода не сложен:

УрокПеренос сайта с локального сервера Denwer на рабочий сервер

Наверняка многие веб-разработчики, особенно использующих для своих нужд ОС Windows, сталкивались с таким джентельменстким набором как Denwer. Штука действительно очень полезная - за пару минут можно поставить себе на компьютер локальный сервер с базой данных (mysql) и настроенными php и apache. И сервис отправки почты в нагрузку. В общем, получается отличная имитация не сильно заурядного боевого сервера. Тут и памяти можно дать чуть больше для ускорения работы, и отлаживать удобнее, и прочие полезности.

Соответственно, если сайт был сделан целиком на локальном сервере, неплохо было бы показать его людям - а значит, перенести его на рабочий сервер в Интернете. И тут для людей не сильно опытных в этом вопросе может возникнуть затык - а с чего начинать, собсна?) Рассказываю.

Чтобы создать на рабочем сервере полную копию локального, вам необходимо перетащить туда следующие вещи:

    УрокСоздание отдельного шаблона страницы для разных типов ноды

    По умолчанию в друпале все страницы выводятся через шаблон page.tpl.php. Можно создавать шаблоны созданные по такому принципу: если путь выглядит как имясайта/node/10, то шаблон будет выглядеть как page-node-10.tpl.php. Если создать шаблон page-node.tpl.php, то все страницы, лежащие "ниже" урла имясайта/node/ будут автоматически перекрыты этим шаблоном.

    То есть, если в корне вашей темы лежит файл page-node-tpl.php и выводит только переменную $content, то на странице абсолютно любой ноды будет выведен тольько контент, без колонок, табов и прочих аттрибутов.

    Этот принцип работает для любого адресса, и любого уровня вложенности в него. Однако давайте рассмотрим неординарный вариант: допустим, перекрыть надо только страницы нод определённого типа материала. Для этого потребуется поместить в template.php следующий код:

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

    У каждого программиста, создающего шаблоны на друпал, есть свой каркас, на основе которого он создаёт последующие шаблоны. Это могут быть наброски в 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;') ||

    Страницы