1. Когда страница магазина получает post или get-запрос, то в первую очередь смотрится url этого запроса. По структуре url'а платформа понимает какой объект запрашивается и какой шаблон использовать.
Поэтому на url'ы страниц магазина очень многое завязано, и именно поэтому там присутствуют такие вставки как /collection/, /product/ и т.д.
2. Получив запрос, сервер формирует страницу в соответствии с имеющимся шаблоном этой страницы
Тип страницы (шаблон) | Имя файла в экспорте темы | URL |
Для всех типов (layout) |
layout.liquid | любой |
Главная | index.liquid | / |
Категория | collection.liquid | /collection/_name_ |
Товар | product.liquid | /collection/_collection_/product/_product_ или /product/_product_ |
Корзина | cart.iquid | /cart_items |
Страница | page.liquid | /page/_name_ |
Поиск | search.liquid | /search |
Блог | blog.liquid | /blog/_name_ |
Статья | article.liquid | /blog/_name_/_name_ |
Далее система инициализирует переменные, использованные на этой странице.
Затем шаблон преобразуется в HTML-код страницы.
Полученный код подставляется в layout, общий для всех страниц магазина, в место, обозначенное переменной content_for_layout.
Здесь производится подстановка конкретных значений использованных переменных.
Далее, в конец получившейся страницы добавляются обращения к счётчикам и сформированная страница отправляется в ответ на запрос.
3. Браузер посетителя получает страницу и формирует ее, после этого уже обрабатывает имеющийся там javascript и другой контент, обрабатываемый клиентом (flash, java и т.д.)
4. Отданная страница кешируется сервером, т.е. сохраняется в базе
5. При повторном запросе к той же странице ее формирование не проходит заново, страница отдается из кеша.
6. Кеш страницы сбрасывается при определенных изменениях в объекте, которому эта страница соответствует. Кеш страницы товара - при изменениях в товаре (названии, описании и т.д.), кеш страницы категории - при изменении товаров этой категории, порядка их сортировки, описании категории и т.д.
7. Необходимо понимать что использование какой-либо конструкции liquid'а еще не является гарантией того что эта конструкция будет обрабатываться при каждой загрузке страницы. Кеш, как говорилось ранее, сбрасывается при определенных событиях.
Например, можно вывести в шаблоне текущую дату, но если объект, который соответствует этой странице, не меняется каждый день, то и дата, выводимая таким образом, меняться не будет. Поэтому для таких целей лучше использовать javascript.
По этой же причине нельзя вывести на страницу IP-адрес посетителя, вывести случайные товары из категории или еще какой-либо случайный контент. Но можно использовать javascript, скрывая со страницы случайные элементы.