SlideShare a Scribd company logo
Темизация - процесс внедрения верстки в CMF/СMS. Иными словами -
процесс приведения внешнего вида сайта в соответствие с макетом.
Что нужно знать:
- HTML, CSS, JS
- Основы PHP или другого бекендового языка
1. Сначала вывод данных, потом стилизация
2. Сначала верстка статических данных согласно дизайну, затем замена
статических данных динамическими
1. Своя тема “с нуля”
2. Наследование от родительской темы
Почитать подробнее: https://www.drupal.org/node/225125
Скачать готовую тему: https://www.drupal.org/project/project_theme
1. .info файл
2. разметка страниц в файлах шаблонов
3. изменение, добавление переменных и
переопределение функций
name required
description
core required
engine
base theme
regions
stylesheets
scripts
php
…
name = Mytheme
description = Tableless, recolorable, multi-column,
fluid width theme.
core = 7.x
engine = phptemplate
base theme = bartik
Почитать подробнее: https://www.drupal.org/node/171205#php
Движок темизации в Drupal - функционал, обеспечивающий
возможность взаимодействия слоя темизации с другими слоями в
Drupal посредством шаблонов. Определяет синтаксис написания
кода.
PHPTemplate - стандартный движок темизации начиная с Drupal 4.7
Twig - стандартный движок темизации в Drupal 8
Почитать подробнее:
https://www.drupal.org/project/project_theme_engine
; подключение стилей
stylesheets[all][] = css/style.css
stylesheets[print][] = css/print.css
stylesheets-conditional[lte IE 7][all][] = css/ie7.css
; подключение скриптов
scripts[] = mytheme.js
Доступные условия IE: https://msdn.microsoft.com/en-
us/library/ms537512(v=vs.85).aspx
regions[content] = Content - обязательный регион!
regions[custom_region] = My custom region
regions[sidebar_first] = Sidebar first
regions[page_top] = Page top
regions[page_bottom] = Page bottom
<?php if ($page['custom_region']): ?>
<div id="custom_region"><div class="section">
<?php print render($page['custom_region']);
?>
</div></div>
<?php endif; ?>
Реестр темы - это некая таблица в базе данных, которая является
частью таблицы кеша Drupal, и в которой Drupal хранит информацию о
доступных функциях темы и ее структуре.
Почитать подробнее: https://www.drupal.org/node/173880#theme-registry
Дебаггинг (отладка) – этап разработки программы, в ходе которого
обнаруживают, локализуют и исправляют баги (ошибки).
Отладка в Drupal - модуль Devel
Основные функции отладки: dpm, dvm, kpr
Синтаксис: <?php dpm($content); ?>
Полезные ссылки:
https://api.drupal.org/api/devel/devel.module/7
http://xandeadx.ru/blog/drupal/304
Theme hook suggestion - это
альтернативный файл шаблона, который мы
создаем, чтобы переопределить вывод
какого-либо блока.
Пример:
node--story.tpl.php
field--story.tpl.php
page--front.tpl.php
https://www.drupal.org/node/1089656
/**
* Implements hook_block_view().
*/
function share_block_view($delta = '') {
$block = array();
switch ($delta) {
case 'mytheme_share':
$variables = array('url' => url(current_path(),
array('absolute' => TRUE)));
$block['content'] = theme('mytheme_share',
$variables);
break;
}
return $block;
}
/**
* Implements hook_theme().
*/
function lliwell_share_theme() {
return array(
'lliwell_share' => array(
'variables' => array(),
'template' => 'lliwell_share',
),
);
}
/**
* Implements hook_preprocess_node().
*/
function mytheme_preprocess_node(&$variables) {
// Add to node template mytheme_share block.
$block = block_load('mytheme_share', 'mytheme_share');
$render_array = _block_get_renderable_array(_block_render_blocks(array($block)));
$variables['content']['mytheme_share'] = $render_array;
$variables['classes_array'][] = 'clearfix';
}
Вывод в шаблоне:
<?php print render($content['mytheme_share']); ?>
Пишем строку в settings.php:
$conf['theme_debug'] = TRUE;
При необходимости подключения из функции:
- drupal_add_js('jQuery(document).ready(function () { alert("Hello!"); });',
array('type' => 'inline', 'scope' => 'footer')
);
- drupal_add_js('misc/collapse.js');
Внешние скрипты:
- drupal_add_js('http://example.com/example.js', 'external');
Drupal_add_js docs
https://api.drupal.org/api/drupal/includes%21common.inc/function/drupal_add_js/7
Не объявлена переменная $
(function () {
$('div.menu-expanded').hide();
$(....);
});
(function ($) {
$(function () {
$('div.menu-expanded').hide();
$(...);
});
}) (jQuery);
jQuery(document).ready(function($){
$('.view-display-id-page .views-
row').addClass('fancy-pants');
});
Drupal.behaviors.infiniteScrollAddClass = {
attach: function (context, settings) {
$('.view-display-id-page .views-
row').addClass('fancy-pants');
}};
Drupal.behaviors.infiniteScrollAddClass = {
attach: function (context, settings) {
// these are the elements loaded in first
$('.view-display-id-page').once(function(){
$(this).find('.views-row').addClass('i-was-here-
first'); });
// everybody
$('.view-display-id-page .views-
row').addClass('fancy-pants');
}};
Managing JS in drupal https://www.drupal.org/node/756722
http://www.amazeelabs.com/en/blog/drupal-behaviors-quick-how
- Drupal general concepts https://www.drupal.org/node/19828
- Drupal 7 Theming Cookbook Karthik Kumar
https://www.drupal.org/node/1849888
- Theming Drupal 7 https://www.drupal.org/theme-guide/6-7
- Documentation https://www.drupal.org/documentation/theme
- Definitive Guide to Drupal 7 Theming http://themery.com/dgd7
- Lullabot.com - Theming Basics For Drupal - video
- Lullabot.com - Advanced Theming For Drupal - video
Олена Ольховик — Від frontend розробки до Drupal-темізації. Основи і специфіка

More Related Content

What's hot

Создаем Drupal дистрибутив: от идеи до сопровождения
Создаем Drupal дистрибутив: от идеи до сопровожденияСоздаем Drupal дистрибутив: от идеи до сопровождения
Создаем Drupal дистрибутив: от идеи до сопровожденияOvadiah Myrgorod
 
DrupalCamp Kyiv 2011. Views - стандарт вывода списка данных. Расширение Views...
DrupalCamp Kyiv 2011. Views - стандарт вывода списка данных. Расширение Views...DrupalCamp Kyiv 2011. Views - стандарт вывода списка данных. Расширение Views...
DrupalCamp Kyiv 2011. Views - стандарт вывода списка данных. Расширение Views...Viktor Likin
 
Yury Glushkov.What should we build a website.Drupal Camp Kyiv 2011
Yury Glushkov.What should we build a website.Drupal Camp Kyiv 2011Yury Glushkov.What should we build a website.Drupal Camp Kyiv 2011
Yury Glushkov.What should we build a website.Drupal Camp Kyiv 2011camp_drupal_ua
 
02 - Web-технологии. Web-клиенты
02 - Web-технологии. Web-клиенты02 - Web-технологии. Web-клиенты
02 - Web-технологии. Web-клиенты
Roman Brovko
 
Темизация Drupal7. Omega theme. Александр Даниленко.
Темизация Drupal7. Omega theme. Александр Даниленко.Темизация Drupal7. Omega theme. Александр Даниленко.
Темизация Drupal7. Omega theme. Александр Даниленко.DrupalCampDN
 
Презентация «Bundle Transformer – инструмент для клиентской оптимизации в сре...
Презентация «Bundle Transformer – инструмент для клиентской оптимизации в сре...Презентация «Bundle Transformer – инструмент для клиентской оптимизации в сре...
Презентация «Bundle Transformer – инструмент для клиентской оптимизации в сре...
Andrey Taritsyn
 
Поисковая оптимизация сайта на Drupal 7
Поисковая оптимизация сайта на Drupal 7Поисковая оптимизация сайта на Drupal 7
Поисковая оптимизация сайта на Drupal 7Alexey Kostin
 
ASP.NET MVC 4
ASP.NET MVC 4ASP.NET MVC 4
ASP.NET MVC 4
GetDev.NET
 
Drupal code sprint для новичков
Drupal code sprint для новичковDrupal code sprint для новичков
Drupal code sprint для новичковOvadiah Myrgorod
 
построение внутренней ссылочной структуры сайта на Drupal 7 (seo). Костин ...
построение внутренней ссылочной структуры сайта на Drupal 7 (seo). Костин ...построение внутренней ссылочной структуры сайта на Drupal 7 (seo). Костин ...
построение внутренней ссылочной структуры сайта на Drupal 7 (seo). Костин ...PVasili
 
инструкция по оптимизации сайтов на Drupal херени даниэл
инструкция по оптимизации сайтов на Drupal херени даниэлинструкция по оптимизации сайтов на Drupal херени даниэл
инструкция по оптимизации сайтов на Drupal херени даниэлPVasili
 
Корневая директория WordPress
Корневая директория WordPressКорневая директория WordPress
Корневая директория WordPress
versusbassz
 
Ice Php Framework Preview Release
Ice Php Framework Preview ReleaseIce Php Framework Preview Release
Ice Php Framework Preview Release
Denis Shestakov
 
Zend Framework и мультиязычность
Zend Framework и мультиязычностьZend Framework и мультиязычность
Zend Framework и мультиязычностьStepan Tanasiychuk
 
Лекция #6. Введение в Django web-framework
Лекция #6. Введение в Django web-frameworkЛекция #6. Введение в Django web-framework
Лекция #6. Введение в Django web-framework
Яковенко Кирилл
 
Osvaivaem 250px max_shirshin
Osvaivaem 250px max_shirshinOsvaivaem 250px max_shirshin
Osvaivaem 250px max_shirshinyaevents
 
DrupalCafe #2: Константин Комелин - Быстрый старт для новичка в Drupal
DrupalCafe #2: Константин Комелин - Быстрый старт для новичка в DrupalDrupalCafe #2: Константин Комелин - Быстрый старт для новичка в Drupal
DrupalCafe #2: Константин Комелин - Быстрый старт для новичка в Drupal
DrupalSPB
 

What's hot (19)

Создаем Drupal дистрибутив: от идеи до сопровождения
Создаем Drupal дистрибутив: от идеи до сопровожденияСоздаем Drupal дистрибутив: от идеи до сопровождения
Создаем Drupal дистрибутив: от идеи до сопровождения
 
DrupalCamp Kyiv 2011. Views - стандарт вывода списка данных. Расширение Views...
DrupalCamp Kyiv 2011. Views - стандарт вывода списка данных. Расширение Views...DrupalCamp Kyiv 2011. Views - стандарт вывода списка данных. Расширение Views...
DrupalCamp Kyiv 2011. Views - стандарт вывода списка данных. Расширение Views...
 
Yury Glushkov.What should we build a website.Drupal Camp Kyiv 2011
Yury Glushkov.What should we build a website.Drupal Camp Kyiv 2011Yury Glushkov.What should we build a website.Drupal Camp Kyiv 2011
Yury Glushkov.What should we build a website.Drupal Camp Kyiv 2011
 
02 - Web-технологии. Web-клиенты
02 - Web-технологии. Web-клиенты02 - Web-технологии. Web-клиенты
02 - Web-технологии. Web-клиенты
 
Yulia tsuba
Yulia tsubaYulia tsuba
Yulia tsuba
 
Темизация Drupal7. Omega theme. Александр Даниленко.
Темизация Drupal7. Omega theme. Александр Даниленко.Темизация Drupal7. Omega theme. Александр Даниленко.
Темизация Drupal7. Omega theme. Александр Даниленко.
 
Презентация «Bundle Transformer – инструмент для клиентской оптимизации в сре...
Презентация «Bundle Transformer – инструмент для клиентской оптимизации в сре...Презентация «Bundle Transformer – инструмент для клиентской оптимизации в сре...
Презентация «Bundle Transformer – инструмент для клиентской оптимизации в сре...
 
Поисковая оптимизация сайта на Drupal 7
Поисковая оптимизация сайта на Drupal 7Поисковая оптимизация сайта на Drupal 7
Поисковая оптимизация сайта на Drupal 7
 
ASP.NET MVC 4
ASP.NET MVC 4ASP.NET MVC 4
ASP.NET MVC 4
 
Drupal code sprint для новичков
Drupal code sprint для новичковDrupal code sprint для новичков
Drupal code sprint для новичков
 
построение внутренней ссылочной структуры сайта на Drupal 7 (seo). Костин ...
построение внутренней ссылочной структуры сайта на Drupal 7 (seo). Костин ...построение внутренней ссылочной структуры сайта на Drupal 7 (seo). Костин ...
построение внутренней ссылочной структуры сайта на Drupal 7 (seo). Костин ...
 
инструкция по оптимизации сайтов на Drupal херени даниэл
инструкция по оптимизации сайтов на Drupal херени даниэлинструкция по оптимизации сайтов на Drupal херени даниэл
инструкция по оптимизации сайтов на Drupal херени даниэл
 
Корневая директория WordPress
Корневая директория WordPressКорневая директория WordPress
Корневая директория WordPress
 
Ice Php Framework Preview Release
Ice Php Framework Preview ReleaseIce Php Framework Preview Release
Ice Php Framework Preview Release
 
Zend Framework и мультиязычность
Zend Framework и мультиязычностьZend Framework и мультиязычность
Zend Framework и мультиязычность
 
Лекция #6. Введение в Django web-framework
Лекция #6. Введение в Django web-frameworkЛекция #6. Введение в Django web-framework
Лекция #6. Введение в Django web-framework
 
PHP
PHPPHP
PHP
 
Osvaivaem 250px max_shirshin
Osvaivaem 250px max_shirshinOsvaivaem 250px max_shirshin
Osvaivaem 250px max_shirshin
 
DrupalCafe #2: Константин Комелин - Быстрый старт для новичка в Drupal
DrupalCafe #2: Константин Комелин - Быстрый старт для новичка в DrupalDrupalCafe #2: Константин Комелин - Быстрый старт для новичка в Drupal
DrupalCafe #2: Константин Комелин - Быстрый старт для новичка в Drupal
 

Viewers also liked

Vinculacion con la Sociedad uniandes 2012
Vinculacion con la Sociedad uniandes 2012Vinculacion con la Sociedad uniandes 2012
Vinculacion con la Sociedad uniandes 2012
vasquez1962
 
Генадій Колтун — Перехід від фрілансера в стадію компанії
Генадій Колтун — Перехід від фрілансера в стадію компаніїГенадій Колтун — Перехід від фрілансера в стадію компанії
Генадій Колтун — Перехід від фрілансера в стадію компанії
LEDC 2016
 
Сергій Бондаренко — Тестування Drupal сайтiв з допогою TqExtension
Сергій Бондаренко — Тестування Drupal сайтiв з допогою TqExtensionСергій Бондаренко — Тестування Drupal сайтiв з допогою TqExtension
Сергій Бондаренко — Тестування Drupal сайтiв з допогою TqExtension
LEDC 2016
 
Андрій Юн — Drupal contributor HOWTO
Андрій Юн — Drupal contributor HOWTOАндрій Юн — Drupal contributor HOWTO
Андрій Юн — Drupal contributor HOWTO
LEDC 2016
 
Вадим Абрамчук — Big Drupal: Issues We Met
Вадим Абрамчук — Big Drupal: Issues We MetВадим Абрамчук — Big Drupal: Issues We Met
Вадим Абрамчук — Big Drupal: Issues We Met
LEDC 2016
 
Тарас Кирилюк та Олена Пустовойт — CI workflow у веб-студії
Тарас Кирилюк та Олена Пустовойт — CI workflow у веб-студіїТарас Кирилюк та Олена Пустовойт — CI workflow у веб-студії
Тарас Кирилюк та Олена Пустовойт — CI workflow у веб-студії
LEDC 2016
 
Vinculacion con lasociedad uniandes 2012
Vinculacion con lasociedad uniandes 2012Vinculacion con lasociedad uniandes 2012
Vinculacion con lasociedad uniandes 2012
vasquez1962
 
Тарас Кирилюк — Docker basics. How-to for Drupal developers
Тарас Кирилюк — Docker basics. How-to for Drupal developersТарас Кирилюк — Docker basics. How-to for Drupal developers
Тарас Кирилюк — Docker basics. How-to for Drupal developers
LEDC 2016
 
Генадій Колтун — Комунізм наступає: що будемо робити, коли машини навчаться п...
Генадій Колтун — Комунізм наступає: що будемо робити, коли машини навчаться п...Генадій Колтун — Комунізм наступає: що будемо робити, коли машини навчаться п...
Генадій Колтун — Комунізм наступає: що будемо робити, коли машини навчаться п...
LEDC 2016
 
Юрій Герасімов — Editorial experience in Drupal8
Юрій Герасімов — Editorial experience in Drupal8Юрій Герасімов — Editorial experience in Drupal8
Юрій Герасімов — Editorial experience in Drupal8
LEDC 2016
 
Юрій Герасимов — Delayed operations with queues
Юрій Герасимов — Delayed operations with queuesЮрій Герасимов — Delayed operations with queues
Юрій Герасимов — Delayed operations with queues
LEDC 2016
 
Валентин Мацвейко та Владислав Мойсеєнко — D8: Migrate Yourself: code->module...
Валентин Мацвейко та Владислав Мойсеєнко — D8: Migrate Yourself: code->module...Валентин Мацвейко та Владислав Мойсеєнко — D8: Migrate Yourself: code->module...
Валентин Мацвейко та Владислав Мойсеєнко — D8: Migrate Yourself: code->module...
LEDC 2016
 
Андрій Поданенко — Воркшоп "Розвертання CIBox"
Андрій Поданенко — Воркшоп "Розвертання CIBox"Андрій Поданенко — Воркшоп "Розвертання CIBox"
Андрій Поданенко — Воркшоп "Розвертання CIBox"
LEDC 2016
 
A. Postnikov & P. Mahrinsky — Drupal Community — це ми
A. Postnikov & P. Mahrinsky — Drupal Community — це миA. Postnikov & P. Mahrinsky — Drupal Community — це ми
A. Postnikov & P. Mahrinsky — Drupal Community — це ми
LEDC 2016
 
Peluang Usaha Waralaba Kegaenan Pulsa PT Duta network Indonesia
Peluang Usaha Waralaba Kegaenan Pulsa PT Duta network IndonesiaPeluang Usaha Waralaba Kegaenan Pulsa PT Duta network Indonesia
Peluang Usaha Waralaba Kegaenan Pulsa PT Duta network Indonesia
supetra rahadiyono
 
Assignment 1: Conventions when Scriptwriting for Radio
Assignment 1: Conventions when Scriptwriting for RadioAssignment 1: Conventions when Scriptwriting for Radio
Assignment 1: Conventions when Scriptwriting for RadioDemiLeigh__
 

Viewers also liked (16)

Vinculacion con la Sociedad uniandes 2012
Vinculacion con la Sociedad uniandes 2012Vinculacion con la Sociedad uniandes 2012
Vinculacion con la Sociedad uniandes 2012
 
Генадій Колтун — Перехід від фрілансера в стадію компанії
Генадій Колтун — Перехід від фрілансера в стадію компаніїГенадій Колтун — Перехід від фрілансера в стадію компанії
Генадій Колтун — Перехід від фрілансера в стадію компанії
 
Сергій Бондаренко — Тестування Drupal сайтiв з допогою TqExtension
Сергій Бондаренко — Тестування Drupal сайтiв з допогою TqExtensionСергій Бондаренко — Тестування Drupal сайтiв з допогою TqExtension
Сергій Бондаренко — Тестування Drupal сайтiв з допогою TqExtension
 
Андрій Юн — Drupal contributor HOWTO
Андрій Юн — Drupal contributor HOWTOАндрій Юн — Drupal contributor HOWTO
Андрій Юн — Drupal contributor HOWTO
 
Вадим Абрамчук — Big Drupal: Issues We Met
Вадим Абрамчук — Big Drupal: Issues We MetВадим Абрамчук — Big Drupal: Issues We Met
Вадим Абрамчук — Big Drupal: Issues We Met
 
Тарас Кирилюк та Олена Пустовойт — CI workflow у веб-студії
Тарас Кирилюк та Олена Пустовойт — CI workflow у веб-студіїТарас Кирилюк та Олена Пустовойт — CI workflow у веб-студії
Тарас Кирилюк та Олена Пустовойт — CI workflow у веб-студії
 
Vinculacion con lasociedad uniandes 2012
Vinculacion con lasociedad uniandes 2012Vinculacion con lasociedad uniandes 2012
Vinculacion con lasociedad uniandes 2012
 
Тарас Кирилюк — Docker basics. How-to for Drupal developers
Тарас Кирилюк — Docker basics. How-to for Drupal developersТарас Кирилюк — Docker basics. How-to for Drupal developers
Тарас Кирилюк — Docker basics. How-to for Drupal developers
 
Генадій Колтун — Комунізм наступає: що будемо робити, коли машини навчаться п...
Генадій Колтун — Комунізм наступає: що будемо робити, коли машини навчаться п...Генадій Колтун — Комунізм наступає: що будемо робити, коли машини навчаться п...
Генадій Колтун — Комунізм наступає: що будемо робити, коли машини навчаться п...
 
Юрій Герасімов — Editorial experience in Drupal8
Юрій Герасімов — Editorial experience in Drupal8Юрій Герасімов — Editorial experience in Drupal8
Юрій Герасімов — Editorial experience in Drupal8
 
Юрій Герасимов — Delayed operations with queues
Юрій Герасимов — Delayed operations with queuesЮрій Герасимов — Delayed operations with queues
Юрій Герасимов — Delayed operations with queues
 
Валентин Мацвейко та Владислав Мойсеєнко — D8: Migrate Yourself: code->module...
Валентин Мацвейко та Владислав Мойсеєнко — D8: Migrate Yourself: code->module...Валентин Мацвейко та Владислав Мойсеєнко — D8: Migrate Yourself: code->module...
Валентин Мацвейко та Владислав Мойсеєнко — D8: Migrate Yourself: code->module...
 
Андрій Поданенко — Воркшоп "Розвертання CIBox"
Андрій Поданенко — Воркшоп "Розвертання CIBox"Андрій Поданенко — Воркшоп "Розвертання CIBox"
Андрій Поданенко — Воркшоп "Розвертання CIBox"
 
A. Postnikov & P. Mahrinsky — Drupal Community — це ми
A. Postnikov & P. Mahrinsky — Drupal Community — це миA. Postnikov & P. Mahrinsky — Drupal Community — це ми
A. Postnikov & P. Mahrinsky — Drupal Community — це ми
 
Peluang Usaha Waralaba Kegaenan Pulsa PT Duta network Indonesia
Peluang Usaha Waralaba Kegaenan Pulsa PT Duta network IndonesiaPeluang Usaha Waralaba Kegaenan Pulsa PT Duta network Indonesia
Peluang Usaha Waralaba Kegaenan Pulsa PT Duta network Indonesia
 
Assignment 1: Conventions when Scriptwriting for Radio
Assignment 1: Conventions when Scriptwriting for RadioAssignment 1: Conventions when Scriptwriting for Radio
Assignment 1: Conventions when Scriptwriting for Radio
 

Similar to Олена Ольховик — Від frontend розробки до Drupal-темізації. Основи і специфіка

DrupalCamp Kyiv 2011. Views - стандарт вывода списка данных. Расширение Views...
DrupalCamp Kyiv 2011. Views - стандарт вывода списка данных. Расширение Views...DrupalCamp Kyiv 2011. Views - стандарт вывода списка данных. Расширение Views...
DrupalCamp Kyiv 2011. Views - стандарт вывода списка данных. Расширение Views...
Viktor Likin
 
Drupal Camp Kyiv 2013. Удобная разработка drupal проекта. Полезные модули.
Drupal Camp Kyiv 2013. Удобная разработка drupal проекта. Полезные модули.Drupal Camp Kyiv 2013. Удобная разработка drupal проекта. Полезные модули.
Drupal Camp Kyiv 2013. Удобная разработка drupal проекта. Полезные модули.
Alex Barkov
 
Ruby on Rails. Пользовательский интерфейс
Ruby on Rails. Пользовательский интерфейсRuby on Rails. Пользовательский интерфейс
Ruby on Rails. Пользовательский интерфейс
Digital-агентство Мэйк
 
Андрей Юн Удобная разработка Drupal проекта. Полезные модули
Андрей Юн Удобная разработка Drupal проекта. Полезные модулиАндрей Юн Удобная разработка Drupal проекта. Полезные модули
Андрей Юн Удобная разработка Drupal проекта. Полезные модулиAlbina Tiupa
 
Валерий Чугреев, ИСЭРТ РАН — Архитектура MVC в контексте web-разработки — про...
Валерий Чугреев, ИСЭРТ РАН — Архитектура MVC в контексте web-разработки — про...Валерий Чугреев, ИСЭРТ РАН — Архитектура MVC в контексте web-разработки — про...
Валерий Чугреев, ИСЭРТ РАН — Архитектура MVC в контексте web-разработки — про...
Dev_Party
 
Как быть с большими сайтами на Word press
Как быть с большими сайтами  на Word pressКак быть с большими сайтами  на Word press
Как быть с большими сайтами на Word press
vovasik
 
Comfortable drupal project development. Useful modules (Andriy Yun, studio de...
Comfortable drupal project development. Useful modules (Andriy Yun, studio de...Comfortable drupal project development. Useful modules (Andriy Yun, studio de...
Comfortable drupal project development. Useful modules (Andriy Yun, studio de...
Andriy Yun
 
Вёрстка WordPress тем - WP Kharkiv Meetup #1
Вёрстка WordPress тем - WP Kharkiv Meetup #1Вёрстка WordPress тем - WP Kharkiv Meetup #1
Вёрстка WordPress тем - WP Kharkiv Meetup #1
dima_kuzovlev
 
Web deployment
Web deploymentWeb deployment
Web deployment
GetDev.NET
 
#3 "Webpack и Vue.JS: Создание больших приложений и их расширение" Кирилл Кай...
#3 "Webpack и Vue.JS: Создание больших приложений и их расширение" Кирилл Кай...#3 "Webpack и Vue.JS: Создание больших приложений и их расширение" Кирилл Кай...
#3 "Webpack и Vue.JS: Создание больших приложений и их расширение" Кирилл Кай...
JSib
 
Drush - незаменимый инструмент друпал разработчика
Drush - незаменимый инструмент друпал разработчикаDrush - незаменимый инструмент друпал разработчика
Drush - незаменимый инструмент друпал разработчика
Valentina Borovaya
 
XML Native Database на примере SednaXML
XML Native Database на примере SednaXMLXML Native Database на примере SednaXML
XML Native Database на примере SednaXMLSlach
 
Развертывание и управление CMS Drupal в Microsoft Azure
Развертывание и управление CMS Drupal в Microsoft AzureРазвертывание и управление CMS Drupal в Microsoft Azure
Развертывание и управление CMS Drupal в Microsoft Azure
Artur Baranok
 
Development and deployment freedom - MODX Meetup Minsk
Development and deployment freedom - MODX Meetup MinskDevelopment and deployment freedom - MODX Meetup Minsk
Development and deployment freedom - MODX Meetup Minsk
MODX Беларусь
 
Как мы делаем модули PHP в Badoo – Антон Довгаль
Как мы делаем модули PHP в Badoo – Антон ДовгальКак мы делаем модули PHP в Badoo – Антон Довгаль
Как мы делаем модули PHP в Badoo – Антон Довгаль
Badoo Development
 
Drupal организация разработки
Drupal   организация разработкиDrupal   организация разработки
Drupal организация разработки
Anna Fedoruk
 
Drupal -organizaciya_razrabotki
Drupal  -organizaciya_razrabotkiDrupal  -organizaciya_razrabotki
Drupal -organizaciya_razrabotkidrupalconf
 

Similar to Олена Ольховик — Від frontend розробки до Drupal-темізації. Основи і специфіка (20)

DrupalCamp Kyiv 2011. Views - стандарт вывода списка данных. Расширение Views...
DrupalCamp Kyiv 2011. Views - стандарт вывода списка данных. Расширение Views...DrupalCamp Kyiv 2011. Views - стандарт вывода списка данных. Расширение Views...
DrupalCamp Kyiv 2011. Views - стандарт вывода списка данных. Расширение Views...
 
Drupal Camp Kyiv 2013. Удобная разработка drupal проекта. Полезные модули.
Drupal Camp Kyiv 2013. Удобная разработка drupal проекта. Полезные модули.Drupal Camp Kyiv 2013. Удобная разработка drupal проекта. Полезные модули.
Drupal Camp Kyiv 2013. Удобная разработка drupal проекта. Полезные модули.
 
Ruby on Rails. Пользовательский интерфейс
Ruby on Rails. Пользовательский интерфейсRuby on Rails. Пользовательский интерфейс
Ruby on Rails. Пользовательский интерфейс
 
Андрей Юн Удобная разработка Drupal проекта. Полезные модули
Андрей Юн Удобная разработка Drupal проекта. Полезные модулиАндрей Юн Удобная разработка Drupal проекта. Полезные модули
Андрей Юн Удобная разработка Drupal проекта. Полезные модули
 
Валерий Чугреев, ИСЭРТ РАН — Архитектура MVC в контексте web-разработки — про...
Валерий Чугреев, ИСЭРТ РАН — Архитектура MVC в контексте web-разработки — про...Валерий Чугреев, ИСЭРТ РАН — Архитектура MVC в контексте web-разработки — про...
Валерий Чугреев, ИСЭРТ РАН — Архитектура MVC в контексте web-разработки — про...
 
Как быть с большими сайтами на Word press
Как быть с большими сайтами  на Word pressКак быть с большими сайтами  на Word press
Как быть с большими сайтами на Word press
 
Comfortable drupal project development. Useful modules (Andriy Yun, studio de...
Comfortable drupal project development. Useful modules (Andriy Yun, studio de...Comfortable drupal project development. Useful modules (Andriy Yun, studio de...
Comfortable drupal project development. Useful modules (Andriy Yun, studio de...
 
Вёрстка WordPress тем - WP Kharkiv Meetup #1
Вёрстка WordPress тем - WP Kharkiv Meetup #1Вёрстка WordPress тем - WP Kharkiv Meetup #1
Вёрстка WordPress тем - WP Kharkiv Meetup #1
 
Drupal as service.
Drupal as service.Drupal as service.
Drupal as service.
 
Web deployment
Web deploymentWeb deployment
Web deployment
 
#3 "Webpack и Vue.JS: Создание больших приложений и их расширение" Кирилл Кай...
#3 "Webpack и Vue.JS: Создание больших приложений и их расширение" Кирилл Кай...#3 "Webpack и Vue.JS: Создание больших приложений и их расширение" Кирилл Кай...
#3 "Webpack и Vue.JS: Создание больших приложений и их расширение" Кирилл Кай...
 
Drush - незаменимый инструмент друпал разработчика
Drush - незаменимый инструмент друпал разработчикаDrush - незаменимый инструмент друпал разработчика
Drush - незаменимый инструмент друпал разработчика
 
XML Native Database на примере SednaXML
XML Native Database на примере SednaXMLXML Native Database на примере SednaXML
XML Native Database на примере SednaXML
 
Развертывание и управление CMS Drupal в Microsoft Azure
Развертывание и управление CMS Drupal в Microsoft AzureРазвертывание и управление CMS Drupal в Microsoft Azure
Развертывание и управление CMS Drupal в Microsoft Azure
 
Development and deployment freedom - MODX Meetup Minsk
Development and deployment freedom - MODX Meetup MinskDevelopment and deployment freedom - MODX Meetup Minsk
Development and deployment freedom - MODX Meetup Minsk
 
Drupal Do
Drupal DoDrupal Do
Drupal Do
 
Zend Framework и Doctrine
Zend Framework и DoctrineZend Framework и Doctrine
Zend Framework и Doctrine
 
Как мы делаем модули PHP в Badoo – Антон Довгаль
Как мы делаем модули PHP в Badoo – Антон ДовгальКак мы делаем модули PHP в Badoo – Антон Довгаль
Как мы делаем модули PHP в Badoo – Антон Довгаль
 
Drupal организация разработки
Drupal   организация разработкиDrupal   организация разработки
Drupal организация разработки
 
Drupal -organizaciya_razrabotki
Drupal  -organizaciya_razrabotkiDrupal  -organizaciya_razrabotki
Drupal -organizaciya_razrabotki
 

More from LEDC 2016

Слава Мережко — Практикум: "Як ростити розробників"
Слава Мережко — Практикум: "Як ростити розробників"Слава Мережко — Практикум: "Як ростити розробників"
Слава Мережко — Практикум: "Як ростити розробників"
LEDC 2016
 
Олексій Калініченко — Configuration Management in Drupal8
Олексій Калініченко — Configuration Management in Drupal8Олексій Калініченко — Configuration Management in Drupal8
Олексій Калініченко — Configuration Management in Drupal8
LEDC 2016
 
Олександр Лінивий — Multisite platform with continuous delivery process for m...
Олександр Лінивий — Multisite platform with continuous delivery process for m...Олександр Лінивий — Multisite platform with continuous delivery process for m...
Олександр Лінивий — Multisite platform with continuous delivery process for m...
LEDC 2016
 
Андрій Юн — Воркшоп "Docker use cases for developers"
Андрій Юн — Воркшоп "Docker use cases for developers"Андрій Юн — Воркшоп "Docker use cases for developers"
Андрій Юн — Воркшоп "Docker use cases for developers"
LEDC 2016
 
Тарас Круц — Open Social: brand new Drupal 8 distro for building social netwo...
Тарас Круц — Open Social: brand new Drupal 8 distro for building social netwo...Тарас Круц — Open Social: brand new Drupal 8 distro for building social netwo...
Тарас Круц — Open Social: brand new Drupal 8 distro for building social netwo...
LEDC 2016
 
Ігор Карпиленко — PHPStorm for drupal developer
Ігор Карпиленко — PHPStorm for drupal developerІгор Карпиленко — PHPStorm for drupal developer
Ігор Карпиленко — PHPStorm for drupal developer
LEDC 2016
 
Олександр Щедров — Build your application in seconds and optimize workflow as...
Олександр Щедров — Build your application in seconds and optimize workflow as...Олександр Щедров — Build your application in seconds and optimize workflow as...
Олександр Щедров — Build your application in seconds and optimize workflow as...
LEDC 2016
 
Анатолій Поляков — Subdomains everywhere
Анатолій Поляков — Subdomains everywhereАнатолій Поляков — Subdomains everywhere
Анатолій Поляков — Subdomains everywhere
LEDC 2016
 
Артем Доценко — Deploy Plus. Better UI and more control for deploy module
Артем Доценко — Deploy Plus. Better UI and more control for deploy moduleАртем Доценко — Deploy Plus. Better UI and more control for deploy module
Артем Доценко — Deploy Plus. Better UI and more control for deploy module
LEDC 2016
 
Віталій Бобров — Web components, Polymer and Drupal
Віталій Бобров — Web components, Polymer and DrupalВіталій Бобров — Web components, Polymer and Drupal
Віталій Бобров — Web components, Polymer and Drupal
LEDC 2016
 
Олександр Щедров та Альбіна Тюпа — Magic button. Can production releases be s...
Олександр Щедров та Альбіна Тюпа — Magic button. Can production releases be s...Олександр Щедров та Альбіна Тюпа — Magic button. Can production releases be s...
Олександр Щедров та Альбіна Тюпа — Magic button. Can production releases be s...
LEDC 2016
 
Юлія Снітко — Як подружити дизайнерів і Drupal розробників. Досвід ефективної...
Юлія Снітко — Як подружити дизайнерів і Drupal розробників. Досвід ефективної...Юлія Снітко — Як подружити дизайнерів і Drupal розробників. Досвід ефективної...
Юлія Снітко — Як подружити дизайнерів і Drupal розробників. Досвід ефективної...
LEDC 2016
 
Костянтин Чаус — Monitoring of huge Drupal site. Tools and tips
Костянтин Чаус — Monitoring of huge Drupal site. Tools and tipsКостянтин Чаус — Monitoring of huge Drupal site. Tools and tips
Костянтин Чаус — Monitoring of huge Drupal site. Tools and tips
LEDC 2016
 
Тарас Круц - Tips On Getting Everything You Can Out of Drupal Form API
Тарас Круц - Tips On Getting Everything You Can Out of Drupal Form APIТарас Круц - Tips On Getting Everything You Can Out of Drupal Form API
Тарас Круц - Tips On Getting Everything You Can Out of Drupal Form API
LEDC 2016
 
Тарас Цюпер - Методы кеширования и оптимизация Drupal 7 проектов
Тарас Цюпер - Методы кеширования и оптимизация Drupal 7 проектовТарас Цюпер - Методы кеширования и оптимизация Drupal 7 проектов
Тарас Цюпер - Методы кеширования и оптимизация Drupal 7 проектов
LEDC 2016
 
Анатолий Поляков - Drupal.ajax framework from a to z
Анатолий Поляков - Drupal.ajax framework from a to zАнатолий Поляков - Drupal.ajax framework from a to z
Анатолий Поляков - Drupal.ajax framework from a to z
LEDC 2016
 
Андрей Поданенко - Start using Vagrant now!
Андрей Поданенко - Start using Vagrant now!Андрей Поданенко - Start using Vagrant now!
Андрей Поданенко - Start using Vagrant now!
LEDC 2016
 
Александр Даниленко - Panels как философия
Александр Даниленко - Panels как философияАлександр Даниленко - Panels как философия
Александр Даниленко - Panels как философия
LEDC 2016
 

More from LEDC 2016 (18)

Слава Мережко — Практикум: "Як ростити розробників"
Слава Мережко — Практикум: "Як ростити розробників"Слава Мережко — Практикум: "Як ростити розробників"
Слава Мережко — Практикум: "Як ростити розробників"
 
Олексій Калініченко — Configuration Management in Drupal8
Олексій Калініченко — Configuration Management in Drupal8Олексій Калініченко — Configuration Management in Drupal8
Олексій Калініченко — Configuration Management in Drupal8
 
Олександр Лінивий — Multisite platform with continuous delivery process for m...
Олександр Лінивий — Multisite platform with continuous delivery process for m...Олександр Лінивий — Multisite platform with continuous delivery process for m...
Олександр Лінивий — Multisite platform with continuous delivery process for m...
 
Андрій Юн — Воркшоп "Docker use cases for developers"
Андрій Юн — Воркшоп "Docker use cases for developers"Андрій Юн — Воркшоп "Docker use cases for developers"
Андрій Юн — Воркшоп "Docker use cases for developers"
 
Тарас Круц — Open Social: brand new Drupal 8 distro for building social netwo...
Тарас Круц — Open Social: brand new Drupal 8 distro for building social netwo...Тарас Круц — Open Social: brand new Drupal 8 distro for building social netwo...
Тарас Круц — Open Social: brand new Drupal 8 distro for building social netwo...
 
Ігор Карпиленко — PHPStorm for drupal developer
Ігор Карпиленко — PHPStorm for drupal developerІгор Карпиленко — PHPStorm for drupal developer
Ігор Карпиленко — PHPStorm for drupal developer
 
Олександр Щедров — Build your application in seconds and optimize workflow as...
Олександр Щедров — Build your application in seconds and optimize workflow as...Олександр Щедров — Build your application in seconds and optimize workflow as...
Олександр Щедров — Build your application in seconds and optimize workflow as...
 
Анатолій Поляков — Subdomains everywhere
Анатолій Поляков — Subdomains everywhereАнатолій Поляков — Subdomains everywhere
Анатолій Поляков — Subdomains everywhere
 
Артем Доценко — Deploy Plus. Better UI and more control for deploy module
Артем Доценко — Deploy Plus. Better UI and more control for deploy moduleАртем Доценко — Deploy Plus. Better UI and more control for deploy module
Артем Доценко — Deploy Plus. Better UI and more control for deploy module
 
Віталій Бобров — Web components, Polymer and Drupal
Віталій Бобров — Web components, Polymer and DrupalВіталій Бобров — Web components, Polymer and Drupal
Віталій Бобров — Web components, Polymer and Drupal
 
Олександр Щедров та Альбіна Тюпа — Magic button. Can production releases be s...
Олександр Щедров та Альбіна Тюпа — Magic button. Can production releases be s...Олександр Щедров та Альбіна Тюпа — Magic button. Can production releases be s...
Олександр Щедров та Альбіна Тюпа — Magic button. Can production releases be s...
 
Юлія Снітко — Як подружити дизайнерів і Drupal розробників. Досвід ефективної...
Юлія Снітко — Як подружити дизайнерів і Drupal розробників. Досвід ефективної...Юлія Снітко — Як подружити дизайнерів і Drupal розробників. Досвід ефективної...
Юлія Снітко — Як подружити дизайнерів і Drupal розробників. Досвід ефективної...
 
Костянтин Чаус — Monitoring of huge Drupal site. Tools and tips
Костянтин Чаус — Monitoring of huge Drupal site. Tools and tipsКостянтин Чаус — Monitoring of huge Drupal site. Tools and tips
Костянтин Чаус — Monitoring of huge Drupal site. Tools and tips
 
Тарас Круц - Tips On Getting Everything You Can Out of Drupal Form API
Тарас Круц - Tips On Getting Everything You Can Out of Drupal Form APIТарас Круц - Tips On Getting Everything You Can Out of Drupal Form API
Тарас Круц - Tips On Getting Everything You Can Out of Drupal Form API
 
Тарас Цюпер - Методы кеширования и оптимизация Drupal 7 проектов
Тарас Цюпер - Методы кеширования и оптимизация Drupal 7 проектовТарас Цюпер - Методы кеширования и оптимизация Drupal 7 проектов
Тарас Цюпер - Методы кеширования и оптимизация Drupal 7 проектов
 
Анатолий Поляков - Drupal.ajax framework from a to z
Анатолий Поляков - Drupal.ajax framework from a to zАнатолий Поляков - Drupal.ajax framework from a to z
Анатолий Поляков - Drupal.ajax framework from a to z
 
Андрей Поданенко - Start using Vagrant now!
Андрей Поданенко - Start using Vagrant now!Андрей Поданенко - Start using Vagrant now!
Андрей Поданенко - Start using Vagrant now!
 
Александр Даниленко - Panels как философия
Александр Даниленко - Panels как философияАлександр Даниленко - Panels как философия
Александр Даниленко - Panels как философия
 

Олена Ольховик — Від frontend розробки до Drupal-темізації. Основи і специфіка

  • 1.
  • 2.
  • 3.
  • 4.
  • 5. Темизация - процесс внедрения верстки в CMF/СMS. Иными словами - процесс приведения внешнего вида сайта в соответствие с макетом. Что нужно знать: - HTML, CSS, JS - Основы PHP или другого бекендового языка
  • 6. 1. Сначала вывод данных, потом стилизация 2. Сначала верстка статических данных согласно дизайну, затем замена статических данных динамическими
  • 7. 1. Своя тема “с нуля” 2. Наследование от родительской темы Почитать подробнее: https://www.drupal.org/node/225125 Скачать готовую тему: https://www.drupal.org/project/project_theme
  • 8. 1. .info файл 2. разметка страниц в файлах шаблонов 3. изменение, добавление переменных и переопределение функций
  • 9.
  • 10.
  • 11.
  • 12. name required description core required engine base theme regions stylesheets scripts php … name = Mytheme description = Tableless, recolorable, multi-column, fluid width theme. core = 7.x engine = phptemplate base theme = bartik Почитать подробнее: https://www.drupal.org/node/171205#php
  • 13. Движок темизации в Drupal - функционал, обеспечивающий возможность взаимодействия слоя темизации с другими слоями в Drupal посредством шаблонов. Определяет синтаксис написания кода. PHPTemplate - стандартный движок темизации начиная с Drupal 4.7 Twig - стандартный движок темизации в Drupal 8 Почитать подробнее: https://www.drupal.org/project/project_theme_engine
  • 14. ; подключение стилей stylesheets[all][] = css/style.css stylesheets[print][] = css/print.css stylesheets-conditional[lte IE 7][all][] = css/ie7.css ; подключение скриптов scripts[] = mytheme.js Доступные условия IE: https://msdn.microsoft.com/en- us/library/ms537512(v=vs.85).aspx
  • 15.
  • 16. regions[content] = Content - обязательный регион! regions[custom_region] = My custom region regions[sidebar_first] = Sidebar first regions[page_top] = Page top regions[page_bottom] = Page bottom <?php if ($page['custom_region']): ?> <div id="custom_region"><div class="section"> <?php print render($page['custom_region']); ?> </div></div> <?php endif; ?>
  • 17.
  • 18.
  • 19. Реестр темы - это некая таблица в базе данных, которая является частью таблицы кеша Drupal, и в которой Drupal хранит информацию о доступных функциях темы и ее структуре. Почитать подробнее: https://www.drupal.org/node/173880#theme-registry
  • 20.
  • 21.
  • 22.
  • 23. Дебаггинг (отладка) – этап разработки программы, в ходе которого обнаруживают, локализуют и исправляют баги (ошибки). Отладка в Drupal - модуль Devel Основные функции отладки: dpm, dvm, kpr Синтаксис: <?php dpm($content); ?> Полезные ссылки: https://api.drupal.org/api/devel/devel.module/7 http://xandeadx.ru/blog/drupal/304
  • 24.
  • 25.
  • 26.
  • 27. Theme hook suggestion - это альтернативный файл шаблона, который мы создаем, чтобы переопределить вывод какого-либо блока. Пример: node--story.tpl.php field--story.tpl.php page--front.tpl.php https://www.drupal.org/node/1089656
  • 28. /** * Implements hook_block_view(). */ function share_block_view($delta = '') { $block = array(); switch ($delta) { case 'mytheme_share': $variables = array('url' => url(current_path(), array('absolute' => TRUE))); $block['content'] = theme('mytheme_share', $variables); break; } return $block; } /** * Implements hook_theme(). */ function lliwell_share_theme() { return array( 'lliwell_share' => array( 'variables' => array(), 'template' => 'lliwell_share', ), ); }
  • 29. /** * Implements hook_preprocess_node(). */ function mytheme_preprocess_node(&$variables) { // Add to node template mytheme_share block. $block = block_load('mytheme_share', 'mytheme_share'); $render_array = _block_get_renderable_array(_block_render_blocks(array($block))); $variables['content']['mytheme_share'] = $render_array; $variables['classes_array'][] = 'clearfix'; } Вывод в шаблоне: <?php print render($content['mytheme_share']); ?>
  • 30. Пишем строку в settings.php: $conf['theme_debug'] = TRUE;
  • 31. При необходимости подключения из функции: - drupal_add_js('jQuery(document).ready(function () { alert("Hello!"); });', array('type' => 'inline', 'scope' => 'footer') ); - drupal_add_js('misc/collapse.js'); Внешние скрипты: - drupal_add_js('http://example.com/example.js', 'external'); Drupal_add_js docs https://api.drupal.org/api/drupal/includes%21common.inc/function/drupal_add_js/7
  • 32. Не объявлена переменная $ (function () { $('div.menu-expanded').hide(); $(....); }); (function ($) { $(function () { $('div.menu-expanded').hide(); $(...); }); }) (jQuery);
  • 33. jQuery(document).ready(function($){ $('.view-display-id-page .views- row').addClass('fancy-pants'); }); Drupal.behaviors.infiniteScrollAddClass = { attach: function (context, settings) { $('.view-display-id-page .views- row').addClass('fancy-pants'); }}; Drupal.behaviors.infiniteScrollAddClass = { attach: function (context, settings) { // these are the elements loaded in first $('.view-display-id-page').once(function(){ $(this).find('.views-row').addClass('i-was-here- first'); }); // everybody $('.view-display-id-page .views- row').addClass('fancy-pants'); }}; Managing JS in drupal https://www.drupal.org/node/756722 http://www.amazeelabs.com/en/blog/drupal-behaviors-quick-how
  • 34. - Drupal general concepts https://www.drupal.org/node/19828 - Drupal 7 Theming Cookbook Karthik Kumar https://www.drupal.org/node/1849888 - Theming Drupal 7 https://www.drupal.org/theme-guide/6-7 - Documentation https://www.drupal.org/documentation/theme - Definitive Guide to Drupal 7 Theming http://themery.com/dgd7 - Lullabot.com - Theming Basics For Drupal - video - Lullabot.com - Advanced Theming For Drupal - video