30 июля 2013

Как подключить JavaScript в Drupal

Вариант 1 С помощью кастомного модуля

Для таких изяществ есть спец функция drupal_add_js(). Она, как несложно догадаться, добавлят JS файл на сайт. Все просто и банально, вот вам парочка примеров:

// Добавляет JS
drupal_add_js('js/script.js');
// Добавляет JS по урл
drupal_add_js('https://www.google.com/jsapi');
// Добавляет конкретный JS скрипт.
drupal_add_js('jQuery(document).ready(function () { alert("Hello!"); });');
// И даже! Можно передать в JS нужные данные.
// Этот код добавит значение в DOM drupal.settings.wtf текст tratata. Разумеется он будет доступен из Javascript.
drupal_add_js(array('wtf' => 'tratata'), 'setting');

Также полезной окажется следующая функция:
drupal_get_path('module', 'wtf');

Данная функция вернет путь до места нахождения модуля. Например, если вы храните свой скрипт в модуле wtf, а там в папке js, то добавить скрипт можно двумя способами:

// Самый первый что придет в голову
// Но если переместить модуль, все слетит.
drupal_add_js('sites/all/modules/wtf/js/script.js');
//А вот более «железное» решение
drupal_add_js(drupal_get_path('module', 'wtf') . '/js/script.js');

Вариант 2 Через тему сайта

Также можно подключать JS при помощи своей темы оформления. Напишу на примере zen-subtheme.

Создаем в папке темы новую папку и назовем js, а в неё кладем наш script.js. Затем нам достаточно открыть .info файл темы и добавить в соответствующий раздел, если нету то добавьте где сами считаете нужным, следующий код:
scripts[] = js/script.js

Вариант 3: В файле темизации

Чтобы файл подключился на определенной ноде и вы создали для неё шаблон node-NID.tpl.php. В этом случае проще всего подцепить JS непосредственно в этом файле, просто вверху напишите то что мы рассмотрели в варианте 1.

Тут будет полезна еще одна функция для опредления путей: path_to_theme() - она возвращает путь до текущей темы, как в случае с модулем.

Допустим хотим добавить файл из варианта 2 но через php:
drupal_add_js(path_to_theme().'js/script.js');

Просто, не так ли?
А главное правильно и надежно.
При этом можно просто передавать параметры в из PHP в JS, что увеличивает гибкость.

Структура шаблонов Opencart

Папка common/ 
home.tpl - вывод главной страницы
column_left.tpl - левая колонка магазина
column_right.tpl - правая колонка магазина
content_bottom.tpl - нижняя часть магазина (только в 1.5.х)
content_top.tpl - верхняя часть магазина (только в 1.5.х)
footer.tpl - нижняя часть шаблона
header.tpl - верхняя часть шаблона
cart.tpl - всплывающее окно корзины (в верху сайта) (только в 1.5.х)
maintenance.tpl - шаблон выводится, когда магазин закрыт
success.tpl - выводится после успешной регистрации в магазине и после успешного оформления заказа (guest mode)

Папка product/ 
category.tpl - вывод группы товаров
manufacturer.tpl - вывод товаров по производителю (в 1.5.х не используется)
manufacturer_info.tpl - вывод товаров по производителю (только в 1.5.х)
manufacturer_list.tpl - страница со списком всех производителей (только в 1.5.х)
product.tpl - вывод одного товара
review.tpl - вывод отзыва о товаре в шаблоне product.tpl
search.tpl - поиск и результаты поиска
special.tpl - выбор специальных предложений (Special Offers)
compare.tpl - страница сравнения товаров (только в 1.5.х)

Папка information/ 
contact.tpl - вывод адреса магазина и формы отправки сообщений
information.tpl - вывод информационной статьи
sitemap.tpl - карта сайта

Папка error/ 
not_found.tpl - страница с ошибкой "error 404"(...not found!)

Папка account/ 
account.tpl - форма регистрации или входа в аккуант
address.tpl - Страница выбора/редактирования адреса оплаты/доставки (в 1.5.х не используется)
addresses.tpl - Адресная книга в настройках аккаунта (в 1.5.х не используется)
address_form.tpl - страница редактирование адреса в аккаунте (только в 1.5.х)
address_list.tpl - Адресная книга в настройках аккаунта (только в 1.5.х)
create.tpl - форма регистрации в магазине (в 1.5.х не используется)
register.tpl - форма регистрации в магазине (только в 1.5.х)
return_form - страница создания возврата товара (только в 1.5.х)
return_list.tpl - страница истории о возвратах товара (только в 1.5.х)
return_info.tpl - подробная информация о возврате товара (из return_list.tpl) (только в 1.5.х)
reward.tpl - информация о зачисленных бонусных баллах за покупки (только в 1.5.х)
transaction.tpl - страница истории платежей (только в 1.5.х)
wishlist.tpl - страница "Взято на заметку" (только в 1.5.х)
download.tpl - страница со скачиваемыми товарами
edit.tpl - редактировать профиль
forgotten.tpl - напоминание пароля
history.tpl - история заказов
invoice.tpl - счет-фактура
login.tpl - форма логина или регистрации на сайте
newsletter.tpl - подписка на новости
password.tpl - смена пароля

Папка checkout/
address.tpl
cart.tpl - вывод содержимого корзины (в центре страницы)
confirm.tpl - последний шаг заказа, подтверждение перед отправкой, этот же шаблон используется для guest_step_3. Нижние ссылки ( назад и подтвердить заказ) беруться из шаблона метода оплаты, к примеру из payment/cod.tpl
guest_step_1.tpl- 1 шаг заказа без регистрации
guest_step_2.tpl- 2 шаг заказа без регистрации
payment.tpl- оплата
shipping.tpl- доставка

Папка mail/
order_confirm.tpl - письмо о подтверждении

Папка modules/
bestseller.tpl - самые покупаемые товары
bestseller_home.tpl - самые покупаемые товары на главной странице
cart.tpl - вывод корзины в колонке
category.tpl - блок Категории
featured.tpl - "рекомендуемые товары"
featured_home.tpl - "рекомендуемые товары" на главной странице
google_talk.tpl
information.tpl - список статей на сайте, ссылки на сайтмап и контакты
latest.tpl - "последние товары"
latest_home.tpl - "последние товары" на главной странице
manufacturer.tpl - выпадающий список производителей
special.tpl - специальное предложение
special_home.tpl- специальное предложение на главной странице

21 июля 2013

Структура шаблонов Drupal

Шаблоны:

page.tpl.php — для страниц,
node.tpl.php — для контента,
block.tpl.php — для блоков,
comment-wrapper.tpl.php — для блока с комментариями,
comment.tpl.php — для одного комментария,
header.tpl.php — для шапки,
footer.tpl.php — для подвала,
region.tpl.php — для регионов.
node-story.tpl.php - для отображения материала типа story или block-user.tpl.php для блока user



page.tpl.php

Основной шаблон для страницы.
Доступные переменные:
$head_title — заголовок страницы
$head — вся информация в head
$styles — стили
$scripts — скрипты
$classes — классы для body
$header — шапка, которую мы вынесли в отдельный шаблон
$REGION_NAME — переменные с именами регионов
$messages — системные сообщения
$tabs — табы
$content — контент
$feed_icons — иконки RSS
$footer — подвал, который мы вынесли в отдельный шаблон
$base_path — базовый путь сайта
$is_front — главная страница или нет
$logged_in — залогинен ли пользователь
$is_admin — админ или нет
$language — объект, содержащий данные о текущем языке
$node — нода
$front_page — ссылка на главную
$logo — логотип
$site_name — имя сайта
$site_slogan — слоган сайта
$mission — миссия сайта
$search_box — блок поиска
$closure — переменная вставляется перед закрывающим тэгом /body, в неё некоторые модули пишут скрипты. Спасибо хабраюзеру juliv


node.tpl.php

Шаблон вывода контента.
Доступные переменные:
$node — объект ноды
$classes — классы для ноды
$user_picture — аватар пользователя
$picture — картинка ноды, переопределяется модулями
$page — страница ноды или список тизеров
$unpublished — опубликована или нет
$display_submitted — кем и когда опубликована
$terms — категории
$content — контент
$links — ссылки
$title — заголовок
$date — дата создания
$name — имя автора
$node_url — ссылка на ноду
$comment_count — количество комментов
$type — тип материала
$uid — id автора
$zebra — класс для зебры
$teaser — тизер или целая нода
$sticky — прилеплена или нет
$status — статус ноды
$comment — включены ли комменты
$is_front — на главной или нет
$logged_in — залогинен или нет
$is_admin — админ или нет


region.tpl.php

Шаблон вывода региона.
Доступные переменные:
$classes — классы для региона
$content — контент
$region — название региона
$is_front — на главной или нет
$logged_in — залогинен или нет
$is_admin — админ или нет


block.tpl.php

Шаблон вывода блока.
Доступные переменные:
$block — объект блока
$classes — классы блока
$title — заголовок
$content — контент
$edit_links — ссылки редактирования блока
$zebra — зебра
$block_id — id блока
$is_front — на главной или нет
$logged_in — залогинен или нет
$is_admin — админ или нет


comment-wrapper.tpl.php

Шаблон блока вывода комментариев.
Доступные переменные:
$classes — классы
$node — нода
$content — контент
$display_mode — способ отображения комментов
$display_order — порядок отображения комментов
$comment_controls_state — есть ли форма управления комментамми


comment.tpl.php

Шаблон отображения одного комментария.
Доступные переменные:
$classes — классы
$picture — аватар автора
$title — заголовок
$new — новый или нет
$unpublished — опубликован или нет
$author — автор
$created — дата создания
$content — контент
$links — ссылки


header.tpl.php

Шаблон шапки сайта. Все переменные для этого шаблона мы определили сами в preprocess-header.inc
Доступные переменные:
$front_page — главная страница или нет
$logo — логотип сайта
$search_box — блок поиска
$header_line — регион с именем header_line


footer.tpl.php

Шаблон подвала сайта. Все переменные для этого шаблона мы определили сами в preprocess-footer.inc
Доступные переменные:
$footer_line — регион с именем footer_line
$page_bottom — регион с именем page_bottom

SEO модули для Drupal

Распространенные модули:

Page Title Module – заголовок страницы можно найти в начале HTML кода внутри тега .Он также используется в поисковой выдаче (SERP) и может значительно повысить ваши сайты в SEO. Это, пожалуй, наиболее малоиспользуемый аспект при создании веб-страницы, как вебмастер не добавляет ценные ключевые слова для тега . http://drupal.org/project/page_title

Nodewords - Эти SEO модули позволяют добавлять мета-теги для Drupal страниц (страницы, вьюсы, категории, ноды и все остальные), как вручную, так и автоматически в зависимости от различных параметров.Обратите внимание на мета-теги, такие как ключевые слова, описание и канонические URL, они могут помочь получить лучшее позиционирование в поисковой системе. http://drupal.org/project/nodewords

Nodewords Page Title – Этот модуль позволяет использовать возможности Nodewords в пользовательских страницах для установки заголовка страницы с использованием подстановочных путей и глобальных маркеров (Тoken).Отлично подходит для труднообрабатываемых названий страниц в модулях Views, Panels, и других не-узловых (non-node) путях.Этот модуль сочетает лучшие черты Nodewords и page_title модулей. http://drupal.org/project/nodewords_pagetitle

Related Content – это отличный SEO модуль позволяет разработчикам сайта легко выбрать для каждого узла основу, которая определит – какие узлы должны быть показаны вместе с этим узлом.Узлы, которые доступны для выбора имеют один или несколько видов, предоставляемых Views модулем (http://drupal.org/project/views) .Как узлы отображаются настраивается, а также темизируется.Модуль также обеспечивает небольшой, но мощный API для продвинутых пользователей. http://drupal.org/project/relatedcontent

Pathauto - модуль Pathauto автоматически генерирует псевдонимы путей (дружественные поисковой системе URL) для различных видов контента (узлов, категорий, пользователей), не требуя от пользователя вручную указывать путь псевдонима.Это позволяет получить псевдонимы вроде /category/my-node-title.html вместо / node/123.Псевдонимы основаны на ”паттернах” системы, которые Администратор может контролировать. http://drupal.org/project/pathauto

Sitemap - Этот модуль предоставляет карту сайта, которая дает посетителям краткий обзор вашего сайта.Он также может отображать RSS-каналы для всех блогов и категорий.Drupal генерирует RSS-каналы автоматически, но немногие, кажется, знают, что такое существует. Карта может показывать следующие пункты: сообщение, которое будет отображаться вверху карты, последние блоги, любые книги, любые меню, которые будут показываться полностью развернутыми, любые категории, т.е. словари, со всеми развернуыми терминами.При желании с количеством узлов и RSS-каналами. http://drupal.org/project/site_map

Path Redirect – Этот модуль позволяет вам указать перенаправление с одного пути на другой путь или внешний URL, используя любой статус HTTP перенаправления (http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.3) .Это перенаправление модуля является большим для переадресации 301, 302 (временного перенаправления), и несколько других типов перенаправления, когда вы, возможно, потребуется удалить или переместить страницы вашего сайта Drupal. http://drupalmodules.com/module/path-redirect

Google Analytics Module – Добавляет веб-статистику Google Аналитикс систему слежения на ваш сайт.Этот модуль позволяет добавлять богатые возможности статистики Google на ваш сайт Drupal. http://drupalmodules.com/module/google-analytics

XML Sitemap – карты сайта Модуль XML создает карту сайта, что соответствует sitemaps.org спецификации .Это помогает поисковым системам более грамотно сканировать веб-сайт и хранить свои результаты в актуальном состоянии.Карта сайта созданная этим модулем может быть автоматически передана Ask, Google, Bing (ранее Windows Live Search) и Yahoo! поисковым системам.Модуль также поставляется с несколькими подмодулями, которые могут добавить карте сайта ссылки на содержание, пункты меню, термины таксономии, и профили пользователей. http://drupalmodules.com/module/xml-sitemap