SlideShare a Scribd company logo
1 of 13
Download to read offline
• GET-запрос на URL /collection/any_collection
• Наличие collection в URL? Значит
используем шаблон «категория»
• Берем из базы данные о категории
any_collection
• Расставляем данные по шаблону, как нам
сказал разработчик шаблона
• Отдаем то, что получилось
• Кешируем!
• Используйте клиентские языки + liquid
• Используйте шаблоны по назначению
• Не используйте в качестве счетчика цикла и
не переопределяйте переменную, уже
определенную в текущем шаблоне
(collection в шаблоне Категория)
• Используйте набор переменных и
объектов. Редактор не позволит сохранить
шаблон, если нарушен порядок тегов
liquid’а
• Загрузка темы
• Сохранение темы
• Копирование (с предпросмотром)
• Редактирование
• Бекапы
Скрипты, стили, файлы
Settings.html – настройки
Сниппеты
Шаблоны
1. Объект settings – методы
определяются атрибутами
name формы из
settings.html.
2. Объект можно
использовать в любом
шаблоне, а также в
файлах *.js.liquid,
*.css.liquid
3. Пример использования –
{% if settings.show_text %}{{
blocks.smth.content }}{%
endif %}
http://wiki.insales.ru/wiki/Liquid
• {% теги – логика построения страницы на основе значений переменных
%}
• {{ вывод данных в код страницы }}
• product.title | фильтр – преобразование данных из product.title (можно
использовать несколько фильтров)
Теги:
• For ({% for col in collections %})
• If ({% if characteristic.handle == ‘new’ %})
• Tablerow ({% tablerow products by 3 %})
• Assign ({% assign curr_prod = product %}, можно использовать фильтры)
• Capture ({% capture im_title%}img_{{product.title}}.jpg{% endcapture %})
• Comment
• Описывает все, что находится на всех страницах (подвал, шапка, сайдбары, head, …)
• Контент страниц содержится в строковой переменной content_for_layout
• Самые полезные переменные:
• template
• keywords
• description
• title
• cart_url
• Объекты
• block_lists
• linklists
• collections
• cart
• blog
• account
• client
• Полная иерархия объектов и связи между ними:
http://wiki.insales.ru/wiki/Variables
http://wiki.insales.ru/wiki/Objects
• Описывает страницы, содержащие в URL ‘/collection/’
• Объект collection определен!
• Методы:
• properties
• options
• products
• subcollections
• meta_description
• meta_description
• page_title
• Специальный тег paginate ({% paginate products by 21 %})
• Полезное свойство внутри paginate – current_page ({% if paginate['current_page'] == 1 %})
• Возможные параметры GET-запросов:
• ?order={price, descending_price, title, age}
• ?page_size={num до 100!}
• ?characteristics[]={{characteristic.id}} (можно несколько, в т.ч. от одного property)
• ?options[{{option.id}}][] ={{value.id}} (можно несколько, в т.ч. от одного option)
• ?price_min={num}, ?price_max={num}
• ?q={string} (поисковый запрос)
• Есть JSON, при наличии callback-функции поддерживает кроссдоменные запросы (полезно для
создания виджетов для вставки на внешние сайты)
• Описывает страницы, содержащие в URL ‘/product/’
• Объект product определен!
• Если в URL также содержится ‘/collection/’, то и объект collection
определен
• Методы:
• available
• images
• small_url (48Х48)
• thumb_url (100x100)
• compact_url (160x160)
• medium_url (240x240)
• large_url (480x480)
• original_url - оригинальное
• variants
• price
• sku
• quantity
• option_values
• Тоже есть JSON (не кешируется, в отличие от страницы)
• Описывает страницу /cart_items
• Методы
• items (item == variant!)
• coupon
• discounts
• Есть JSON, на который можно отправлять
GET и POST-запросы
• Шаблоны ЛК и чекаута не редактируются (пока) 
• НО! Можно менять css - custom_checkout.css
• Есть поле для вставки любого кода на все страницы (в т.ч. js), в т.ч.
действует на страницы ЛК и чекаута, код вставляется перед закрывающим
body (требуются права администратора)
• Есть поле для кода на странице «Спасибо за заказ!», можно использовать
все методы объекта order (наследует все методы объекта cart + имеет
несколько своих, в т.ч. number, pay_url, fulfillment_status, client и т.д.),
вставляется после открывающего body (требуются права администратора)
• Письмо покупателю о заказе
• Письмо владельцу магазина о новом заказе
• Печатная форма заказа
• Уведомление покупателю о регистрации
• Можно использовать объект order и все его
методы
• Требуется доступ к разделу Заказы
(редактирование)

More Related Content

Similar to Templates kachalova 2014_new

Регрессионное тестирование верстки
Регрессионное тестирование версткиРегрессионное тестирование верстки
Регрессионное тестирование версткиTalks&Works
 
JavaScript-библиотека
JavaScript-библиотекаJavaScript-библиотека
JavaScript-библиотекаVasya Petrov
 
Вёрстка WordPress тем - WP Kharkiv Meetup #1
Вёрстка WordPress тем - WP Kharkiv Meetup #1Вёрстка WordPress тем - WP Kharkiv Meetup #1
Вёрстка WordPress тем - WP Kharkiv Meetup #1dima_kuzovlev
 
Сергей Бережной "Экзотическая шаблонизация, или как писать HTML для блоков"
Сергей Бережной "Экзотическая шаблонизация, или как писать HTML для блоков"Сергей Бережной "Экзотическая шаблонизация, или как писать HTML для блоков"
Сергей Бережной "Экзотическая шаблонизация, или как писать HTML для блоков"Yandex
 
Как создать тему для магазина на платформе InSales?
Как создать тему для магазина на платформе InSales?Как создать тему для магазина на платформе InSales?
Как создать тему для магазина на платформе InSales?InSales
 
kranonitS20 Сергей Бурма. Django - легко, быстро, эффективно
kranonitS20 Сергей Бурма. Django - легко, быстро, эффективноkranonitS20 Сергей Бурма. Django - легко, быстро, эффективно
kranonitS20 Сергей Бурма. Django - легко, быстро, эффективноKrivoy Rog IT Community
 
SEO-Friendly Websites
SEO-Friendly WebsitesSEO-Friendly Websites
SEO-Friendly WebsitesElkaakle
 
Python Meetup
Python Meetup Python Meetup
Python Meetup iQSpace
 
Как создать сайт
Как создать сайтКак создать сайт
Как создать сайтUnited Design
 
Система обработки бизнес-логики server-side приложения на Groovy
Система обработки бизнес-логики server-side приложения на GroovyСистема обработки бизнес-логики server-side приложения на Groovy
Система обработки бизнес-логики server-side приложения на GroovyRegn
 
Drupal 7 и history.js или как ajax инфицировать сайт
Drupal 7 и history.js или как ajax инфицировать сайтDrupal 7 и history.js или как ajax инфицировать сайт
Drupal 7 и history.js или как ajax инфицировать сайтDrupalCamp Kyiv Рысь
 
Работа со статикой в Django
Работа со статикой в DjangoРабота со статикой в Django
Работа со статикой в DjangoMoscowDjango
 
WebCamp: Developer Day: Parse'им бэкенд - Аким Халилов
WebCamp: Developer Day: Parse'им бэкенд - Аким ХалиловWebCamp: Developer Day: Parse'им бэкенд - Аким Халилов
WebCamp: Developer Day: Parse'им бэкенд - Аким ХалиловGeeksLab Odessa
 
Выжить с помощью ООП. Максим Гопей
Выжить с помощью ООП. Максим ГопейВыжить с помощью ООП. Максим Гопей
Выжить с помощью ООП. Максим ГопейEatDog
 
2013 09 19 кеширование на клиенте и сервере
2013 09 19 кеширование на клиенте и сервере2013 09 19 кеширование на клиенте и сервере
2013 09 19 кеширование на клиенте и сервереYandex
 
Web весна 2013 лекция 4
Web весна 2013 лекция 4Web весна 2013 лекция 4
Web весна 2013 лекция 4Technopark
 

Similar to Templates kachalova 2014_new (20)

Регрессионное тестирование верстки
Регрессионное тестирование версткиРегрессионное тестирование верстки
Регрессионное тестирование верстки
 
JavaScript-библиотека
JavaScript-библиотекаJavaScript-библиотека
JavaScript-библиотека
 
Вёрстка WordPress тем - WP Kharkiv Meetup #1
Вёрстка WordPress тем - WP Kharkiv Meetup #1Вёрстка WordPress тем - WP Kharkiv Meetup #1
Вёрстка WordPress тем - WP Kharkiv Meetup #1
 
I Net
I NetI Net
I Net
 
Backbone.js
Backbone.jsBackbone.js
Backbone.js
 
Сергей Бережной "Экзотическая шаблонизация, или как писать HTML для блоков"
Сергей Бережной "Экзотическая шаблонизация, или как писать HTML для блоков"Сергей Бережной "Экзотическая шаблонизация, или как писать HTML для блоков"
Сергей Бережной "Экзотическая шаблонизация, или как писать HTML для блоков"
 
Как создать тему для магазина на платформе InSales?
Как создать тему для магазина на платформе InSales?Как создать тему для магазина на платформе InSales?
Как создать тему для магазина на платформе InSales?
 
kranonitS20 Сергей Бурма. Django - легко, быстро, эффективно
kranonitS20 Сергей Бурма. Django - легко, быстро, эффективноkranonitS20 Сергей Бурма. Django - легко, быстро, эффективно
kranonitS20 Сергей Бурма. Django - легко, быстро, эффективно
 
SEO-Friendly Websites
SEO-Friendly WebsitesSEO-Friendly Websites
SEO-Friendly Websites
 
Python Meetup
Python Meetup Python Meetup
Python Meetup
 
Drupal 7 and History.js
Drupal 7 and History.jsDrupal 7 and History.js
Drupal 7 and History.js
 
Как создать сайт
Как создать сайтКак создать сайт
Как создать сайт
 
Система обработки бизнес-логики server-side приложения на Groovy
Система обработки бизнес-логики server-side приложения на GroovyСистема обработки бизнес-логики server-side приложения на Groovy
Система обработки бизнес-логики server-side приложения на Groovy
 
Drupal 7 и history.js или как ajax инфицировать сайт
Drupal 7 и history.js или как ajax инфицировать сайтDrupal 7 и history.js или как ajax инфицировать сайт
Drupal 7 и history.js или как ajax инфицировать сайт
 
Работа со статикой в Django
Работа со статикой в DjangoРабота со статикой в Django
Работа со статикой в Django
 
WebCamp: Developer Day: Parse'им бэкенд - Аким Халилов
WebCamp: Developer Day: Parse'им бэкенд - Аким ХалиловWebCamp: Developer Day: Parse'им бэкенд - Аким Халилов
WebCamp: Developer Day: Parse'им бэкенд - Аким Халилов
 
Выжить с помощью ООП. Максим Гопей
Выжить с помощью ООП. Максим ГопейВыжить с помощью ООП. Максим Гопей
Выжить с помощью ООП. Максим Гопей
 
2013 09 19 кеширование на клиенте и сервере
2013 09 19 кеширование на клиенте и сервере2013 09 19 кеширование на клиенте и сервере
2013 09 19 кеширование на клиенте и сервере
 
Survive with OOP
Survive with OOPSurvive with OOP
Survive with OOP
 
Web весна 2013 лекция 4
Web весна 2013 лекция 4Web весна 2013 лекция 4
Web весна 2013 лекция 4
 

More from InSales

Дмитрий Стёжин, Почта России
Дмитрий Стёжин, Почта РоссииДмитрий Стёжин, Почта России
Дмитрий Стёжин, Почта РоссииInSales
 
Артём Соколов, InSales
Артём Соколов, InSalesАртём Соколов, InSales
Артём Соколов, InSalesInSales
 
Армен Манукян, РЭЦ
Армен Манукян, РЭЦАрмен Манукян, РЭЦ
Армен Манукян, РЭЦInSales
 
3. Василий Жайворонок, Почта России
3. Василий Жайворонок, Почта России3. Василий Жайворонок, Почта России
3. Василий Жайворонок, Почта РоссииInSales
 
11. Иван Кургузов, РАЭК
11. Иван Кургузов, РАЭК11. Иван Кургузов, РАЭК
11. Иван Кургузов, РАЭКInSales
 
13. Марк Ситдиков, Good Seafood
13. Марк Ситдиков, Good Seafood13. Марк Ситдиков, Good Seafood
13. Марк Ситдиков, Good SeafoodInSales
 
12. Дарья Горелова, Scanners
12. Дарья Горелова, Scanners12. Дарья Горелова, Scanners
12. Дарья Горелова, ScannersInSales
 
10. Вадим Доброриз, Unisender
10. Вадим Доброриз, Unisender10. Вадим Доброриз, Unisender
10. Вадим Доброриз, UnisenderInSales
 
9. Сергей Лебедев, GIFTD
9. Сергей Лебедев, GIFTD9. Сергей Лебедев, GIFTD
9. Сергей Лебедев, GIFTDInSales
 
8. Светлана Афанасьева, СДЭК
8. Светлана Афанасьева, СДЭК8. Светлана Афанасьева, СДЭК
8. Светлана Афанасьева, СДЭКInSales
 
7. Лев Слепенков, Inbreake
7. Лев Слепенков, Inbreake7. Лев Слепенков, Inbreake
7. Лев Слепенков, InbreakeInSales
 
6. Артем Соколов, InSales
6. Артем Соколов, InSales6. Артем Соколов, InSales
6. Артем Соколов, InSalesInSales
 
5. Армен Манукян, Российский Экспортный Центр
5. Армен Манукян, Российский Экспортный Центр5. Армен Манукян, Российский Экспортный Центр
5. Армен Манукян, Российский Экспортный ЦентрInSales
 
4. Андрей Юкин, CRMagent
4. Андрей Юкин, CRMagent4. Андрей Юкин, CRMagent
4. Андрей Юкин, CRMagentInSales
 
2. Илья Коган, Яндекс.Маркет
2. Илья Коган, Яндекс.Маркет2. Илья Коган, Яндекс.Маркет
2. Илья Коган, Яндекс.МаркетInSales
 
1. Семен Окороков, ЕКАМ
1. Семен Окороков, ЕКАМ1. Семен Окороков, ЕКАМ
1. Семен Окороков, ЕКАМInSales
 
Алиса Киричок,Unisender
Алиса Киричок,UnisenderАлиса Киричок,Unisender
Алиса Киричок,UnisenderInSales
 
Александр Серебряков, TextBack
Александр Серебряков, TextBackАлександр Серебряков, TextBack
Александр Серебряков, TextBackInSales
 
Валерий Землянушнов, CDEK
Валерий Землянушнов, CDEKВалерий Землянушнов, CDEK
Валерий Землянушнов, CDEKInSales
 
Марат Арсланов, GIFTD
Марат Арсланов, GIFTDМарат Арсланов, GIFTD
Марат Арсланов, GIFTDInSales
 

More from InSales (20)

Дмитрий Стёжин, Почта России
Дмитрий Стёжин, Почта РоссииДмитрий Стёжин, Почта России
Дмитрий Стёжин, Почта России
 
Артём Соколов, InSales
Артём Соколов, InSalesАртём Соколов, InSales
Артём Соколов, InSales
 
Армен Манукян, РЭЦ
Армен Манукян, РЭЦАрмен Манукян, РЭЦ
Армен Манукян, РЭЦ
 
3. Василий Жайворонок, Почта России
3. Василий Жайворонок, Почта России3. Василий Жайворонок, Почта России
3. Василий Жайворонок, Почта России
 
11. Иван Кургузов, РАЭК
11. Иван Кургузов, РАЭК11. Иван Кургузов, РАЭК
11. Иван Кургузов, РАЭК
 
13. Марк Ситдиков, Good Seafood
13. Марк Ситдиков, Good Seafood13. Марк Ситдиков, Good Seafood
13. Марк Ситдиков, Good Seafood
 
12. Дарья Горелова, Scanners
12. Дарья Горелова, Scanners12. Дарья Горелова, Scanners
12. Дарья Горелова, Scanners
 
10. Вадим Доброриз, Unisender
10. Вадим Доброриз, Unisender10. Вадим Доброриз, Unisender
10. Вадим Доброриз, Unisender
 
9. Сергей Лебедев, GIFTD
9. Сергей Лебедев, GIFTD9. Сергей Лебедев, GIFTD
9. Сергей Лебедев, GIFTD
 
8. Светлана Афанасьева, СДЭК
8. Светлана Афанасьева, СДЭК8. Светлана Афанасьева, СДЭК
8. Светлана Афанасьева, СДЭК
 
7. Лев Слепенков, Inbreake
7. Лев Слепенков, Inbreake7. Лев Слепенков, Inbreake
7. Лев Слепенков, Inbreake
 
6. Артем Соколов, InSales
6. Артем Соколов, InSales6. Артем Соколов, InSales
6. Артем Соколов, InSales
 
5. Армен Манукян, Российский Экспортный Центр
5. Армен Манукян, Российский Экспортный Центр5. Армен Манукян, Российский Экспортный Центр
5. Армен Манукян, Российский Экспортный Центр
 
4. Андрей Юкин, CRMagent
4. Андрей Юкин, CRMagent4. Андрей Юкин, CRMagent
4. Андрей Юкин, CRMagent
 
2. Илья Коган, Яндекс.Маркет
2. Илья Коган, Яндекс.Маркет2. Илья Коган, Яндекс.Маркет
2. Илья Коган, Яндекс.Маркет
 
1. Семен Окороков, ЕКАМ
1. Семен Окороков, ЕКАМ1. Семен Окороков, ЕКАМ
1. Семен Окороков, ЕКАМ
 
Алиса Киричок,Unisender
Алиса Киричок,UnisenderАлиса Киричок,Unisender
Алиса Киричок,Unisender
 
Александр Серебряков, TextBack
Александр Серебряков, TextBackАлександр Серебряков, TextBack
Александр Серебряков, TextBack
 
Валерий Землянушнов, CDEK
Валерий Землянушнов, CDEKВалерий Землянушнов, CDEK
Валерий Землянушнов, CDEK
 
Марат Арсланов, GIFTD
Марат Арсланов, GIFTDМарат Арсланов, GIFTD
Марат Арсланов, GIFTD
 

Templates kachalova 2014_new

  • 1.
  • 2. • GET-запрос на URL /collection/any_collection • Наличие collection в URL? Значит используем шаблон «категория» • Берем из базы данные о категории any_collection • Расставляем данные по шаблону, как нам сказал разработчик шаблона • Отдаем то, что получилось • Кешируем!
  • 3. • Используйте клиентские языки + liquid • Используйте шаблоны по назначению • Не используйте в качестве счетчика цикла и не переопределяйте переменную, уже определенную в текущем шаблоне (collection в шаблоне Категория) • Используйте набор переменных и объектов. Редактор не позволит сохранить шаблон, если нарушен порядок тегов liquid’а
  • 4. • Загрузка темы • Сохранение темы • Копирование (с предпросмотром) • Редактирование • Бекапы
  • 5. Скрипты, стили, файлы Settings.html – настройки Сниппеты Шаблоны
  • 6. 1. Объект settings – методы определяются атрибутами name формы из settings.html. 2. Объект можно использовать в любом шаблоне, а также в файлах *.js.liquid, *.css.liquid 3. Пример использования – {% if settings.show_text %}{{ blocks.smth.content }}{% endif %}
  • 7. http://wiki.insales.ru/wiki/Liquid • {% теги – логика построения страницы на основе значений переменных %} • {{ вывод данных в код страницы }} • product.title | фильтр – преобразование данных из product.title (можно использовать несколько фильтров) Теги: • For ({% for col in collections %}) • If ({% if characteristic.handle == ‘new’ %}) • Tablerow ({% tablerow products by 3 %}) • Assign ({% assign curr_prod = product %}, можно использовать фильтры) • Capture ({% capture im_title%}img_{{product.title}}.jpg{% endcapture %}) • Comment
  • 8. • Описывает все, что находится на всех страницах (подвал, шапка, сайдбары, head, …) • Контент страниц содержится в строковой переменной content_for_layout • Самые полезные переменные: • template • keywords • description • title • cart_url • Объекты • block_lists • linklists • collections • cart • blog • account • client • Полная иерархия объектов и связи между ними: http://wiki.insales.ru/wiki/Variables http://wiki.insales.ru/wiki/Objects
  • 9. • Описывает страницы, содержащие в URL ‘/collection/’ • Объект collection определен! • Методы: • properties • options • products • subcollections • meta_description • meta_description • page_title • Специальный тег paginate ({% paginate products by 21 %}) • Полезное свойство внутри paginate – current_page ({% if paginate['current_page'] == 1 %}) • Возможные параметры GET-запросов: • ?order={price, descending_price, title, age} • ?page_size={num до 100!} • ?characteristics[]={{characteristic.id}} (можно несколько, в т.ч. от одного property) • ?options[{{option.id}}][] ={{value.id}} (можно несколько, в т.ч. от одного option) • ?price_min={num}, ?price_max={num} • ?q={string} (поисковый запрос) • Есть JSON, при наличии callback-функции поддерживает кроссдоменные запросы (полезно для создания виджетов для вставки на внешние сайты)
  • 10. • Описывает страницы, содержащие в URL ‘/product/’ • Объект product определен! • Если в URL также содержится ‘/collection/’, то и объект collection определен • Методы: • available • images • small_url (48Х48) • thumb_url (100x100) • compact_url (160x160) • medium_url (240x240) • large_url (480x480) • original_url - оригинальное • variants • price • sku • quantity • option_values • Тоже есть JSON (не кешируется, в отличие от страницы)
  • 11. • Описывает страницу /cart_items • Методы • items (item == variant!) • coupon • discounts • Есть JSON, на который можно отправлять GET и POST-запросы
  • 12. • Шаблоны ЛК и чекаута не редактируются (пока)  • НО! Можно менять css - custom_checkout.css • Есть поле для вставки любого кода на все страницы (в т.ч. js), в т.ч. действует на страницы ЛК и чекаута, код вставляется перед закрывающим body (требуются права администратора) • Есть поле для кода на странице «Спасибо за заказ!», можно использовать все методы объекта order (наследует все методы объекта cart + имеет несколько своих, в т.ч. number, pay_url, fulfillment_status, client и т.д.), вставляется после открывающего body (требуются права администратора)
  • 13. • Письмо покупателю о заказе • Письмо владельцу магазина о новом заказе • Печатная форма заказа • Уведомление покупателю о регистрации • Можно использовать объект order и все его методы • Требуется доступ к разделу Заказы (редактирование)