<?xml version="1.0" encoding="utf-8"?> 
<rss version="2.0"
  xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd"
  xmlns:atom="http://www.w3.org/2005/Atom">

<channel>

<title>Тег: работа</title>
<link>https://antonkim.ru/blog/tags/work/</link>
<description>Заметки о рабочем опыте</description>
<author>Антон Ким</author>
<language>ru</language>
<generator>E2 (v3849; Aegea)</generator>

<itunes:owner>
<itunes:name>Антон Ким</itunes:name>
<itunes:email></itunes:email>
</itunes:owner>
<itunes:subtitle>Заметки о рабочем опыте</itunes:subtitle>
<itunes:image href="" />
<itunes:explicit></itunes:explicit>

<item>
<title>Кейс: как организовать работу в Трелло</title>
<guid isPermaLink="false">160</guid>
<link>https://antonkim.ru/blog/all/work-in-trello/</link>
<pubDate>Mon, 22 Feb 2021 19:26:01 +0000</pubDate>
<author>Антон Ким</author>
<comments>https://antonkim.ru/blog/all/work-in-trello/</comments>
<description>
&lt;p class="foot"&gt;Из серии &lt;a href="https://antonkim.ru/blog/all/andbo" class="nu"&gt;«&lt;u&gt;Как я вышел из бизнеса&lt;/u&gt;»&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Трелло — система управления проектами по методу японских канбан-досок. Один из моих любимых рабочих инструментов. В компании мы использовали Трелло с самого начала.&lt;/p&gt;
&lt;p&gt;В Трелло мы создавали доски для каждого отдела: для отдела маркетинга, обработки и выполнения заказов, работы с поставщиками. По началу и с заказами работали там, и с клиентской базой — для этого есть специальные расширения. Были и отдельные доски для идей и организационных вопросов.&lt;/p&gt;
&lt;p&gt;Покажу как мы работали на примере отдела маркетинга, которым я руководил. &lt;mark&gt;Все скриншоты в заметке созданы с нуля, потому что у меня нет доступа к команде. А если бы и был, всё равно не показал бы.&lt;/mark&gt;&lt;/p&gt;
&lt;p&gt;Где-то в первые полгода доска выглядела так:&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://antonkim.ru/blog/pictures/trello-1.jpg" width="1920" height="940" alt="" /&gt;
&lt;/div&gt;
&lt;p&gt;Задачи — это всё, что нужно сделать; что поступает. В процессе — то, что делается прямо сейчас. Готово — то, что сделано. Отложено — то, что стало временно (или нет) неактуально. Где-то один раз в два месяца мы «обнуляли» доску, архивируя сделанные задачи.&lt;/p&gt;
&lt;p&gt;К каждой задаче прикреплялся исполнитель, дедлайн, описание задачи и &lt;nobr&gt;чек-лист&lt;/nobr&gt; при необходимости. У каждого исполнителя должна была быть аватарка, чтобы сразу было видно кто чем занят.&lt;/p&gt;
&lt;p&gt;В Трелло — наглядно: если дедлайн просрочится, дата станет красной; если всё в срок — зелёной. Если сделал раньше дедлайна — можно написать об этом в комментариях и идти отдыхать.&lt;/p&gt;
&lt;p&gt;Кроме этого, можно отслеживать прогресс задачи с помощью &lt;nobr&gt;чек-листов&lt;/nobr&gt;. Допустим, нужно добавить 100 товаров на сайт. Все названия товаров заносятся в карточку задачи. Добавил товар — отметил в Трелло:&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://antonkim.ru/blog/pictures/trello-2.jpg" width="960" height="943" alt="" /&gt;
&lt;/div&gt;
&lt;p&gt;По мере роста команды и количества задач, доска начала видоизменяться. Чтобы задачи кучей не копились в одном блоке, для удобства и наглядности мы их разделили:&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://antonkim.ru/blog/pictures/trello-3.jpg" width="1920" height="940" alt="" /&gt;
&lt;/div&gt;
&lt;p&gt;Когда у каждой задачи есть дедлайн, все они отображаются в календаре:&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://antonkim.ru/blog/pictures/trello-5.jpg" width="1920" height="941" alt="" /&gt;
&lt;/div&gt;
&lt;p&gt;Пока писал эту заметку — заметил нововведение: теперь можно не только дедлайн назначить, но и дату начала:&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://antonkim.ru/blog/pictures/trello-4.jpg" width="960" height="500" alt="" /&gt;
&lt;/div&gt;
&lt;h2&gt;Резюмируя&lt;/h2&gt;
&lt;p&gt;Вот что нам помогло для прозрачной и эффективной работы:&lt;/p&gt;
&lt;ol start="1"&gt;
&lt;li&gt;Для одной конкретной задачи — создавать одну конкретную карточку.&lt;/li&gt;
&lt;/ol&gt;
&lt;ol start="2"&gt;
&lt;li&gt;Подробно описывать каждую задачу.&lt;/li&gt;
&lt;/ol&gt;
&lt;ol start="3"&gt;
&lt;li&gt;Разбивать задачи на маленькие шаги с помощью чек-листов.&lt;/li&gt;
&lt;/ol&gt;
&lt;ol start="4"&gt;
&lt;li&gt;Назначать исполнителей. Обязательно с аватаркой.&lt;/li&gt;
&lt;/ol&gt;
&lt;ol start="5"&gt;
&lt;li&gt;Ставить дедлайн к задачам.&lt;/li&gt;
&lt;/ol&gt;
&lt;ol start="6"&gt;
&lt;li&gt;Есть есть вопросы — писать в комментариях.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Лайфхак: если в комментариях карточки отправить ссылку на видео с ютюба, его можно прям там и посмотреть. Удобно.&lt;/p&gt;
</description>
</item>

<item>
<title>Кейс: как использовать UTM-метки в инстаграме</title>
<guid isPermaLink="false">129</guid>
<link>https://antonkim.ru/blog/all/utm-tags-on-instagram/</link>
<pubDate>Sat, 19 Sep 2020 18:04:11 +0000</pubDate>
<author>Антон Ким</author>
<comments>https://antonkim.ru/blog/all/utm-tags-on-instagram/</comments>
<description>
&lt;p class="foot"&gt;Из серии &lt;a href="https://antonkim.ru/blog/all/andbo" class="nu"&gt;«&lt;u&gt;Как я вышел из бизнеса&lt;/u&gt;»&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;UTM-метки — это такое «дополнение» к ссылкам, благодаря которому можно отследить источник трафика на сайте. Это позволяет оценить каналы продаж, эффективность рекламы и вот это всё.&lt;/p&gt;
&lt;p&gt;Выглядят они так:&lt;br /&gt;
&lt;tt&gt;&lt;a href="https://antonkim.ru?utm_source=blog&amp;utm_medium=note&amp;utm_campaign=hello"&gt;https://antonkim.ru?utm_source=blog&amp;utm_medium=note&amp;utm_campaign=hello&lt;/a&gt;&lt;/tt&gt;&lt;/p&gt;
&lt;p&gt;Если вы перейдёте по этой ссылке, то в аналитике я увижу, что вы перешли на главную страницу моего сайта именно по этой ссылке.&lt;/p&gt;
&lt;p&gt;Если коротко:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;utm_sourse&lt;/strong&gt; — откуда к вам придут. Например, вы запустили контекстную рекламу в Яндексе, пишем — &lt;tt&gt;yandex&lt;/tt&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;utm_medium&lt;/strong&gt; — каким способом к вам придут. Например, вы платите за каждый клик, пишем — &lt;tt&gt;ppc&lt;/tt&gt; (per pay click).&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;utm_campaign&lt;/strong&gt; — название кампании. Например, вы запустили рекламу для продажи стекловаты, пишем — &lt;tt&gt;steklovata&lt;/tt&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;На практике&lt;/h2&gt;
&lt;p&gt;У нас, в интернет-магазине, были ссылки на сайт — в профиле, в рекламных постах и сторисах. Например, ссылка на сайт в профиле выглядела так:&lt;br /&gt;
&lt;tt&gt;&lt;a href="https://andbo.uz/?utm_source=instagram&amp;utm_medium=profile&amp;utm_campaign=url"&gt;https://andbo.uz/?utm_source=instagram&amp;utm_medium=profile&amp;utm_campaign=url&lt;/a&gt;&lt;/tt&gt;&lt;/p&gt;
&lt;p&gt;Хочу акцентрировать внимание не на самой ссылке, а на её длине. Технически, такую ссылку можно использовать в профиле, но проблема в другом — это некрасиво:&lt;/p&gt;
&lt;div class="image-border" style="max-width: 840px;"&gt;&lt;div class="e2-text-picture"&gt;
&lt;img src="https://antonkim.ru/blog/pictures/utm-andbo.jpg" width="1680" height="1677" alt="" /&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Чтобы сделать красивее, есть два решения:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Простой способ: использовать сервис сокращения ссылок.&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;Сложный способ: использовать редиректы.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Простой способ&lt;/h2&gt;
&lt;p&gt;Он подразумевает, что вы регистрируетесь, например, в сервисе &lt;a href="https://bitly.com/"&gt;bitly.com&lt;/a&gt; и создаёте сокращённую ссылку:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://bit.ly/testoviy-url"&gt;http://bit.ly/testoviy-url&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Это рабочий вариант: ссылка стала компактной, но содержимое осталось на месте.&lt;/p&gt;
&lt;p&gt;Минус такого подхода в том, что это ссылка стороннего ресурса, в ней нет названия вашего домена. Кроме этого, иногда, такие ссылки не внушают доверия.&lt;/p&gt;
&lt;p&gt;Более «серьёзный» вариант — использовать редиректы.&lt;/p&gt;
&lt;h2&gt;Сложный способ&lt;/h2&gt;
&lt;p&gt;Редирект — это перенаправление. Откуда угодно: с одного сайта на другой, с одной страницы на другую и так далее.&lt;/p&gt;
&lt;p&gt;Редирект можно прописать в файле &lt;tt&gt;.htaccess&lt;/tt&gt;, который находится в корне вашего сайта. Если его нет — нужно создать.&lt;/p&gt;
&lt;p&gt;Способ, которым я пользовался, выглядит так:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;Redirect 301 /i https://antonkim.ru?utm_source=instagram&amp;amp;utm_medium=profile&amp;amp;utm_campaign=test&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Это значит, что когда я перейду по ссылке &lt;tt&gt;antonkim.ru/i&lt;/tt&gt;, я попаду на страницу с UTM-метками. Миссия выполнена. Посмотрите сами:&lt;/p&gt;
&lt;p&gt;&lt;a href="https://antonkim.ru/i"&gt;https://antonkim.ru/i&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Вместо &lt;tt&gt;/i&lt;/tt&gt; можно подставить всё, что угодно. Например, &lt;tt&gt;/instagram&lt;/tt&gt;.&lt;/p&gt;
&lt;p&gt;Такие редиректы можно применять не только для главной страницы, а вообще для всего. Например, в рекламных постах:&lt;/p&gt;
&lt;p&gt;&lt;tt&gt;vash-site.ru/i/kak-ya-delal-utm-metki&lt;/tt&gt;&lt;/p&gt;
&lt;p&gt;↓&lt;/p&gt;
&lt;p&gt;&lt;tt&gt;vash-site.ru/kak-ya-delal-utm-metki?utm_source=instagram&amp;utm_medium=post&amp;utm_campaign=privet&lt;/tt&gt;&lt;/p&gt;
&lt;h2&gt;В заключении&lt;/h2&gt;
&lt;p&gt;В Яндекс Метрике переходы по UTM-меткам можно посмотреть здесь:&lt;/p&gt;
&lt;p&gt;&lt;mark&gt;Отчёты → стандартные отчёты → источники → Метки UTM&lt;/mark&gt;&lt;/p&gt;
&lt;p&gt;Вариант с редиректами, возможно, не самый изящный, но лучше я не придумал. Если вы знаете, как сделать лучше, поделитесь в комментариях :—)&lt;/p&gt;
</description>
</item>

<item>
<title>Кейс: посты в инстаграме в стиле Тинькофф-журнала</title>
<guid isPermaLink="false">128</guid>
<link>https://antonkim.ru/blog/all/posts-in-the-style-of-tinkoff-journal/</link>
<pubDate>Fri, 18 Sep 2020 18:01:50 +0000</pubDate>
<author>Антон Ким</author>
<comments>https://antonkim.ru/blog/all/posts-in-the-style-of-tinkoff-journal/</comments>
<description>
&lt;p class="foot"&gt;Из серии &lt;a href="https://antonkim.ru/blog/all/andbo/" class="nu"&gt;«&lt;u&gt;Как я вышел из бизнеса&lt;/u&gt;»&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;У нас не было ни журнала, ни издания, ни корпоративного блога. Для этого не было ни времени, ни людей, ни бюджета. Однако, были часто задаваемые вопросы. Решил поэкспериментировать.&lt;/p&gt;
&lt;div style="max-width: 840px;"&gt;&lt;div class="e2-text-picture"&gt;
&lt;div class="fotorama" data-width="1080" data-ratio="1"&gt;
&lt;img src="https://antonkim.ru/blog/pictures/mi-band-1.jpg" width="1080" height="1080" alt="" /&gt;
&lt;img src="https://antonkim.ru/blog/pictures/mi-band-2.jpg" width="1080" height="1080" alt="" /&gt;
&lt;img src="https://antonkim.ru/blog/pictures/mi-band-3.jpg" width="1080" height="1080" alt="" /&gt;
&lt;img src="https://antonkim.ru/blog/pictures/mi-band-4.jpg" width="1080" height="1080" alt="" /&gt;
&lt;img src="https://antonkim.ru/blog/pictures/mi-band-5.jpg" width="1080" height="1080" alt="" /&gt;
&lt;img src="https://antonkim.ru/blog/pictures/mi-band-6.jpg" width="1080" height="1080" alt="" /&gt;
&lt;/div&gt;
&lt;div class="e2-text-caption"&gt;1&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;div style="max-width: 840px;"&gt;&lt;div class="e2-text-picture"&gt;
&lt;div class="fotorama" data-width="1080" data-ratio="1"&gt;
&lt;img src="https://antonkim.ru/blog/pictures/redmi-airdots-1.jpg" width="1080" height="1080" alt="" /&gt;
&lt;img src="https://antonkim.ru/blog/pictures/redmi-airdots-2.jpg" width="1080" height="1080" alt="" /&gt;
&lt;img src="https://antonkim.ru/blog/pictures/redmi-airdots-3.jpg" width="1080" height="1080" alt="" /&gt;
&lt;img src="https://antonkim.ru/blog/pictures/redmi-airdots-4.jpg" width="1080" height="1080" alt="" /&gt;
&lt;img src="https://antonkim.ru/blog/pictures/redmi-airdots-5.jpg" width="1080" height="1080" alt="" /&gt;
&lt;img src="https://antonkim.ru/blog/pictures/redmi-airdots-6.jpg" width="1080" height="1080" alt="" /&gt;
&lt;img src="https://antonkim.ru/blog/pictures/redmi-airdots-7.jpg" width="1080" height="1080" alt="" /&gt;
&lt;img src="https://antonkim.ru/blog/pictures/redmi-airdots-8.jpg" width="1080" height="1080" alt="" /&gt;
&lt;/div&gt;
&lt;div class="e2-text-caption"&gt;2&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;div style="max-width: 840px;"&gt;&lt;div class="e2-text-picture"&gt;
&lt;div class="fotorama" data-width="1080" data-ratio="1"&gt;
&lt;img src="https://antonkim.ru/blog/pictures/headphones-1.jpg" width="1080" height="1080" alt="" /&gt;
&lt;img src="https://antonkim.ru/blog/pictures/headphones-2.jpg" width="1080" height="1080" alt="" /&gt;
&lt;img src="https://antonkim.ru/blog/pictures/headphones-3.jpg" width="1080" height="1080" alt="" /&gt;
&lt;img src="https://antonkim.ru/blog/pictures/headphones-4.jpg" width="1080" height="1080" alt="" /&gt;
&lt;img src="https://antonkim.ru/blog/pictures/headphones-5.jpg" width="1080" height="1080" alt="" /&gt;
&lt;img src="https://antonkim.ru/blog/pictures/headphones-6.jpg" width="1080" height="1080" alt="" /&gt;
&lt;img src="https://antonkim.ru/blog/pictures/headphones-7.jpg" width="1080" height="1080" alt="" /&gt;
&lt;img src="https://antonkim.ru/blog/pictures/headphones-8.jpg" width="1080" height="1080" alt="" /&gt;
&lt;/div&gt;
&lt;div class="e2-text-caption"&gt;3&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;div style="max-width: 840px;"&gt;&lt;div class="e2-text-picture"&gt;
&lt;div class="fotorama" data-width="1080" data-ratio="1"&gt;
&lt;img src="https://antonkim.ru/blog/pictures/ip-1.jpg" width="1080" height="1080" alt="" /&gt;
&lt;img src="https://antonkim.ru/blog/pictures/ip-2.jpg" width="1080" height="1080" alt="" /&gt;
&lt;img src="https://antonkim.ru/blog/pictures/ip-3.jpg" width="1080" height="1080" alt="" /&gt;
&lt;img src="https://antonkim.ru/blog/pictures/ip-4.jpg" width="1080" height="1080" alt="" /&gt;
&lt;img src="https://antonkim.ru/blog/pictures/ip-5.jpg" width="1080" height="1080" alt="" /&gt;
&lt;img src="https://antonkim.ru/blog/pictures/ip-6.jpg" width="1080" height="1080" alt="" /&gt;
&lt;img src="https://antonkim.ru/blog/pictures/ip-7.jpg" width="1080" height="1080" alt="" /&gt;
&lt;/div&gt;
&lt;div class="e2-text-caption"&gt;4&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;div style="max-width: 840px;"&gt;&lt;div class="e2-text-picture"&gt;
&lt;div class="fotorama" data-width="1080" data-ratio="1"&gt;
&lt;img src="https://antonkim.ru/blog/pictures/wireless-1.jpg" width="1080" height="1080" alt="" /&gt;
&lt;img src="https://antonkim.ru/blog/pictures/wireless-2.jpg" width="1080" height="1080" alt="" /&gt;
&lt;img src="https://antonkim.ru/blog/pictures/wireless-3.jpg" width="1080" height="1080" alt="" /&gt;
&lt;img src="https://antonkim.ru/blog/pictures/wireless-4.jpg" width="1080" height="1080" alt="" /&gt;
&lt;img src="https://antonkim.ru/blog/pictures/wireless-5.jpg" width="1080" height="1080" alt="" /&gt;
&lt;img src="https://antonkim.ru/blog/pictures/wireless-6.jpg" width="1080" height="1080" alt="" /&gt;
&lt;img src="https://antonkim.ru/blog/pictures/wireless-7.jpg" width="1080" height="1080" alt="" /&gt;
&lt;img src="https://antonkim.ru/blog/pictures/wireless-8.jpg" width="1080" height="1080" alt="" /&gt;
&lt;/div&gt;
&lt;div class="e2-text-caption"&gt;5&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;div style="max-width: 840px;"&gt;&lt;div class="e2-text-picture"&gt;
&lt;div class="fotorama" data-width="1080" data-ratio="1"&gt;
&lt;img src="https://antonkim.ru/blog/pictures/power-banks-1.jpg" width="1080" height="1080" alt="" /&gt;
&lt;img src="https://antonkim.ru/blog/pictures/power-banks-2.jpg" width="1080" height="1080" alt="" /&gt;
&lt;img src="https://antonkim.ru/blog/pictures/power-banks-3.jpg" width="1080" height="1080" alt="" /&gt;
&lt;img src="https://antonkim.ru/blog/pictures/power-banks-4.jpg" width="1080" height="1080" alt="" /&gt;
&lt;img src="https://antonkim.ru/blog/pictures/power-banks-5.jpg" width="1080" height="1080" alt="" /&gt;
&lt;img src="https://antonkim.ru/blog/pictures/power-banks-6.jpg" width="1080" height="1080" alt="" /&gt;
&lt;/div&gt;
&lt;div class="e2-text-caption"&gt;6&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2&gt;В заключении&lt;/h2&gt;
&lt;p&gt;Эти посты хорошо себя зарекомендовали, но их было мало, они были нерегулярными и не было возможности развивать это направление.&lt;/p&gt;
</description>
</item>

<item>
<title>Кейс: подборки товаров в инстаграме</title>
<guid isPermaLink="false">127</guid>
<link>https://antonkim.ru/blog/all/collections-of-goods-on-instagram/</link>
<pubDate>Fri, 18 Sep 2020 16:01:34 +0000</pubDate>
<author>Антон Ким</author>
<comments>https://antonkim.ru/blog/all/collections-of-goods-on-instagram/</comments>
<description>
&lt;p class="foot"&gt;Из серии &lt;a href="https://antonkim.ru/blog/all/andbo/" class="nu"&gt;«&lt;u&gt;Как я вышел из бизнеса&lt;/u&gt;»&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Для нас инстаграм был одним из основных каналов продаж и источников трафика на сайт. Когда интернет-магазин начал расти, а товаров становилось всё больше, нужно было решить, как с ним работать дальше.&lt;/p&gt;
&lt;p&gt;При поиске решения, я ориентировался на несколько вопросов:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Как не плодить бесконечное количество постов с товарами?&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;Как при этом уместить большое количество товаров?&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;Как выделяться на фоне других интернет-магазинов?&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;Как сделать рекламу постов эффективнее?&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;Как делать и красиво, и информативно?&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Как нашлось решение&lt;/h2&gt;
&lt;p&gt;Чтобы найти решение, я просмотрел десятки профилей интернет-магазинов. Ничего особенного. В итоге, меня вдохновил пост в Тинькофф-журнале:&lt;/p&gt;
&lt;blockquote class="instagram-media" data-instgrm-permalink="https://www.instagram.com/p/By-UZKDla0o/?utm_source=ig_embed&amp;amp;utm_campaign=loading" data-instgrm-version="12" style=" background:#FFF; border:0; border-radius:3px; box-shadow:0 0 1px 0 rgba(0,0,0,0.5),0 1px 10px 0 rgba(0,0,0,0.15); margin: 1px; max-width:540px; min-width:326px; padding:0; width:99.375%; width:-webkit-calc(100% - 2px); width:calc(100% - 2px);"&gt;&lt;div style="padding:16px;"&gt;&lt;p&gt;&lt;a href="https://www.instagram.com/p/By-UZKDla0o/?utm_source=ig_embed&amp;amp;utm_campaign=loading" style=" background:#FFFFFF; line-height:0; padding:0 0; text-align:center; text-decoration:none; width:100%;" target="_blank"&gt;&lt;/p&gt;
&lt;div style=" display: flex; flex-direction: row; align-items: center;"&gt;&lt;div style="background-color: #F4F4F4; border-radius: 50%; flex-grow: 0; height: 40px; margin-right: 14px; width: 40px;"&gt;&lt;/div&gt;&lt;div style="display: flex; flex-direction: column; flex-grow: 1; justify-content: center;"&gt;&lt;div style=" background-color: #F4F4F4; border-radius: 4px; flex-grow: 0; height: 14px; margin-bottom: 6px; width: 100px;"&gt;&lt;/div&gt;&lt;div style=" background-color: #F4F4F4; border-radius: 4px; flex-grow: 0; height: 14px; width: 60px;"&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="padding: 19% 0;"&gt;&lt;/div&gt;&lt;div style="display:block; height:50px; margin:0 auto 12px; width:50px;"&gt;&lt;p&gt;&lt;svg width="50px" height="50px" viewBox="0 0 60 60" version="1.1" xmlns="https://www.w3.org/2000/svg" xmlns:xlink="https://www.w3.org/1999/xlink"&gt;&lt;g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"&gt;&lt;g transform="translate(-511.000000, -20.000000)" fill="#000000"&gt;&lt;g&gt;&lt;path d="M556.869,30.41 C554.814,30.41 553.148,32.076 553.148,34.131 C553.148,36.186 554.814,37.852 556.869,37.852 C558.924,37.852 560.59,36.186 560.59,34.131 C560.59,32.076 558.924,30.41 556.869,30.41 M541,60.657 C535.114,60.657 530.342,55.887 530.342,50 C530.342,44.114 535.114,39.342 541,39.342 C546.887,39.342 551.658,44.114 551.658,50 C551.658,55.887 546.887,60.657 541,60.657 M541,33.886 C532.1,33.886 524.886,41.1 524.886,50 C524.886,58.899 532.1,66.113 541,66.113 C549.9,66.113 557.115,58.899 557.115,50 C557.115,41.1 549.9,33.886 541,33.886 M565.378,62.101 C565.244,65.022 564.756,66.606 564.346,67.663 C563.803,69.06 563.154,70.057 562.106,71.106 C561.058,72.155 560.06,72.803 558.662,73.347 C557.607,73.757 556.021,74.244 553.102,74.378 C549.944,74.521 548.997,74.552 541,74.552 C533.003,74.552 532.056,74.521 528.898,74.378 C525.979,74.244 524.393,73.757 523.338,73.347 C521.94,72.803 520.942,72.155 519.894,71.106 C518.846,70.057 518.197,69.06 517.654,67.663 C517.244,66.606 516.755,65.022 516.623,62.101 C516.479,58.943 516.448,57.996 516.448,50 C516.448,42.003 516.479,41.056 516.623,37.899 C516.755,34.978 517.244,33.391 517.654,32.338 C518.197,30.938 518.846,29.942 519.894,28.894 C520.942,27.846 521.94,27.196 523.338,26.654 C524.393,26.244 525.979,25.756 528.898,25.623 C532.057,25.479 533.004,25.448 541,25.448 C548.997,25.448 549.943,25.479 553.102,25.623 C556.021,25.756 557.607,26.244 558.662,26.654 C560.06,27.196 561.058,27.846 562.106,28.894 C563.154,29.942 563.803,30.938 564.346,32.338 C564.756,33.391 565.244,34.978 565.378,37.899 C565.522,41.056 565.552,42.003 565.552,50 C565.552,57.996 565.522,58.943 565.378,62.101 M570.82,37.631 C570.674,34.438 570.167,32.258 569.425,30.349 C568.659,28.377 567.633,26.702 565.965,25.035 C564.297,23.368 562.623,22.342 560.652,21.575 C558.743,20.834 556.562,20.326 553.369,20.18 C550.169,20.033 549.148,20 541,20 C532.853,20 531.831,20.033 528.631,20.18 C525.438,20.326 523.257,20.834 521.349,21.575 C519.376,22.342 517.703,23.368 516.035,25.035 C514.368,26.702 513.342,28.377 512.574,30.349 C511.834,32.258 511.326,34.438 511.181,37.631 C511.035,40.831 511,41.851 511,50 C511,58.147 511.035,59.17 511.181,62.369 C511.326,65.562 511.834,67.743 512.574,69.651 C513.342,71.625 514.368,73.296 516.035,74.965 C517.703,76.634 519.376,77.658 521.349,78.425 C523.257,79.167 525.438,79.673 528.631,79.82 C531.831,79.965 532.853,80.001 541,80.001 C549.148,80.001 550.169,79.965 553.369,79.82 C556.562,79.673 558.743,79.167 560.652,78.425 C562.623,77.658 564.297,76.634 565.965,74.965 C567.633,73.296 568.659,71.625 569.425,69.651 C570.167,67.743 570.674,65.562 570.82,62.369 C570.966,59.17 571,58.147 571,50 C571,41.851 570.966,40.831 570.82,37.631"&gt;&lt;/path&gt;&lt;/g&gt;&lt;/g&gt;&lt;/g&gt;&lt;/svg&gt;&lt;/p&gt;
&lt;/div&gt;&lt;div style="padding-top: 8px;"&gt;&lt;div style=" color:#3897f0; font-family:Arial,sans-serif; font-size:14px; font-style:normal; font-weight:550; line-height:18px;"&gt;&lt;p&gt;View this post on Instagram&lt;/p&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div style="padding: 12.5% 0;"&gt;&lt;/div&gt;&lt;div style="display: flex; flex-direction: row; margin-bottom: 14px; align-items: center;"&gt;&lt;div&gt;&lt;div style="background-color: #F4F4F4; border-radius: 50%; height: 12.5px; width: 12.5px; transform: translateX(0px) translateY(7px);"&gt;&lt;/div&gt;&lt;div style="background-color: #F4F4F4; height: 12.5px; transform: rotate(-45deg) translateX(3px) translateY(1px); width: 12.5px; flex-grow: 0; margin-right: 14px; margin-left: 2px;"&gt;&lt;/div&gt;&lt;div style="background-color: #F4F4F4; border-radius: 50%; height: 12.5px; width: 12.5px; transform: translateX(9px) translateY(-18px);"&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="margin-left: 8px;"&gt;&lt;div style=" background-color: #F4F4F4; border-radius: 50%; flex-grow: 0; height: 20px; width: 20px;"&gt;&lt;/div&gt;&lt;div style=" width: 0; height: 0; border-top: 2px solid transparent; border-left: 6px solid #f4f4f4; border-bottom: 2px solid transparent; transform: translateX(16px) translateY(-4px) rotate(30deg)"&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="margin-left: auto;"&gt;&lt;div style=" width: 0px; border-top: 8px solid #F4F4F4; border-right: 8px solid transparent; transform: translateY(16px);"&gt;&lt;/div&gt;&lt;div style=" background-color: #F4F4F4; flex-grow: 0; height: 12px; width: 16px; transform: translateY(-4px);"&gt;&lt;/div&gt;&lt;div style=" width: 0; height: 0; border-top: 8px solid #F4F4F4; border-left: 8px solid transparent; transform: translateY(-4px) translateX(8px);"&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="display: flex; flex-direction: column; flex-grow: 1; justify-content: center; margin-bottom: 24px;"&gt;&lt;div style=" background-color: #F4F4F4; border-radius: 4px; flex-grow: 0; height: 14px; margin-bottom: 6px; width: 224px;"&gt;&lt;/div&gt;&lt;div style=" background-color: #F4F4F4; border-radius: 4px; flex-grow: 0; height: 14px; width: 144px;"&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p style=" color:#c9c8cd; font-family:Arial,sans-serif; font-size:14px; line-height:17px; margin-bottom:0; margin-top:8px; overflow:hidden; padding:8px 0 7px; text-align:center; text-overflow:ellipsis; white-space:nowrap;"&gt;&lt;a href="https://www.instagram.com/p/By-UZKDla0o/?utm_source=ig_embed&amp;amp;utm_campaign=loading" style=" color:#c9c8cd; font-family:Arial,sans-serif; font-size:14px; font-style:normal; font-weight:normal; line-height:17px; text-decoration:none;" target="_blank"&gt;A post shared by Т—Ж (@tinkoffjournal)&lt;/a&gt; on &lt;time style=" font-family:Arial,sans-serif; font-size:14px; line-height:17px;" datetime="2019-06-21T13:37:04+00:00"&gt;Jun 21, 2019 at 6:37am PDT&lt;/time&gt;&lt;/p&gt;
&lt;/div&gt;&lt;/blockquote&gt;&lt;script async src="//www.instagram.com/embed.js"&gt;&lt;/script&gt;
&lt;p&gt;Если разобрать пост на составные части, вот что получится:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;В один пост уместилось семь товаров. Это значит, что можно и девять.&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;У товара есть всё необходимое: заголовок, описание, изображение и стоимость.&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;Есть журнального вида обложка, которая привлекает внимание и «объединяет» товары из одной категории.&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;Описания товаров разместились в галерее. Это даёт большую свободу.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Как делались подборки&lt;/h2&gt;
&lt;p&gt;Подборка состояла из обложки и карточек товаров. Всё делалось в Фотошопе.&lt;/p&gt;
&lt;p&gt;Например, вот так выглядел первый законченный шаблон карточки товара:&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://antonkim.ru/blog/pictures/photoshop-1.jpg" width="1814" height="1040" alt="" /&gt;
&lt;/div&gt;
&lt;p&gt;Первые подборки были в формате 4:5, 1080х1350. Он хорош тем, что в карточку товара вмещается и информация, и большое изображение.&lt;/p&gt;
&lt;p&gt;Вот так выглядела первая опубликованная подборка:&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;div class="fotorama" data-width="1680" data-ratio="0.9982174688057"&gt;
&lt;img src="https://antonkim.ru/blog/pictures/bq-cover.jpg" width="1680" height="1683" alt="" /&gt;
&lt;img src="https://antonkim.ru/blog/pictures/bq-1.jpg" width="1680" height="1683" alt="" /&gt;
&lt;img src="https://antonkim.ru/blog/pictures/bq-2.jpg" width="1680" height="1683" alt="" /&gt;
&lt;img src="https://antonkim.ru/blog/pictures/bq-3.jpg" width="1680" height="1683" alt="" /&gt;
&lt;img src="https://antonkim.ru/blog/pictures/bq-4.jpg" width="1680" height="1683" alt="" /&gt;
&lt;img src="https://antonkim.ru/blog/pictures/bq-5.jpg" width="1680" height="1683" alt="" /&gt;
&lt;img src="https://antonkim.ru/blog/pictures/bq-6.jpg" width="1680" height="1683" alt="" /&gt;
&lt;img src="https://antonkim.ru/blog/pictures/bq-7.jpg" width="1680" height="1683" alt="" /&gt;
&lt;img src="https://antonkim.ru/blog/pictures/bq-8.jpg" width="1680" height="1683" alt="" /&gt;
&lt;img src="https://antonkim.ru/blog/pictures/bq-9.jpg" width="1680" height="1683" alt="" /&gt;
&lt;/div&gt;
&lt;div class="e2-text-caption"&gt;К слову, я до сих пор не восторге от этой обложки&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Товары в подборках были пронумерованы не просто так. &lt;nobr&gt;Во-первых&lt;/nobr&gt;, чтобы было легче ориентироваться. &lt;nobr&gt;Во-вторых&lt;/nobr&gt;, чтобы привязывать стоимость.&lt;/p&gt;
&lt;p&gt;Я осознанно не добавлял стоимость в карточку товара. Цена или наличие товара часто менялись, и пост становился бы неактуальным. Хотелось гибкости, поэтому всё было в описании:&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://antonkim.ru/blog/pictures/bq-description.jpg" width="1680" height="1683" alt="" /&gt;
&lt;/div&gt;
&lt;p&gt;Удивительно было то, что мы были одни из немногих, кто добавлял цены на товары.&lt;/p&gt;
&lt;p&gt;Чтобы прийти к такому варианту подборки, потребовалось время:&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://antonkim.ru/blog/pictures/versions.jpg" width="1736" height="850" alt="" /&gt;
&lt;/div&gt;
&lt;h2&gt;Эволюция подборок&lt;/h2&gt;
&lt;p&gt;Создавать шаблоны для подборок было долгим процессом — я много экспериментировал, постоянно что-то улучшал, добавлял, убирал и менял.&lt;/p&gt;
&lt;p&gt;Например, так выглядела вторая версия карточки товара:&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://antonkim.ru/blog/pictures/photoshop-2.jpg" width="1814" height="1040" alt="" /&gt;
&lt;/div&gt;
&lt;p&gt;Здесь уже формат 1:1, 1080х1080.&lt;/p&gt;
&lt;p&gt;Затем, в какой-то момент, я наткнулся и вдохновился постом из инстаграма Города:&lt;/p&gt;
&lt;blockquote class="instagram-media" data-instgrm-permalink="https://www.instagram.com/p/B3W-vHKCF41/?utm_source=ig_embed&amp;amp;utm_campaign=loading" data-instgrm-version="12" style=" background:#FFF; border:0; border-radius:3px; box-shadow:0 0 1px 0 rgba(0,0,0,0.5),0 1px 10px 0 rgba(0,0,0,0.15); margin: 1px; max-width:540px; min-width:326px; padding:0; width:99.375%; width:-webkit-calc(100% - 2px); width:calc(100% - 2px);"&gt;&lt;div style="padding:16px;"&gt;&lt;p&gt;&lt;a href="https://www.instagram.com/p/B3W-vHKCF41/?utm_source=ig_embed&amp;amp;utm_campaign=loading" style=" background:#FFFFFF; line-height:0; padding:0 0; text-align:center; text-decoration:none; width:100%;" target="_blank"&gt;&lt;/p&gt;
&lt;div style=" display: flex; flex-direction: row; align-items: center;"&gt;&lt;div style="background-color: #F4F4F4; border-radius: 50%; flex-grow: 0; height: 40px; margin-right: 14px; width: 40px;"&gt;&lt;/div&gt;&lt;div style="display: flex; flex-direction: column; flex-grow: 1; justify-content: center;"&gt;&lt;div style=" background-color: #F4F4F4; border-radius: 4px; flex-grow: 0; height: 14px; margin-bottom: 6px; width: 100px;"&gt;&lt;/div&gt;&lt;div style=" background-color: #F4F4F4; border-radius: 4px; flex-grow: 0; height: 14px; width: 60px;"&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="padding: 19% 0;"&gt;&lt;/div&gt;&lt;div style="display:block; height:50px; margin:0 auto 12px; width:50px;"&gt;&lt;p&gt;&lt;svg width="50px" height="50px" viewBox="0 0 60 60" version="1.1" xmlns="https://www.w3.org/2000/svg" xmlns:xlink="https://www.w3.org/1999/xlink"&gt;&lt;g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"&gt;&lt;g transform="translate(-511.000000, -20.000000)" fill="#000000"&gt;&lt;g&gt;&lt;path d="M556.869,30.41 C554.814,30.41 553.148,32.076 553.148,34.131 C553.148,36.186 554.814,37.852 556.869,37.852 C558.924,37.852 560.59,36.186 560.59,34.131 C560.59,32.076 558.924,30.41 556.869,30.41 M541,60.657 C535.114,60.657 530.342,55.887 530.342,50 C530.342,44.114 535.114,39.342 541,39.342 C546.887,39.342 551.658,44.114 551.658,50 C551.658,55.887 546.887,60.657 541,60.657 M541,33.886 C532.1,33.886 524.886,41.1 524.886,50 C524.886,58.899 532.1,66.113 541,66.113 C549.9,66.113 557.115,58.899 557.115,50 C557.115,41.1 549.9,33.886 541,33.886 M565.378,62.101 C565.244,65.022 564.756,66.606 564.346,67.663 C563.803,69.06 563.154,70.057 562.106,71.106 C561.058,72.155 560.06,72.803 558.662,73.347 C557.607,73.757 556.021,74.244 553.102,74.378 C549.944,74.521 548.997,74.552 541,74.552 C533.003,74.552 532.056,74.521 528.898,74.378 C525.979,74.244 524.393,73.757 523.338,73.347 C521.94,72.803 520.942,72.155 519.894,71.106 C518.846,70.057 518.197,69.06 517.654,67.663 C517.244,66.606 516.755,65.022 516.623,62.101 C516.479,58.943 516.448,57.996 516.448,50 C516.448,42.003 516.479,41.056 516.623,37.899 C516.755,34.978 517.244,33.391 517.654,32.338 C518.197,30.938 518.846,29.942 519.894,28.894 C520.942,27.846 521.94,27.196 523.338,26.654 C524.393,26.244 525.979,25.756 528.898,25.623 C532.057,25.479 533.004,25.448 541,25.448 C548.997,25.448 549.943,25.479 553.102,25.623 C556.021,25.756 557.607,26.244 558.662,26.654 C560.06,27.196 561.058,27.846 562.106,28.894 C563.154,29.942 563.803,30.938 564.346,32.338 C564.756,33.391 565.244,34.978 565.378,37.899 C565.522,41.056 565.552,42.003 565.552,50 C565.552,57.996 565.522,58.943 565.378,62.101 M570.82,37.631 C570.674,34.438 570.167,32.258 569.425,30.349 C568.659,28.377 567.633,26.702 565.965,25.035 C564.297,23.368 562.623,22.342 560.652,21.575 C558.743,20.834 556.562,20.326 553.369,20.18 C550.169,20.033 549.148,20 541,20 C532.853,20 531.831,20.033 528.631,20.18 C525.438,20.326 523.257,20.834 521.349,21.575 C519.376,22.342 517.703,23.368 516.035,25.035 C514.368,26.702 513.342,28.377 512.574,30.349 C511.834,32.258 511.326,34.438 511.181,37.631 C511.035,40.831 511,41.851 511,50 C511,58.147 511.035,59.17 511.181,62.369 C511.326,65.562 511.834,67.743 512.574,69.651 C513.342,71.625 514.368,73.296 516.035,74.965 C517.703,76.634 519.376,77.658 521.349,78.425 C523.257,79.167 525.438,79.673 528.631,79.82 C531.831,79.965 532.853,80.001 541,80.001 C549.148,80.001 550.169,79.965 553.369,79.82 C556.562,79.673 558.743,79.167 560.652,78.425 C562.623,77.658 564.297,76.634 565.965,74.965 C567.633,73.296 568.659,71.625 569.425,69.651 C570.167,67.743 570.674,65.562 570.82,62.369 C570.966,59.17 571,58.147 571,50 C571,41.851 570.966,40.831 570.82,37.631"&gt;&lt;/path&gt;&lt;/g&gt;&lt;/g&gt;&lt;/g&gt;&lt;/svg&gt;&lt;/p&gt;
&lt;/div&gt;&lt;div style="padding-top: 8px;"&gt;&lt;div style=" color:#3897f0; font-family:Arial,sans-serif; font-size:14px; font-style:normal; font-weight:550; line-height:18px;"&gt;&lt;p&gt;View this post on Instagram&lt;/p&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div style="padding: 12.5% 0;"&gt;&lt;/div&gt;&lt;div style="display: flex; flex-direction: row; margin-bottom: 14px; align-items: center;"&gt;&lt;div&gt;&lt;div style="background-color: #F4F4F4; border-radius: 50%; height: 12.5px; width: 12.5px; transform: translateX(0px) translateY(7px);"&gt;&lt;/div&gt;&lt;div style="background-color: #F4F4F4; height: 12.5px; transform: rotate(-45deg) translateX(3px) translateY(1px); width: 12.5px; flex-grow: 0; margin-right: 14px; margin-left: 2px;"&gt;&lt;/div&gt;&lt;div style="background-color: #F4F4F4; border-radius: 50%; height: 12.5px; width: 12.5px; transform: translateX(9px) translateY(-18px);"&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="margin-left: 8px;"&gt;&lt;div style=" background-color: #F4F4F4; border-radius: 50%; flex-grow: 0; height: 20px; width: 20px;"&gt;&lt;/div&gt;&lt;div style=" width: 0; height: 0; border-top: 2px solid transparent; border-left: 6px solid #f4f4f4; border-bottom: 2px solid transparent; transform: translateX(16px) translateY(-4px) rotate(30deg)"&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="margin-left: auto;"&gt;&lt;div style=" width: 0px; border-top: 8px solid #F4F4F4; border-right: 8px solid transparent; transform: translateY(16px);"&gt;&lt;/div&gt;&lt;div style=" background-color: #F4F4F4; flex-grow: 0; height: 12px; width: 16px; transform: translateY(-4px);"&gt;&lt;/div&gt;&lt;div style=" width: 0; height: 0; border-top: 8px solid #F4F4F4; border-left: 8px solid transparent; transform: translateY(-4px) translateX(8px);"&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="display: flex; flex-direction: column; flex-grow: 1; justify-content: center; margin-bottom: 24px;"&gt;&lt;div style=" background-color: #F4F4F4; border-radius: 4px; flex-grow: 0; height: 14px; margin-bottom: 6px; width: 224px;"&gt;&lt;/div&gt;&lt;div style=" background-color: #F4F4F4; border-radius: 4px; flex-grow: 0; height: 14px; width: 144px;"&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p style=" color:#c9c8cd; font-family:Arial,sans-serif; font-size:14px; line-height:17px; margin-bottom:0; margin-top:8px; overflow:hidden; padding:8px 0 7px; text-align:center; text-overflow:ellipsis; white-space:nowrap;"&gt;&lt;a href="https://www.instagram.com/p/B3W-vHKCF41/?utm_source=ig_embed&amp;amp;utm_campaign=loading" style=" color:#c9c8cd; font-family:Arial,sans-serif; font-size:14px; font-style:normal; font-weight:normal; line-height:17px; text-decoration:none;" target="_blank"&gt;A post shared by Город (@t_gorod)&lt;/a&gt; on &lt;time style=" font-family:Arial,sans-serif; font-size:14px; line-height:17px;" datetime="2019-10-08T13:34:25+00:00"&gt;Oct 8, 2019 at 6:34am PDT&lt;/time&gt;&lt;/p&gt;
&lt;/div&gt;&lt;/blockquote&gt;&lt;script async src="//www.instagram.com/embed.js"&gt;&lt;/script&gt;
&lt;p&gt;Так родилась третья версия:&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://antonkim.ru/blog/pictures/photoshop-3.jpg" width="1814" height="1040" alt="" /&gt;
&lt;/div&gt;
&lt;p&gt;Затем была серия мелких модификаций:&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;div class="fotorama" data-width="1814" data-ratio="1.7442307692308"&gt;
&lt;img src="https://antonkim.ru/blog/pictures/photoshop-4.jpg" width="1814" height="1040" alt="" /&gt;
&lt;img src="https://antonkim.ru/blog/pictures/photoshop-5.jpg" width="1814" height="1040" alt="" /&gt;
&lt;img src="https://antonkim.ru/blog/pictures/photoshop-6.jpg" width="1814" height="1040" alt="" /&gt;
&lt;img src="https://antonkim.ru/blog/pictures/photoshop-7.jpg" width="1814" height="1040" alt="" /&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;В конечном счёте, перед моих уходом, подборки выглядели вот так:&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;div class="fotorama" data-width="1680" data-ratio="0.9982174688057"&gt;
&lt;img src="https://antonkim.ru/blog/pictures/trimmer-cover.jpg" width="1680" height="1683" alt="" /&gt;
&lt;img src="https://antonkim.ru/blog/pictures/trimmer-1.jpg" width="1680" height="1683" alt="" /&gt;
&lt;img src="https://antonkim.ru/blog/pictures/trimmer-2.jpg" width="1680" height="1683" alt="" /&gt;
&lt;img src="https://antonkim.ru/blog/pictures/trimmer-3.jpg" width="1680" height="1683" alt="" /&gt;
&lt;img src="https://antonkim.ru/blog/pictures/trimmer-4.jpg" width="1680" height="1683" alt="" /&gt;
&lt;img src="https://antonkim.ru/blog/pictures/trimmer-5.jpg" width="1680" height="1683" alt="" /&gt;
&lt;img src="https://antonkim.ru/blog/pictures/trimmer-7.jpg" width="1680" height="1683" alt="" /&gt;
&lt;img src="https://antonkim.ru/blog/pictures/trimmer-8.jpg" width="1680" height="1683" alt="" /&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h2&gt;Как делались обложки&lt;/h2&gt;
&lt;p&gt;Так как я не иллюстратор и не дизайнер, а также если учесть дефицит времени, обложки были самым сложным компонентом.&lt;/p&gt;
&lt;p&gt;Около 95% обложек «артдиректил» я. Получалось как-то так:&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;div class="fotorama" data-width="1080" data-ratio="1"&gt;
&lt;img src="https://antonkim.ru/blog/pictures/cover-1.jpg" width="1080" height="1080" alt="" /&gt;
&lt;img src="https://antonkim.ru/blog/pictures/cover-2-1.jpg" width="1080" height="1080" alt="" /&gt;
&lt;img src="https://antonkim.ru/blog/pictures/cover-3.jpg" width="1080" height="1080" alt="" /&gt;
&lt;img src="https://antonkim.ru/blog/pictures/cover-4.jpg" width="1080" height="1080" alt="" /&gt;
&lt;img src="https://antonkim.ru/blog/pictures/cover-5.jpg" width="1080" height="1080" alt="" /&gt;
&lt;img src="https://antonkim.ru/blog/pictures/cover-6.jpg" width="1080" height="1080" alt="" /&gt;
&lt;img src="https://antonkim.ru/blog/pictures/cover-7.jpg" width="1080" height="1080" alt="" /&gt;
&lt;img src="https://antonkim.ru/blog/pictures/cover-8.jpg" width="1080" height="1080" alt="" /&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;В обложках не было ничего сверхъественного — я просто пытался удачно подобрать контекст, выискивал подходящие изображения, вырезал фон и пробовал разные варианты.&lt;/p&gt;
&lt;p&gt;Сам шаблон, за редкими исключениями, оставался неизменным:&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://antonkim.ru/blog/pictures/photoshop-8.jpg" width="1814" height="1040" alt="" /&gt;
&lt;/div&gt;
&lt;h2&gt;Подборки + сторисы&lt;/h2&gt;
&lt;p&gt;Подборки были хороши ещё и тем, что хорошо смотрелись в сторисах:&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;div class="fotorama" data-width="1680" data-ratio="0.9982174688057"&gt;
&lt;img src="https://antonkim.ru/blog/pictures/stories-1.jpg" width="1680" height="1683" alt="" /&gt;
&lt;img src="https://antonkim.ru/blog/pictures/stories-2.jpg" width="1680" height="1683" alt="" /&gt;
&lt;img src="https://antonkim.ru/blog/pictures/stories-3.jpg" width="1680" height="1683" alt="" /&gt;
&lt;img src="https://antonkim.ru/blog/pictures/stories-4.jpg" width="1680" height="1683" alt="" /&gt;
&lt;img src="https://antonkim.ru/blog/pictures/stories-5.jpg" width="1680" height="1683" alt="" /&gt;
&lt;img src="https://antonkim.ru/blog/pictures/stories-6.jpg" width="1680" height="1683" alt="" /&gt;
&lt;img src="https://antonkim.ru/blog/pictures/stories-7.jpg" width="1680" height="1683" alt="" /&gt;
&lt;img src="https://antonkim.ru/blog/pictures/stories-8.jpg" width="1680" height="1683" alt="" /&gt;
&lt;img src="https://antonkim.ru/blog/pictures/stories-9.jpg" width="1680" height="1683" alt="" /&gt;
&lt;img src="https://antonkim.ru/blog/pictures/stories-10.jpg" width="1680" height="1683" alt="" /&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h2&gt;В заключении&lt;/h2&gt;
&lt;p&gt;Попробую коротко резюмировать:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Подборки «экономят» место в профиле;&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;В одну подборку можно уместить до девяти товаров;&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;Можно разом рекламировать группу товаров;&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;Имеют журнальный вид и выделяются на общем фоне;&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;Хорошо выглядят в сторисе;&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;Привлекают больше внимания.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Я не могу раскрыть коммерческую составляющую, но подборки заметно улучшили инстаграм как канал продаж.&lt;/p&gt;
&lt;div style="display: none;"&gt;&lt;div class="e2-text-picture"&gt;
&lt;img src="https://antonkim.ru/blog/pictures/photoshop-1.jpg" width="1814" height="1040" alt="" /&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Продолжение: &lt;a href="https://antonkim.ru/blog/all/posts-in-the-style-of-tinkoff-journal/"&gt;посты в стиле Т—Ж&lt;/a&gt;.&lt;/p&gt;
</description>
</item>

<item>
<title>Кейс: описания для товаров</title>
<guid isPermaLink="false">112</guid>
<link>https://antonkim.ru/blog/all/descriptions-for-goods/</link>
<pubDate>Wed, 16 Sep 2020 17:58:59 +0000</pubDate>
<author>Антон Ким</author>
<comments>https://antonkim.ru/blog/all/descriptions-for-goods/</comments>
<description>
&lt;p class="foot"&gt;Из серии &lt;a href="https://antonkim.ru/blog/all/andbo/" class="nu"&gt;«&lt;u&gt;Как я вышел из бизнеса&lt;/u&gt;»&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;У меня было два соображения по поводу рекламирования товаров:&lt;/p&gt;
&lt;h2&gt;Первое соображение&lt;/h2&gt;
&lt;p&gt;Представьте, что вам нужен пылесос. Чтобы его купить, вы идёте в магазин. В магазине вас встречает продавец-консультант. И вот, он отвечает на ваши вопросы, показывает как работает товар, рассказывает о нюансах и показывает другие модели, которые укладываются в рамки вашего бюджета. При этом, он не пытается вам ничего «впарить». В таком магазине хочется остаться.&lt;/p&gt;
&lt;p&gt;Обратный пример. Продавец не может внятно ответить на ваши вопросы, плохо разбирается в продукте и просто пытается «впарить» самую дорогую модель, рассказывая какая она классная. В таком магазине не хочется задерживаться.&lt;/p&gt;
&lt;p&gt;То же самое и в интернет-магазине. Только вместо продавца-консультанта — описания, фотографии, видео.&lt;/p&gt;
&lt;h2&gt;Второе соображение&lt;/h2&gt;
&lt;p&gt;Товары, которые мы продавали, ничем не отличались от товаров, которые продавали конкуренты. А большинство маркетологов пользуются одними и теми же инструментами, подходами и технологиями.&lt;/p&gt;
&lt;p&gt;Процитирую Дэвида Огилви: &lt;mark&gt;«Когда перед вами встаёт необходимость обойти похожий товар, вся ваша надежда должна быть на то, что вам удастся объяснить ценность „своего“ более доходчивым языком, нежели это делают конкуренты, и выделить вещь из кучи подобных за счёт стиля и подхода в рекламе. Это своеобразная „добавочная стоимость“»&lt;/mark&gt;.&lt;/p&gt;
&lt;p&gt;&lt;hr&gt;&lt;/p&gt;
&lt;p&gt;Так сформировалось несколько принципов:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Хорошо разбираться в том, что продаём.&lt;/strong&gt; В итоге, даже курьеры, во время доставки, при необходимости, могли помочь клиенту с настройкой гаджета &lt;nobr&gt;и/или&lt;/nobr&gt; установкой ПО.&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Использовать всю доступную информацию для конкретного товара.&lt;/strong&gt; То есть, сделать так, чтобы клиент получал у нас всю необходимую информацию о товаре и у него не было нужды «ходить» по другим местам.&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Показывать все товары «лицом».&lt;/strong&gt; Потому что описания решают не всё. Для этой цели старались использовать и все доступные стоковые изображения товаров, и «живые» фотографии, и проморолики, и видеообзоры.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Как делали описания&lt;/h2&gt;
&lt;p&gt;Товары можно разделить на ходовые и не ходовые, на популярные бренды и не популярные. Если бренд популярный, то информации на товары можно найти с избытком. Если не популярный, приходится исходить из того, что найдётся.&lt;/p&gt;
&lt;p&gt;Расскажу о самой интересной части — о том, как делали описания в начале.&lt;/p&gt;
&lt;p&gt;Первое время мы продавали только товары Сяоми. Их было около пятидесяти. Это популярный бренд, информации с избытком. Работа с описаниями выглядела так:&lt;/p&gt;
&lt;p&gt;&lt;mark&gt;Читал &lt;nobr&gt;и/или&lt;/nobr&gt; смотрел обзоры → писал черновик → редактировал → выпускал.&lt;/mark&gt;&lt;/p&gt;
&lt;p&gt;Например, вот так выглядело описание приставки Сяоми:&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://antonkim.ru/blog/pictures/mi-tv-box.jpg" width="1426" height="931" alt="" /&gt;
&lt;/div&gt;
&lt;p&gt;Главный принцип — постараться ответить на вопросы потенциальных клиентов.&lt;/p&gt;
&lt;p&gt;В отдельной вкладке были и технические характеристики:&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://antonkim.ru/blog/pictures/mi-tv-box-tech.jpg" width="1340" height="1320" alt="" /&gt;
&lt;/div&gt;
&lt;p&gt;Минус такого подхода в том, что он отнимает много времени и сил на единицу товара. Кроме этого, он требует определённой подготовки.&lt;/p&gt;
&lt;p&gt;Он подходит, если товаров в ассортименте не много — как было у нас в начале.&lt;/p&gt;
&lt;h2&gt;Как делали потом&lt;/h2&gt;
&lt;p&gt;Когда товаров становилось всё больше и больше, а описаниями стали заниматься другие люди, пришлось упростить процесс. Начали копировать описания и характеристики из официальных источников с минимальными изменениями.&lt;/p&gt;
&lt;p&gt;Да, во многом мы перестали выделяться на общем фоне, но начали выигрывать по времени и подготовке.&lt;/p&gt;
&lt;h2&gt;Редполитика&lt;/h2&gt;
&lt;p&gt;Чтобы «конвейер» нормально функционировал без моего участия, я написал редполитику:&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;div class="fotorama" data-width="1441" data-ratio="1.4963655244029"&gt;
&lt;img src="https://antonkim.ru/blog/pictures/redstandarty-1.png" width="1441" height="963" alt="" /&gt;
&lt;img src="https://antonkim.ru/blog/pictures/redstandarty-2.png" width="1441" height="963" alt="" /&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Редполитика помогала команде работать по единому стандарту, учитывать ошибки и недочёты.&lt;/p&gt;
&lt;h2&gt;В заключении&lt;/h2&gt;
&lt;p&gt;Были и минимальные требования для работы с текстом. Например, обязательным условием было прочтение &lt;a href="http://maximilyahov.ru/blog/all/availability/"&gt;базового курса Главреда&lt;/a&gt;. Кроме этого, я периодически снимал лекции про работу с текстом и делал разборы описаний.&lt;/p&gt;
&lt;p&gt;Описания — это не всё. Но об этом в другой раз.&lt;/p&gt;
</description>
</item>

<item>
<title>Кейс: отзывы в инстаграме</title>
<guid isPermaLink="false">125</guid>
<link>https://antonkim.ru/blog/all/andbo-instagram-reviews/</link>
<pubDate>Mon, 14 Sep 2020 20:02:52 +0000</pubDate>
<author>Антон Ким</author>
<comments>https://antonkim.ru/blog/all/andbo-instagram-reviews/</comments>
<description>
&lt;p class="foot"&gt;Из серии &lt;a href="https://antonkim.ru/blog/all/andbo" class="nu"&gt;«&lt;u&gt;Как я вышел из бизнеса&lt;/u&gt;»&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;Предыстория&lt;/h2&gt;
&lt;p&gt;Вскоре после открытия интернет-магазина, мы запустили инстаграм. Проблема была в том, что о нас никто не знал, нам никто не доверял, у нас не было репутации и аудитории.&lt;/p&gt;
&lt;p&gt;Кроме этого, были десятки других интернет-магазинов, которые продавали такие же товары.&lt;/p&gt;
&lt;p&gt;Вопрос был в том, как стать конкурентоспособнее и завоевать доверие потенциальных клиентов. Одно из решений — отзывы в инстаграме.&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://antonkim.ru/blog/pictures/andbo-insta-1.jpg" width="1680" height="1683" alt="" /&gt;
&lt;div class="e2-text-caption"&gt;В одном хайлайте — около 100 отзывов. А смайлики вместо иконок сразу бросались в глаза&lt;/div&gt;
&lt;/div&gt;
&lt;h2&gt;Как реализовали&lt;/h2&gt;
&lt;p&gt;В нашем случае, отзыв — это, в первую очередь, фотография доставленного товара. Я изначально решил, что отзывы должны быть только от клиентов из инстаграма.&lt;/p&gt;
&lt;p&gt;Задумка была в том, что клиент фотографирует товар после получения, выкладывает в свой сторис, отмечает нас, мы репостим и добавляем в хайлайт.&lt;/p&gt;
&lt;p&gt;&lt;mark&gt;Сценарий такой: курьер доставил товар → мы увидели в системе → написали клиенту.&lt;/mark&gt;&lt;/p&gt;
&lt;p&gt;Получалось как-то так:&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;div class="fotorama" data-width="1680" data-ratio="0.9982174688057"&gt;
&lt;img src="https://antonkim.ru/blog/pictures/andbo-insta-13.jpg" width="1680" height="1683" alt="" /&gt;
&lt;img src="https://antonkim.ru/blog/pictures/andbo-insta-12.jpg" width="1680" height="1683" alt="" /&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Однако, быстро стало понятно, что не все клиенты хотят нас «рекламировать», да и вообще совершать &lt;nobr&gt; какие-то&lt;/nobr&gt; дополнительные действия.&lt;/p&gt;
&lt;p&gt;Таким способом мы получали примерно один отзыв на десять заказов. Этого было недостаточно.&lt;/p&gt;
&lt;p&gt;&lt;mark&gt;Я изменил задумку: клиент фотографирует товар после получения, отправляет нам, мы выкладываем в свой сторис, отмечаем его и добавляем в хайлайт.&lt;/mark&gt;&lt;/p&gt;
&lt;p&gt;Сперва получалось вот так:&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;div class="fotorama" data-width="1680" data-ratio="0.9982174688057"&gt;
&lt;img src="https://antonkim.ru/blog/pictures/andbo-insta-10.jpg" width="1680" height="1683" alt="" /&gt;
&lt;img src="https://antonkim.ru/blog/pictures/andbo-insta-11.jpg" width="1680" height="1683" alt="" /&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Таким способом мы начали получать примерно один отзыв на пять заказов. Не идеально, но уже лучше.&lt;/p&gt;
&lt;p&gt;Было не очень изящно: я просто вставлял фотографию в сторис, отмечал клиента и выкладывал. Чтобы сделать красивее, нашёл и начал использовать &lt;a href="https://unfold.com/"&gt;приложение UNFOLD&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Результат на лицо:&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;div class="fotorama" data-width="1680" data-ratio="1.0017889087657"&gt;
&lt;img src="https://antonkim.ru/blog/pictures/andbo-insta-7.jpg" width="1680" height="1677" alt="" /&gt;
&lt;img src="https://antonkim.ru/blog/pictures/andbo-insta-5.jpg" width="1680" height="1677" alt="" /&gt;
&lt;img src="https://antonkim.ru/blog/pictures/andbo-insta-4.jpg" width="1680" height="1677" alt="" /&gt;
&lt;img src="https://antonkim.ru/blog/pictures/andbo-insta-2.jpg" width="1680" height="1677" alt="" /&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Иногда мы публиковали и слова благодарности:&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://antonkim.ru/blog/pictures/andbo-insta-6.jpg" width="1680" height="1683" alt="" /&gt;
&lt;/div&gt;
&lt;h2&gt;Что в итоге&lt;/h2&gt;
&lt;p&gt;К моменту моего ухода, у нас набралось около четырёхсот отзывов, которые уместились в четыре хайлайта.&lt;/p&gt;
&lt;p&gt;У отзывов было много положительных моментов:&lt;/p&gt;
&lt;ol start="1"&gt;
&lt;li&gt;Это социальное доказательство.&lt;/li&gt;
&lt;/ol&gt;
&lt;ol start="2"&gt;
&lt;li&gt;Так как отзывов становилось всё больше, не возникало вопросов про их накрутку.&lt;/li&gt;
&lt;/ol&gt;
&lt;ol start="3"&gt;
&lt;li&gt;В интернет-магазинах я их прежде не встречал. Это выделяло нас на общем фоне.&lt;/li&gt;
&lt;/ol&gt;
&lt;ol start="4"&gt;
&lt;li&gt;Они приносили побочные продажи: человек смотрел отзывы → его заинтересовывал товар → он оформлял заказ.&lt;/li&gt;
&lt;/ol&gt;
&lt;ol start="5"&gt;
&lt;li&gt;Строилось доверие — новые клиенты переставали бояться у нас заказывать.&lt;/li&gt;
&lt;/ol&gt;
&lt;ol start="6"&gt;
&lt;li&gt;Отзывы притягивали новые отзывы. Нередко клиенты либо сами присылали фотографию товара, либо выкладывали у себя в сторисе и отмечали нас.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;В заключении&lt;/h2&gt;
&lt;p&gt;На эту идею меня вдохновил &lt;a href="https://www.instagram.com/lot2046/"&gt;инстаграм LOT2046&lt;/a&gt;. Это сервис подписки на одежду и гаджеты, который основал дизайнер Вадик Мармеладов.&lt;/p&gt;
</description>
</item>

<item>
<title>Как написать сильный рекламный текст</title>
<guid isPermaLink="false">104</guid>
<link>https://antonkim.ru/blog/all/strong-ad-text/</link>
<pubDate>Wed, 19 Aug 2020 15:26:00 +0000</pubDate>
<author>Антон Ким</author>
<comments>https://antonkim.ru/blog/all/strong-ad-text/</comments>
<description>
&lt;p&gt;Подход простой и банальный, но его, почему-то, мало кто использует: поставить себя на место клиента и ответить на его вопросы.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Подход универсальный:&lt;/strong&gt; с ним можно создавать промостраницы, описания товаров, текст о себе &lt;nobr&gt;и/или&lt;/nobr&gt; о компании, рекламные объявления.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Кому подойдёт:&lt;/strong&gt; любой компании, у которой есть задача повышать продажи, а не «креативить».&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Легко внедряется:&lt;/strong&gt; для этого не требуется ни знание инфостиля, ни волшебные слова, ни копирайтер с биржи, ни выпускник школы редакторов, ни миллион рублей, ни танцы с бубном.&lt;/p&gt;
&lt;h2&gt;Пример первый&lt;/h2&gt;
&lt;p&gt;Допустим, есть компания, которая изготавливает и устанавливает решётки на окна.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Какие решётки компания изготавливает?&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;Из какого материала их изготавливают?&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;Сколько стоит один квадратный метр?&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;В каких городах работает компания?&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;За сколько изготовит и установит?&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;Можно проконсультироаться?&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;Есть выезд мастера на замер?&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;Компания — ООО?&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;Какие ещё есть услуги?&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;Есть примеры работ?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Ответы на эти вопросы и есть основа сильного текста. Если есть что-то ещё, что полезно знать клиенту, это станет отличным дополнением.&lt;/p&gt;
&lt;h2&gt;Пример второй&lt;/h2&gt;
&lt;p&gt;Допустим, интернет-магазин продаёт пауэрбэнки для смартфонов.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Какая реальная ёмкость у пауэрбэнка? Не заявленная производителем.&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;Можно заряжать телефон и паурбэнк одновременно?&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;Сколько устройств можно заряжать одновременно?&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;Можно заряжать беспроводные наушники, фитнес-браслеты?&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;Сколько раз зарядит Эпл, Самсунг, Сяоми, Хуавей?&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;Безопасно оставлять на ночь? Не замкнёт? Не взорвётся?&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;За сколько минут/часов зарядит?&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;Из какого материала сделан?&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;Сколько часов заряжается?&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;Есть быстрая зарядка?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Хорошая практика в таких случаях создавать два описания. Первое — описание, в котором клиент получает ответы на свои вопросы на понятном ему языке. Второе — перечисление характеристик.&lt;/p&gt;
&lt;h2&gt;Пример третий&lt;/h2&gt;
&lt;p&gt;Допустим, есть курс по созданию сайтов.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Что это за курс?&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;На кого рассчитан?&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;Какие требования для поступления?&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;Нужно знать математику? А английский?&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;Сколько длится курс? Какая программа?&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;Что будет? Какие проекты будут на курсе?&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;Есть домашние задания? Как выглядят?&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;Какие сайты можно научиться делать?&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;Наставник будет помогать?&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;После окончания выдаётся сертификат?&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;Можно устроиться на работу после окончания?&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;Сколько можно зарабатывать на этом уровне?&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;Какие перспективы на будущее?&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Вместо заключения&lt;/h2&gt;
&lt;p&gt;Примеров много, но суть одна: чтобы написать полезный текст, нужно ответить на вопросы клиентов.&lt;/p&gt;
&lt;p&gt;Отвечать на такие вопросы сложнее, чем придумывать креатив. Придётся встать на место клиента, задавать вопросы, разбираться, работать с фактами, говорить правду. Но, в итоге, выиграют обе стороны.&lt;/p&gt;
&lt;p&gt;См. также &lt;a href="https://antonkim.ru/blog/all/ogilvy-on-ad/"&gt;заметку про книгу Дэвида Огилви «Огилви о рекламе»&lt;/a&gt;.&lt;/p&gt;
</description>
</item>

<item>
<title>Виды лицензий на шрифты</title>
<guid isPermaLink="false">147</guid>
<link>https://antonkim.ru/blog/all/font-licence/</link>
<pubDate>Mon, 17 Aug 2020 22:06:00 +0000</pubDate>
<author>Антон Ким</author>
<comments>https://antonkim.ru/blog/all/font-licence/</comments>
<description>
&lt;p&gt;До недавнего времени про шрифты я знал только одно: не пиратить. Но вопрос с лицензиями для меня становится всё актуальнее, поэтому решил во всём разобраться.&lt;/p&gt;
&lt;h2&gt;Бесплатные шрифты&lt;/h2&gt;
&lt;p&gt;Это шрифты, которые распространяются по свободной лицензии. Это значит, что их можно использовать и в коммерческих, и не в коммерческих целях, в печатном и цифровом виде.&lt;/p&gt;
&lt;p&gt;По такой лицензии, например, распространяются &lt;a href="https://fonts.google.com/"&gt;шрифты от Гугла&lt;/a&gt;.&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://antonkim.ru/blog/pictures/google-license-1.jpg" width="940" height="416" alt="" /&gt;
&lt;/div&gt;
&lt;h2&gt;Платные шрифты&lt;/h2&gt;
&lt;p&gt;С платными шрифтами всё сложнее: существуют множество лицензий и ограничений. Рассмотрел основные на примере популярного магазина шрифтов &lt;a href="https://www.myfonts.com/"&gt;Майфонтс&lt;/a&gt;.&lt;/p&gt;
&lt;h3&gt;Десктоп-лицензия&lt;/h3&gt;
&lt;p&gt;Это лицензия, которая позволяет использовать шрифты на компьютере в установленных программах. Например, в Фотошопе. Имеет форматы &lt;nobr&gt;&lt;kbd&gt;OTF&lt;/kbd&gt; и &lt;kbd&gt;TTF&lt;/kbd&gt;&lt;/nobr&gt;.&lt;/p&gt;
&lt;p&gt;Подходит для печатной продукции: документов, книг, плакатов, афиш, баннеров и пр.&lt;/p&gt;
&lt;p&gt;Десктоп-лицензия не всегда позволяет использовать шрифт в логотипах, товарных знаках или товарах. У каждой компании разные условия, нужно уточнять.&lt;/p&gt;
&lt;p&gt;По умолчанию, лицензия покупается на один компьютер. Если шрифт нужен на несколько компьютеров, то лицензию нужно покупать на каждый.&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://antonkim.ru/blog/pictures/myfonts-user.jpg" width="1134" height="363" alt="" /&gt;
&lt;/div&gt;
&lt;h3&gt;Веб-лицензия&lt;/h3&gt;
&lt;p&gt;Это лицензия, которая позволяет использовать шрифты на сайтах. Имеет форматы &lt;nobr&gt;&lt;kbd&gt;WOFF&lt;/kbd&gt;, &lt;kbd&gt;WOFF2&lt;/kbd&gt; и &lt;kbd&gt;EOT&lt;/kbd&gt;&lt;/nobr&gt;.&lt;/p&gt;
&lt;p&gt;Разница между &lt;nobr&gt;веб-шрифтами&lt;/nobr&gt; и &lt;nobr&gt;десктоп-шрифтами&lt;/nobr&gt; бывает не только в форматах, но и во «внутренностях». Если сгенерировать &lt;nobr&gt;десктоп-шрифт&lt;/nobr&gt; в &lt;nobr&gt;веб-шрифт&lt;/nobr&gt; или наоборот, он может неправильно отображаться. И — это незаконно.&lt;/p&gt;
&lt;p&gt;Стоимость веб-лицензии, чаще всего, зависит от количества просмотров сайта в месяц. Например, в Майфонтс минимальная лицензия начинается с 10&amp;thinsp;000 просмотров. Если просмотров станет больше, нужно запросить новую лицензию.&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://antonkim.ru/blog/pictures/myfonts-pageviews.jpg" width="1134" height="363" alt="" /&gt;
&lt;/div&gt;
&lt;h3&gt;Ап-лицензия&lt;/h3&gt;
&lt;p&gt;Это лицензия, которая позволяет использовать шрифты в мобильных приложениях.&lt;/p&gt;
&lt;p&gt;Покупается один раз, на неограниченное количество установок одного приложения на всех платформах.&lt;/p&gt;
&lt;p&gt;Стоимость на такую лицензию, в среднем, в 8—10 раз выше, чем на веб или десктоп-лицензию.&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://antonkim.ru/blog/pictures/myfonts-app.jpg" width="1134" height="370" alt="" /&gt;
&lt;/div&gt;
&lt;h3&gt;Епаб-лицензия&lt;/h3&gt;
&lt;p&gt;Это лицензия, которая позволяет использовать шрифты в электронных книгах, журналах, газетах.&lt;/p&gt;
&lt;p&gt;Стоимость зависит от количества публикаций, в которых планируется использовать шрифт: для нового номера журнала потребуется купить отдельную лицензию, как и для электронной книги. Количество скачиваний, перевод публикации, издание в другом формате в расчёт не идут.&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://antonkim.ru/blog/pictures/myfonts-epub.jpg" width="1134" height="482" alt="" /&gt;
&lt;/div&gt;
&lt;h3&gt;Серверная лицензия&lt;/h3&gt;
&lt;p&gt;Это лицензия, которая позволяет использовать шрифты там, где доступ к шрифту есть не только у обладателей лицензии. Например, на сайтах, где пользователь может создать свой дизайн одежды, визиток, документов или иных объектов.&lt;/p&gt;
&lt;p&gt;Покупается на один год и должна ежегодно продлеваться.&lt;/p&gt;
&lt;p&gt;Стоимость зависит от количества серверов, на которые устанавливаются шрифты.&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://antonkim.ru/blog/pictures/myfonts-server.jpg" width="1134" height="408" alt="" /&gt;
&lt;/div&gt;
&lt;h3&gt;Рекламная лицензия&lt;/h3&gt;
&lt;p&gt;Это лицензия, которая позволяет использовать шрифты в интернет-рекламе. Например, в баннерах.&lt;/p&gt;
&lt;p&gt;Стоимость такой лицензии зависит от количества рекламных показов. Для рекламных кампаний, в которых количество показов неизвестно до конца кампании, можно выполнять корректировку в конце каждого месяца.&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://antonkim.ru/blog/pictures/myfonts-ads.jpg" width="1134" height="412" alt="" /&gt;
&lt;/div&gt;
&lt;h2&gt;В заключении&lt;/h2&gt;
&lt;p&gt;Чтобы пользоваться шрифтами легально, всегда нужно читать лицензии. Используя шрифт нелегально, есть риск подо­рвать репу­та­цию ком­па­нии, полу­чить повестку в суд и/или потерять деньги. Незнание лицензии не освобождает от ответственности.&lt;/p&gt;
&lt;p&gt;Когда нет денег или понимания, зачем нужен шрифт, лучше использовать бесплатные шрифты.&lt;/p&gt;
&lt;h2&gt;По теме&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://vc.ru/flood/38142-shrifty-v-zakone-o-tonkostyah-avtorskogo-prava-na-bukvy"&gt;Шрифты в законе: о тонкостях авторского права&lt;/a&gt;. Статья на виси о юридической стороне пользования шрифтами.&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://rozdestvin.ru/novosti/vzyskali-s-eksmo-kompensaciyu-za-shrift"&gt;Выигранный иск против «Эксмо» на 3,9 млн рублей&lt;/a&gt;. Кейс адвоката Василия Рождествина.&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.artlebedev.ru/studio/legal/"&gt;Юридический отдел Студии Артемия Лебедева&lt;/a&gt;. Любопытно.&lt;/li&gt;
&lt;/ul&gt;
</description>
</item>

<item>
<title>Как я вышел из бизнеса после 19 месяцев работы</title>
<guid isPermaLink="false">82</guid>
<link>https://antonkim.ru/blog/all/andbo/</link>
<pubDate>Sat, 18 Jul 2020 14:33:20 +0000</pubDate>
<author>Антон Ким</author>
<comments>https://antonkim.ru/blog/all/andbo/</comments>
<description>
&lt;p&gt;В конце 2018 года, после нескольких лет работы на «дядю», я решил, что не хочу больше ни на кого работать. Так мы с другом открыли интернет-магазин, над которым совместно проработали 19 месяцев. В итоге, я ушёл.&lt;/p&gt;
&lt;p&gt;За это время я многому научился, набрался нового опыта и снял розовые очки. Об этом и хочу написать серию заметок. Они, в основном, будут касаться моей стороны работы.&lt;/p&gt;
&lt;h2&gt;Интернет-магазин andbo.uz&lt;/h2&gt;
&lt;p&gt;Период работы: с 25 ноября 2018 года по 15 июня 2020 года.&lt;/p&gt;
&lt;p&gt;Должность: сооснователь, директор по маркетингу.&lt;/p&gt;
&lt;h2&gt;Темы, которые я хочу затронуть&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Предыстория: эмоциональное выгорание&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;Партнёрское соглашение или как работать с лучшим другом&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://antonkim.ru/blog/all/andbo-opencart/"&gt;Как запустили сайт на Опенкарте&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://antonkim.ru/blog/tags/opencart-3/"&gt;Личный опыт работы с Опенкартом&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://antonkim.ru/blog/all/work-in-trello/"&gt;Как организовали работу в Трелло&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://antonkim.ru/blog/all/descriptions-for-goods/"&gt;Как делали описания для товаров&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;Как делали проморолики для товаров&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;Как искали, нанимали и обучали людей&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://antonkim.ru/blog/all/andbo-instagram-reviews/"&gt;Отзывы в инстаграме&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://antonkim.ru/blog/all/collections-of-goods-on-instagram/"&gt;Подборки товаров в инстаграме&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://antonkim.ru/blog/all/posts-in-the-style-of-tinkoff-journal/"&gt;Посты в инстаграме в стиле Т—Ж&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://antonkim.ru/blog/all/utm-tags-on-instagram/"&gt;Как использовать UTM-метки в инстаграме&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;Мои слабые стороны руководителя&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;Что почитать руководителю&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;hr&gt;&lt;/p&gt;
&lt;p&gt;В предыдущей серии: &lt;a href="https://antonkim.ru/blog/all/proweb/"&gt;Школа PROWEB&lt;/a&gt;.&lt;/p&gt;
</description>
</item>

<item>
<title>OpenCart: как на странице товара вывести SKU и UPC</title>
<guid isPermaLink="false">81</guid>
<link>https://antonkim.ru/blog/all/sku-and-upc/</link>
<pubDate>Fri, 17 Jul 2020 05:49:36 +0000</pubDate>
<author>Антон Ким</author>
<comments>https://antonkim.ru/blog/all/sku-and-upc/</comments>
<description>
&lt;p&gt;Эти значения вводятся в админке, но на странице товара не отображаются. А иногда нужно, чтобы отображались.&lt;/p&gt;
&lt;h2&gt;Что делать&lt;/h2&gt;
&lt;ol start="1"&gt;
&lt;li&gt;Открываем &lt;tt&gt;сайт/catalog/controller/product/product.php&lt;/tt&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;ol start="2"&gt;
&lt;li&gt;Находим код (~240 строка):&lt;/li&gt;
&lt;/ol&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;$data['model'] = $product_info['model'];&lt;/code&gt;&lt;/pre&gt;&lt;ol start="3"&gt;
&lt;li&gt;После вставляем:&lt;/li&gt;
&lt;/ol&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;$data['sku'] = $product_info['sku'];
$data['upc'] = $product_info['upc'];&lt;/code&gt;&lt;/pre&gt;&lt;ol start="4"&gt;
&lt;li&gt;Сохраняем, обновляем кэш.&lt;/li&gt;
&lt;/ol&gt;
&lt;ol start="5"&gt;
&lt;li&gt;Открываем &lt;tt&gt;сайт/catalog/view/theme/тема/template/product/product.twig&lt;/tt&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;ol start="6"&gt;
&lt;li&gt;Находим место для выведения и вписываем:&lt;/li&gt;
&lt;/ol&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;{{ sku }}
{{ upc }}&lt;/code&gt;&lt;/pre&gt;&lt;ol start="7"&gt;
&lt;li&gt;Сохраняем, обновляем кэш.&lt;/li&gt;
&lt;/ol&gt;
&lt;ol start="8"&gt;
&lt;li&gt;Готово.&lt;/li&gt;
&lt;/ol&gt;
</description>
</item>

<item>
<title>OpenCart: как добавить фильтр по артикулу в админке</title>
<guid isPermaLink="false">80</guid>
<link>https://antonkim.ru/blog/all/sku-filter/</link>
<pubDate>Fri, 17 Jul 2020 05:01:13 +0000</pubDate>
<author>Антон Ким</author>
<comments>https://antonkim.ru/blog/all/sku-filter/</comments>
<description>
&lt;p&gt;В стандартном фильтре в админке нельзя «фильтровать» товары по артикулу. Когда у вас тысячи товаров, такой фильтр в разы ускоряет поиск конкретного товара.&lt;/p&gt;
&lt;h2&gt;Что делать&lt;/h2&gt;
&lt;ol start="1"&gt;
&lt;li&gt;Открываем &lt;tt&gt;сайт/admin/controller/catalog/product.php&lt;/tt&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;ol start="2"&gt;
&lt;li&gt;Находим код (~227 строка):&lt;/li&gt;
&lt;/ol&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;protected function getList() {&lt;/code&gt;&lt;/pre&gt;&lt;ol start="3"&gt;
&lt;li&gt;После фигурной скобки вставляем:&lt;/li&gt;
&lt;/ol&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;if (isset($this-&amp;gt;request-&amp;gt;get['filter_sku'])) {
	$filter_sku = $this-&amp;gt;request-&amp;gt;get['filter_sku'];
} else {
	$filter_sku = '';
}
$data['filter_sku'] = $filter_sku;&lt;/code&gt;&lt;/pre&gt;&lt;ol start="4"&gt;
&lt;li&gt;В том же файле находим (~276 строка):&lt;/li&gt;
&lt;/ol&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;$url = ''&lt;/code&gt;&lt;/pre&gt;&lt;ol start="5"&gt;
&lt;li&gt;После вставляем:&lt;/li&gt;
&lt;/ol&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;if (isset($this-&amp;gt;request-&amp;gt;get['filter_sku'])) {
	$url .= '&amp;amp;filter_sku=' . $this-&amp;gt;request-&amp;gt;get['filter_sku'];
}&lt;/code&gt;&lt;/pre&gt;&lt;ol start="6"&gt;
&lt;li&gt;В том же файле находим (~324 строка):&lt;/li&gt;
&lt;/ol&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;$filter_data = array(&lt;/code&gt;&lt;/pre&gt;&lt;ol start="7"&gt;
&lt;li&gt;После скобки вставляем:&lt;/li&gt;
&lt;/ol&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;'filter_sku' =&amp;gt; isset($filter_sku) ? $filter_sku : '',&lt;/code&gt;&lt;/pre&gt;&lt;ol start="8"&gt;
&lt;li&gt;Сохраняем, обновляеем кэш.&lt;/li&gt;
&lt;/ol&gt;
&lt;ol start="9"&gt;
&lt;li&gt;Открываем &lt;tt&gt;сайт/admin/model/catalog/product.php&lt;/tt&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;ol start="10"&gt;
&lt;li&gt;Находим код (~361 строка):&lt;/li&gt;
&lt;/ol&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;if (!empty($data['filter_name'])) {
	$sql .= &amp;quot; AND pd.name LIKE '&amp;quot; . $this-&amp;gt;db-&amp;gt;escape($data['filter_name']) . &amp;quot;%'&amp;quot;;
}&lt;/code&gt;&lt;/pre&gt;&lt;ol start="11"&gt;
&lt;li&gt;После него вставляем:&lt;/li&gt;
&lt;/ol&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;if (isset($this-&amp;gt;request-&amp;gt;get['filter_sku']) &amp;amp;&amp;amp; !empty($data['filter_sku'])) {
	$sql .= &amp;quot; AND p.sku = '&amp;quot; . $this-&amp;gt;db-&amp;gt;escape($data['filter_sku']) . &amp;quot;'&amp;quot;;
}&lt;/code&gt;&lt;/pre&gt;&lt;ol start="12"&gt;
&lt;li&gt;Сохраняем, обновляем кэш.&lt;/li&gt;
&lt;/ol&gt;
&lt;ol start="13"&gt;
&lt;li&gt;Открываем &lt;tt&gt;сайт/admin/view/template/catalog/product_list.twig&lt;/tt&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;ol start="14"&gt;
&lt;li&gt;Находим код (~68 строка):&lt;/li&gt;
&lt;/ol&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;&amp;lt;div class=&amp;quot;form-group&amp;quot;&amp;gt;
	&amp;lt;label class=&amp;quot;control-label&amp;quot; for=&amp;quot;input-quantity&amp;quot;&amp;gt;{{ entry_quantity }}&amp;lt;/label&amp;gt;
	&amp;lt;input type=&amp;quot;text&amp;quot; name=&amp;quot;filter_quantity&amp;quot; value=&amp;quot;{{ filter_quantity }}&amp;quot; id=&amp;quot;input-quantity&amp;quot; class=&amp;quot;form-control&amp;quot; /&amp;gt;
&amp;lt;/div&amp;gt;&lt;/code&gt;&lt;/pre&gt;&lt;ol start="15"&gt;
&lt;li&gt;После него вставляем:&lt;/li&gt;
&lt;/ol&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;&amp;lt;div class=&amp;quot;form-group&amp;quot;&amp;gt;
	&amp;lt;label class=&amp;quot;control-label&amp;quot; for=&amp;quot;input-sku&amp;quot;&amp;gt;Артикул&amp;lt;/label&amp;gt;
	&amp;lt;input type=&amp;quot;text&amp;quot; name=&amp;quot;filter_sku&amp;quot; value=&amp;quot;{{ filter_sku }}&amp;quot; id=&amp;quot;input-sku&amp;quot; class=&amp;quot;form-control&amp;quot; /&amp;gt;
&amp;lt;/div&amp;gt;&lt;/code&gt;&lt;/pre&gt;&lt;ol start="16"&gt;
&lt;li&gt;В том же файле находим (~227 строка):&lt;/li&gt;
&lt;/ol&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;var filter_status = $('select[name=\'filter_status\']').val();&lt;/code&gt;&lt;/pre&gt;&lt;ol start="17"&gt;
&lt;li&gt;После него вставляем:&lt;/li&gt;
&lt;/ol&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;var filter_sku = $('input[name=\'filter_sku\']').val();

if (filter_sku) {
	url += '&amp;amp;filter_sku=' + encodeURIComponent(filter_sku);
}&lt;/code&gt;&lt;/pre&gt;&lt;ol start="18"&gt;
&lt;li&gt;Сохраняем, обновляем кэш.&lt;/li&gt;
&lt;/ol&gt;
&lt;ol start="19"&gt;
&lt;li&gt;Готово.&lt;/li&gt;
&lt;/ol&gt;
</description>
</item>

<item>
<title>OpenCart: как отключить кнопку покупки, когда товара нет в наличии</title>
<guid isPermaLink="false">79</guid>
<link>https://antonkim.ru/blog/all/buy-button-disabled/</link>
<pubDate>Thu, 16 Jul 2020 10:15:05 +0000</pubDate>
<author>Антон Ким</author>
<comments>https://antonkim.ru/blog/all/buy-button-disabled/</comments>
<description>
&lt;p&gt;Когда товара нет в наличии, его, по умолчанию, можно добавить в корзину. В таком сценарии нет необходимости.&lt;/p&gt;
&lt;h2&gt;Что делать&lt;/h2&gt;
&lt;ol start="1"&gt;
&lt;li&gt;Открываем &lt;tt&gt;сайт/catalog/controller/product/product.php&lt;/tt&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;ol start="2"&gt;
&lt;li&gt;Находим код (~251 строка):&lt;/li&gt;
&lt;/ol&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;if ($product_info['quantity'] &amp;lt;= 0) {
	$data['stock'] = $product_info['stock_status'];
} elseif ($this-&amp;gt;config-&amp;gt;get('config_stock_display')) {
	$data['stock'] = $product_info['quantity'];
} else {
	$data['stock'] = $this-&amp;gt;language-&amp;gt;get('text_instock');
}&lt;/code&gt;&lt;/pre&gt;&lt;ol start="3"&gt;
&lt;li&gt;Перед ним добавляем:&lt;/li&gt;
&lt;/ol&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;$data['stock_quantity'] = $product_info['quantity'];
$data['text_out_of_stock'] = $product_info['stock_status'];&lt;/code&gt;&lt;/pre&gt;&lt;ol start="4"&gt;
&lt;li&gt;В том же файле находим (~436 строка):&lt;/li&gt;
&lt;/ol&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;$data['products'][] = array(
…
);&lt;/code&gt;&lt;/pre&gt;&lt;ol start="5"&gt;
&lt;li&gt;После скобки добавляем:&lt;/li&gt;
&lt;/ol&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;'quantity' =&amp;gt; $result['quantity'],
'text_out_of_stock' =&amp;gt; $result['stock_status'],&lt;/code&gt;&lt;/pre&gt;&lt;ol start="6"&gt;
&lt;li&gt;Сохраняем, обновляем кэш.&lt;/li&gt;
&lt;/ol&gt;
&lt;ol start="7"&gt;
&lt;li&gt;Открываем &lt;tt&gt;сайт/catalog/theme/тема/template/product/product.twig&lt;/tt&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;ol start="8"&gt;
&lt;li&gt;Находим код:&lt;/li&gt;
&lt;/ol&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;&amp;lt;button type=&amp;quot;button&amp;quot; id=&amp;quot;button-cart&amp;quot; data-loading-text=&amp;quot;{{ text_loading }}&amp;quot; class=&amp;quot;btn button-cart&amp;quot;&amp;gt;{{ button_cart }}&amp;lt;/button&amp;gt;&lt;/code&gt;&lt;/pre&gt;&lt;ul&gt;
&lt;li&gt;В завимости от темы, код может отличаться, но &lt;tt&gt;button-cart&lt;/tt&gt; остаётся константой.&lt;/li&gt;
&lt;/ul&gt;
&lt;ol start="9"&gt;
&lt;li&gt;Заменяем его на:&lt;/li&gt;
&lt;/ol&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;{% if stock_quantity &amp;lt; 1 %} 
    &amp;lt;button type=&amp;quot;button&amp;quot; id=&amp;quot;button-outstock&amp;quot; disabled=&amp;quot;disabled&amp;quot; data-loading-text=&amp;quot;{{ text_loading }}&amp;quot; class=&amp;quot;btn button-cart&amp;quot;&amp;gt;&amp;lt;i class=&amp;quot;fa fa-exclamation-triangle&amp;quot;&amp;gt;&amp;lt;/i&amp;gt; {{ text_out_of_stock }}&amp;lt;/button&amp;gt;
{% else %}
    &amp;lt;button type=&amp;quot;button&amp;quot; id=&amp;quot;button-cart&amp;quot; data-loading-text=&amp;quot;{{ text_loading }}&amp;quot; class=&amp;quot;btn button-cart&amp;quot;&amp;gt;{{ button_cart }}&amp;lt;/button&amp;gt;
{% endif %}&lt;/code&gt;&lt;/pre&gt;&lt;ol start="10"&gt;
&lt;li&gt;В том же файле находим:&lt;/li&gt;
&lt;/ol&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;&amp;lt;input type=&amp;quot;text&amp;quot; name=&amp;quot;quantity&amp;quot; value=&amp;quot;{{ minimum }}&amp;quot; size=&amp;quot;2&amp;quot; id=&amp;quot;input-quantity&amp;quot; class=&amp;quot;form-control&amp;quot; /&amp;gt;&lt;/code&gt;&lt;/pre&gt;&lt;ol start="11"&gt;
&lt;li&gt;Заменяем его на:&lt;/li&gt;
&lt;/ol&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;{% if stock_quantity &amp;gt; 1 %} 
    &amp;lt;input type=&amp;quot;text&amp;quot; name=&amp;quot;quantity&amp;quot; value=&amp;quot;{{ minimum }}&amp;quot; size=&amp;quot;2&amp;quot; id=&amp;quot;input-quantity&amp;quot; class=&amp;quot;form-control&amp;quot; /&amp;gt;
{% endif %}&lt;/code&gt;&lt;/pre&gt;&lt;ol start="12"&gt;
&lt;li&gt;В том же файле находим:&lt;/li&gt;
&lt;/ol&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;&amp;lt;label class=&amp;quot;control-label&amp;quot; for=&amp;quot;input-quantity&amp;quot;&amp;gt;{{ entry_qty }}&amp;lt;/label&amp;gt;&lt;/code&gt;&lt;/pre&gt;&lt;ol start="13"&gt;
&lt;li&gt;Заменяем его на:&lt;/li&gt;
&lt;/ol&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;{% if stock_quantity &amp;gt; 1 %} 
    &amp;lt;label class=&amp;quot;control-label&amp;quot; for=&amp;quot;input-quantity&amp;quot;&amp;gt;{{ entry_qty }}&amp;lt;/label&amp;gt;
{% endif %}&lt;/code&gt;&lt;/pre&gt;&lt;ol start="14"&gt;
&lt;li&gt;Сохраняем, обновляем кэш.&lt;/li&gt;
&lt;/ol&gt;
&lt;ol start="15"&gt;
&lt;li&gt;Готово. На странице товара, когда его не будет в наличии, кнопка «Купить» станет неактивной.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Возникает вопрос. Вот мы отключили кнопку на странице товара. Славно. Но как быть, если кнопка есть ещё и в категориях, поиске, страницах производителей?&lt;/p&gt;
&lt;p&gt;Всё зависит от конкретной темы. Но шаги остаются теми же, — меняются только редактируемые файлы. Например, &lt;tt&gt;category.php&lt;/tt&gt;, &lt;tt&gt;manufacturer.php&lt;/tt&gt;, &lt;tt&gt;search.php&lt;/tt&gt; и пр.&lt;/p&gt;
</description>
</item>

<item>
<title>OpenCart: как скрыть товары, которых нет в наличии</title>
<guid isPermaLink="false">74</guid>
<link>https://antonkim.ru/blog/all/hide-goods/</link>
<pubDate>Fri, 26 Jun 2020 06:02:44 +0000</pubDate>
<author>Антон Ким</author>
<comments>https://antonkim.ru/blog/all/hide-goods/</comments>
<description>
&lt;p&gt;Чтобы были доступны и по ссылке, и в поисковиках.&lt;/p&gt;
&lt;h2&gt;В чём проблема&lt;/h2&gt;
&lt;p&gt;Представим, что у нас много тысяч товаров на сайте. Многих уже нет в наличии. Но они по-прежнему отображаются и в поиске сайта, и в категориях, и на страницах производителей. А мы знаем, что их больше не будет и они просто так «висят».&lt;/p&gt;
&lt;h2&gt;Что делать&lt;/h2&gt;
&lt;ol start="1"&gt;
&lt;li&gt;Открыть &lt;kbd&gt;сайт/catalog/model/catalog/product.php&lt;/kbd&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;ol start="2"&gt;
&lt;li&gt;Открыть поиск и найти все условия:&lt;/li&gt;
&lt;/ol&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;AND p.status = '1'&lt;/code&gt;&lt;/pre&gt;&lt;ul&gt;
&lt;li&gt;Это условие отвечает за показ товара, когда он включён.&lt;/li&gt;
&lt;/ul&gt;
&lt;ol start="3"&gt;
&lt;li&gt;Заменить все найденные условия (кроме одного ↓) на:&lt;/li&gt;
&lt;/ol&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;AND p.status = '1' AND p.stock_status_id != '5'&lt;/code&gt;&lt;/pre&gt;&lt;ul&gt;
&lt;li&gt;Это условие, при котором товар не будет отображаться: включён и нет в наличии.&lt;/li&gt;
&lt;/ul&gt;
&lt;ol start="4"&gt;
&lt;li&gt;Не заменять условие в самом начале файла:&lt;/li&gt;
&lt;/ol&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;public function getProduct($product_id) {
…
}&lt;/code&gt;&lt;/pre&gt;&lt;ol start="5"&gt;
&lt;li&gt;Сохранить, обновить кэш.&lt;/li&gt;
&lt;/ol&gt;
&lt;ol start="6"&gt;
&lt;li&gt;Готово. Товары, которых нет в наличии, не отображаются, но доступны по прямой ссылке и отображаются в поисковиках.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;Другой вариант&lt;/h2&gt;
&lt;p&gt;Допустим, что товара нет в наличии временно. И нам нужно, чтобы его видели на сайте. Тогда можно всё немного переиграть.&lt;/p&gt;
&lt;h2&gt;Что делать&lt;/h2&gt;
&lt;ol start="1"&gt;
&lt;li&gt;В том же файле открыть поиск и найти те же условия.&lt;/li&gt;
&lt;/ol&gt;
&lt;ol start="2"&gt;
&lt;li&gt;Заменить их (также, кроме одного) на:&lt;/li&gt;
&lt;/ol&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;AND p.status = '1' AND p.minimum != '0'&lt;/code&gt;&lt;/pre&gt;&lt;ol start="3"&gt;
&lt;li&gt;Сохранить, обновить кэш.&lt;/li&gt;
&lt;/ol&gt;
&lt;ol start="4"&gt;
&lt;li&gt;Готово. Товары, которых нет в наличии, будут отображаться как обычно. Но товары, у которых минимальное количество будет равно нулю, отображаться не будут. Для них можно создать и отдельный статус, например «Снят с производства».&lt;/li&gt;
&lt;/ol&gt;
</description>
</item>

<item>
<title>OpenCart: автогенерация сопутствующих товаров</title>
<guid isPermaLink="false">73</guid>
<link>https://antonkim.ru/blog/all/automatic-related-products/</link>
<pubDate>Fri, 26 Jun 2020 02:07:37 +0000</pubDate>
<author>Антон Ким</author>
<comments>https://antonkim.ru/blog/all/automatic-related-products/</comments>
<description>
&lt;p&gt;Все сопутствующие товары, по умолчанию, добавляются вручную. Когда на сайте тысячи товаров, это становится проблемой.&lt;/p&gt;
&lt;h2&gt;Что делать&lt;/h2&gt;
&lt;ol start="1"&gt;
&lt;li&gt;Открываем &lt;tt&gt;сайт/catalog/model/catalog/product.php&lt;/tt&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;ol start="2"&gt;
&lt;li&gt;Находим код (~392 строка):&lt;/li&gt;
&lt;/ol&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;$query = $this-&amp;gt;db-&amp;gt;query(&amp;quot;SELECT * FROM &amp;quot; . DB_PREFIX . &amp;quot;product_related pr LEFT JOIN &amp;quot; . DB_PREFIX . &amp;quot;product p ON (pr.related_id = p.product_id) LEFT JOIN &amp;quot; . DB_PREFIX . &amp;quot;product_to_store p2s ON (p.product_id = p2s.product_id) WHERE pr.product_id = '&amp;quot; . (int)$product_id . &amp;quot;' AND p.status = '1' AND p.date_available &amp;lt;= NOW() AND p2s.store_id = '&amp;quot; . (int)$this-&amp;gt;config-&amp;gt;get('config_store_id') . &amp;quot;'&amp;quot;);&lt;/code&gt;&lt;/pre&gt;&lt;ol start="3"&gt;
&lt;li&gt;Заменяем его на:&lt;/li&gt;
&lt;/ol&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;$query = $this-&amp;gt;db-&amp;gt;query(&amp;quot;SELECT *, (p.product_id) AS related_id FROM
  &amp;quot; . DB_PREFIX . &amp;quot;product_to_category p2c 
    LEFT JOIN &amp;quot; . DB_PREFIX . &amp;quot;product p ON (p2c.product_id = p.product_id)
    LEFT JOIN &amp;quot; . DB_PREFIX . &amp;quot;product_to_store p2s ON (p.product_id = p2s.product_id)
  WHERE 
    p2c.category_id IN (SELECT p2c2.category_id FROM &amp;quot; . DB_PREFIX . &amp;quot;product_to_category p2c2 WHERE p2c2.product_id = &amp;quot; . (int) $product_id . &amp;quot;)
      AND p.product_id &amp;lt;&amp;gt; &amp;quot; . (int) $product_id . &amp;quot;
      AND p.status = '1'
      AND p.stock_status_id != '5'
      AND p.date_available &amp;lt;= NOW()
      AND p2s.store_id = '&amp;quot; . (int)$this-&amp;gt;config-&amp;gt;get('config_store_id') . &amp;quot;'
    ORDER BY RAND() ASC
  LIMIT 0,8&amp;quot;);&lt;/code&gt;&lt;/pre&gt;&lt;ol start="4"&gt;
&lt;li&gt;Сохраняем, обновляем кэш.&lt;/li&gt;
&lt;/ol&gt;
&lt;ol start="5"&gt;
&lt;li&gt;Готово.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Сопутствующие товары начнут генерироваться случайным образом — из подкатегорий родительской категории. И только те, которые есть в наличии.&lt;/p&gt;
</description>
</item>

<item>
<title>OpenCart: как защитить админку</title>
<guid isPermaLink="false">72</guid>
<link>https://antonkim.ru/blog/all/admin-protection/</link>
<pubDate>Thu, 25 Jun 2020 17:26:34 +0000</pubDate>
<author>Антон Ким</author>
<comments>https://antonkim.ru/blog/all/admin-protection/</comments>
<description>
&lt;p&gt;Админка, по умолчанию, находится по адресу сайт.ру/admin. Это проблема.&lt;/p&gt;
&lt;h2&gt;Что делать&lt;/h2&gt;
&lt;ol start="1"&gt;
&lt;li&gt;Открываем &lt;tt&gt;сайт/admin/controller/common/login.php&lt;/tt&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;ol start="2"&gt;
&lt;li&gt;Находим код:&lt;/li&gt;
&lt;/ol&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;$this-&amp;gt;load-&amp;gt;language('common/login');&lt;/code&gt;&lt;/pre&gt;&lt;ol start="3"&gt;
&lt;li&gt;После него вставляем:&lt;/li&gt;
&lt;/ol&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;$pass = null;
if (!isset($_GET[PASS_KEY]) || $_GET[PASS_KEY] != PASS) {
    $this-&amp;gt;response-&amp;gt;redirect('http://'.$_SERVER['HTTP_HOST'].&amp;quot;/&amp;quot;);
}
else {
    $pass = '&amp;amp;'.PASS_KEY.'='.PASS;
}&lt;/code&gt;&lt;/pre&gt;&lt;ol start="4"&gt;
&lt;li&gt;Находим код:&lt;/li&gt;
&lt;/ol&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;$data['action'] = $this-&amp;gt;url-&amp;gt;link('common/login', '', true);&lt;/code&gt;&lt;/pre&gt;&lt;ol start="5"&gt;
&lt;li&gt;Заменяем его на:&lt;/li&gt;
&lt;/ol&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;$data['action'] = $this-&amp;gt;url-&amp;gt;link('common/login', '', true).$pass;&lt;/code&gt;&lt;/pre&gt;&lt;ol start="6"&gt;
&lt;li&gt;Открываем &lt;tt&gt;сайт/admin/config.php&lt;/tt&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;ol start="7"&gt;
&lt;li&gt;После тега &lt;&amp;#63;php, на новой строке, вставляем:&lt;/li&gt;
&lt;/ol&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;define('PASS_KEY', 'ключ');
define('PASS', 'пароль');&lt;/code&gt;&lt;/pre&gt;&lt;ol start="8"&gt;
&lt;li&gt;Заменяем ключ, например, на &lt;tt&gt;access&lt;/tt&gt;, а пароль на &lt;tt&gt;hellohacker&lt;/tt&gt;.&lt;/li&gt;
&lt;/ol&gt;
&lt;ol start="9"&gt;
&lt;li&gt;Сохраняем, обновляем кэш.&lt;/li&gt;
&lt;/ol&gt;
&lt;ol start="10"&gt;
&lt;li&gt;Готово.&lt;/li&gt;
&lt;/ol&gt;
&lt;ol start="11"&gt;
&lt;li&gt;Админка будет находиться по адресу &lt;tt&gt;сайт.ру/admin?access=hellohacker&lt;/tt&gt;.&lt;/li&gt;
&lt;/ol&gt;
&lt;ol start="12"&gt;
&lt;li&gt;Если адрес ввести неверно, произойдёт переадресация на главную страницу.&lt;/li&gt;
&lt;/ol&gt;
</description>
</item>

<item>
<title>OpenCart: как минифицировать HTML</title>
<guid isPermaLink="false">71</guid>
<link>https://antonkim.ru/blog/all/html-minification/</link>
<pubDate>Mon, 04 May 2020 16:49:45 +0000</pubDate>
<author>Антон Ким</author>
<comments>https://antonkim.ru/blog/all/html-minification/</comments>
<description>
&lt;p&gt;Для более быстрой загрузки страниц.&lt;/p&gt;
&lt;h2&gt;Что делать&lt;/h2&gt;
&lt;ol start="1"&gt;
&lt;li&gt;Открываем &lt;tt&gt;сайт/system/library/response.php&lt;/tt&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;ol start="2"&gt;
&lt;li&gt;Находим код (~108 строка):&lt;/li&gt;
&lt;/ol&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;public function output() {
	if ($this-&amp;gt;output) {
		$output = $this-&amp;gt;level ? $this-&amp;gt;compress($this-&amp;gt;output, $this-&amp;gt;level) : $this-&amp;gt;output;
		
		if (!headers_sent()) {
			foreach ($this-&amp;gt;headers as $header) {
				header($header, true);
			}
		}
		
		echo $output;
	}
}&lt;/code&gt;&lt;/pre&gt;&lt;ol start="3"&gt;
&lt;li&gt;Заменяем на:&lt;/li&gt;
&lt;/ol&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;public function output() {
 
if ($this-&amp;gt;output) {
    $this-&amp;gt;output = preg_replace(&amp;quot;/(\n)+/&amp;quot;, &amp;quot;\n&amp;quot;, $this-&amp;gt;output);
    $this-&amp;gt;output = preg_replace(&amp;quot;/\r\n+/&amp;quot;, &amp;quot;\n&amp;quot;, $this-&amp;gt;output);
    $this-&amp;gt;output = preg_replace(&amp;quot;/\n(\t)+/&amp;quot;, &amp;quot;\n&amp;quot;, $this-&amp;gt;output);
    $this-&amp;gt;output = preg_replace(&amp;quot;/\n(\ )+/&amp;quot;, &amp;quot;\n&amp;quot;, $this-&amp;gt;output);
    $this-&amp;gt;output = preg_replace(&amp;quot;/\&amp;gt;(\n)+&amp;lt;/&amp;quot;, '&amp;gt;&amp;lt;', $this-&amp;gt;output);
    $this-&amp;gt;output = preg_replace(&amp;quot;/\&amp;gt;\r\n&amp;lt;/&amp;quot;, '&amp;gt;&amp;lt;', $this-&amp;gt;output);
}

if ($this-&amp;gt;output) {
	$output = $this-&amp;gt;level ? $this-&amp;gt;compress($this-&amp;gt;output, $this-&amp;gt;level) : $this-&amp;gt;output;
	
	if (!headers_sent()) {
		foreach ($this-&amp;gt;headers as $header) {
			header($header, true);
		}
	}
	
	echo $output;
}
}&lt;/code&gt;&lt;/pre&gt;&lt;ol start="4"&gt;
&lt;li&gt;Сохраняем, обновляем кэш.&lt;/li&gt;
&lt;/ol&gt;
&lt;ol start="5"&gt;
&lt;li&gt;Готово.&lt;/li&gt;
&lt;/ol&gt;
</description>
</item>

<item>
<title>OpenCart: как сделать сортировку атрибутов по порядку сортировки</title>
<guid isPermaLink="false">70</guid>
<link>https://antonkim.ru/blog/all/attribute-sorting/</link>
<pubDate>Mon, 04 May 2020 16:46:27 +0000</pubDate>
<author>Антон Ким</author>
<comments>https://antonkim.ru/blog/all/attribute-sorting/</comments>
<description>
&lt;p&gt;Потратил кучу времени на поиски решения, а оно оказалось до смешного простым.&lt;/p&gt;
&lt;h2&gt;В чём проблема&lt;/h2&gt;
&lt;p&gt;Вот мы создали группу атрибутов. Затем создали атрибуты, привязали к группе атрибутов, задали порядок сортировки. На сайте всё отображается нормально — согласно порядку сортировки. В админке же — всё сортируется по названиям, и это очень сбивает.&lt;/p&gt;
&lt;h2&gt;Что делать&lt;/h2&gt;
&lt;ol start="1"&gt;
&lt;li&gt;Открываем &lt;tt&gt;сайт/admin/model/catalog/attribute.php&lt;/tt&gt;.&lt;/li&gt;
&lt;/ol&gt;
&lt;ol start="2"&gt;
&lt;li&gt;Находим код (~53 строка):&lt;/li&gt;
&lt;/ol&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;if (isset($data['sort']) &amp;amp;&amp;amp; in_array($data['sort'], $sort_data)) {
	$sql .= &amp;quot; ORDER BY &amp;quot; . $data['sort'];
} else {
	$sql .= &amp;quot; ORDER BY attribute_group, ad.name&amp;quot;;
}&lt;/code&gt;&lt;/pre&gt;&lt;ol start="3"&gt;
&lt;li&gt;Изменяем последнюю строку:&lt;/li&gt;
&lt;/ol&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;$sql .= &amp;quot; ORDER BY attribute_group, a.sort_order, ad.name&amp;quot;;&lt;/code&gt;&lt;/pre&gt;&lt;ol start="4"&gt;
&lt;li&gt;То есть, по умолчанию, в карточке товара в админке, стоит сортировка по названию. Мы же сделали по порядку сортировки, а затем по названию.&lt;/li&gt;
&lt;/ol&gt;
&lt;ol start="5"&gt;
&lt;li&gt;Сохраняем, обновляем кэш.&lt;/li&gt;
&lt;/ol&gt;
&lt;ol start="6"&gt;
&lt;li&gt;Готово.&lt;/li&gt;
&lt;/ol&gt;
</description>
</item>

<item>
<title>OpenCart: автогеренация тайтла</title>
<guid isPermaLink="false">69</guid>
<link>https://antonkim.ru/blog/all/title-autogenerate/</link>
<pubDate>Mon, 27 Apr 2020 16:40:17 +0000</pubDate>
<author>Антон Ким</author>
<comments>https://antonkim.ru/blog/all/title-autogenerate/</comments>
<description>
&lt;p&gt;Чтобы получилось вот так:&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://antonkim.ru/blog/pictures/generate-title.gif" width="1000" height="410" alt="" /&gt;
&lt;/div&gt;
&lt;p&gt;При этом, чтобы иметь возможность отдельно редактировать сам тайтл.&lt;/p&gt;
&lt;h2&gt;Что делать&lt;/h2&gt;
&lt;ol start="1"&gt;
&lt;li&gt;Открываем &lt;tt&gt;сайт/admin/view/template/catalog/product_form.twig&lt;/tt&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;ol start="2"&gt;
&lt;li&gt;Находим код (~67 строка):&lt;/li&gt;
&lt;/ol&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;&amp;lt;input type=&amp;quot;text&amp;quot; name=&amp;quot;product_description[{{ language.language_id }}][meta_title]&amp;quot; value=&amp;quot;{{ product_description[language.language_id] ? product_description[language.language_id].meta_title }}&amp;quot; placeholder=&amp;quot;{{ entry_meta_title }}&amp;quot; id=&amp;quot;input-meta-title{{ language.language_id }}&amp;quot; class=&amp;quot;form-control&amp;quot; /&amp;gt;&lt;/code&gt;&lt;/pre&gt;&lt;ol start="3"&gt;
&lt;li&gt;После него вставляем:&lt;/li&gt;
&lt;/ol&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;&amp;lt;script type=&amp;quot;text/javascript&amp;quot;&amp;gt;
$(function() {
  var $name_input = $(&amp;quot;input[name='product_description[{{ language.language_id }}][name]']&amp;quot;);
  var $meta_title = $(&amp;quot;input[name='product_description[{{ language.language_id }}][meta_title]']&amp;quot;);

  $name_input.keyup(function() {
  $meta_title.val($name_input.val());
  });
});
&amp;lt;/script&amp;gt;&lt;/code&gt;&lt;/pre&gt;&lt;ol start="4"&gt;
&lt;li&gt;Сохраняем, обновляем кэш.&lt;/li&gt;
&lt;/ol&gt;
&lt;ol start="5"&gt;
&lt;li&gt;Готово.&lt;/li&gt;
&lt;/ol&gt;
&lt;ol start="6"&gt;
&lt;li&gt;Можно пойти дальше. Например, чтобы после названия автоматически генерировалось «купить в „магазине“».&lt;/li&gt;
&lt;/ol&gt;
&lt;ol start="7"&gt;
&lt;li&gt;Изменяем одну строку:&lt;/li&gt;
&lt;/ol&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;$meta_title.val($name_input.val() + 'Тут какой-то текст');&lt;/code&gt;&lt;/pre&gt;&lt;ol start="8"&gt;
&lt;li&gt;Готово — 2.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Ту же самую процедуру можно провернуть и с категориями.&lt;/p&gt;
&lt;p&gt;Спасибо за помощь &lt;a href="https://usnko.pp.ua/?utm_source=antonkim.com&amp;utm_medium=article"&gt;Ярославу Усенко&lt;/a&gt;.&lt;/p&gt;
</description>
</item>

<item>
<title>OpenCart: как сделать сортировку товаров по наличию</title>
<guid isPermaLink="false">68</guid>
<link>https://antonkim.ru/blog/all/sort-by-availability/</link>
<pubDate>Sun, 26 Apr 2020 16:30:06 +0000</pubDate>
<author>Антон Ким</author>
<comments>https://antonkim.ru/blog/all/sort-by-availability/</comments>
<description>
&lt;p&gt;И в магазине, и в админке.&lt;/p&gt;
&lt;h2&gt;В чём проблема&lt;/h2&gt;
&lt;p&gt;По умолчанию, все товары в категориях, страницах производителей, поиске — сортируются по названиям в алфавитном порядке. И даже те товары, которых нет в наличии, могут отображаться в начале списка. А когда таких товаров много — это становится проблемой.&lt;/p&gt;
&lt;h2&gt;Что делать&lt;/h2&gt;
&lt;ol start="1"&gt;
&lt;li&gt;Открываем &lt;tt&gt;сайт/catalog/model/catalog/product.php&lt;/tt&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;ol start="2"&gt;
&lt;li&gt;Находим код (~168 строка):&lt;/li&gt;
&lt;/ol&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;if (isset($data['sort']) &amp;amp;&amp;amp; in_array($data['sort'], $sort_data)) {
	if ($data['sort'] == 'pd.name' || $data['sort'] == 'p.model') {
		$sql .= &amp;quot; ORDER BY LCASE(&amp;quot; . $data['sort'] . &amp;quot;)&amp;quot;;
	} elseif ($data['sort'] == 'p.price') {
		$sql .= &amp;quot; ORDER BY (CASE WHEN special IS NOT NULL THEN special WHEN discount IS NOT NULL THEN discount ELSE p.price END)&amp;quot;;
	} else {
		$sql .= &amp;quot; ORDER BY &amp;quot; . $data['sort'];
	}
} else {
	$sql .= &amp;quot; ORDER BY p.sort_order&amp;quot;;
}&lt;/code&gt;&lt;/pre&gt;&lt;ol start="3"&gt;
&lt;li&gt;Заменяем его на:&lt;/li&gt;
&lt;/ol&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;if (isset($data['sort']) &amp;amp;&amp;amp; in_array($data['sort'], $sort_data)) {
    if ($data['sort'] == 'pd.name' || $data['sort'] == 'p.model') {
        $sql .= &amp;quot; ORDER BY p.stock_status_id DESC, LCASE(&amp;quot; . $data['sort'] . &amp;quot;)&amp;quot;;
    } elseif ($data['sort'] == 'p.price') {
        $sql .= &amp;quot; ORDER BY p.stock_status_id DESC, (CASE WHEN special IS NOT NULL THEN special WHEN discount IS NOT NULL THEN discount ELSE p.price END)&amp;quot;;
    } else {
        $sql .= &amp;quot; ORDER BY p.stock_status_id DESC, &amp;quot; . $data['sort'];
    }
} else {
    $sql .= &amp;quot; ORDER BY p.stock_status_id DESC, p.sort_order&amp;quot;;
}&lt;/code&gt;&lt;/pre&gt;&lt;ol start="4"&gt;
&lt;li&gt;Сохраняем, обновляем кэш.&lt;/li&gt;
&lt;/ol&gt;
&lt;ol start="5"&gt;
&lt;li&gt;Готово. Товары будут сортироваться по наличию. Товаров, которых нет в наличии, будут отображаться в конце списка.&lt;/li&gt;
&lt;/ol&gt;
&lt;ol start="6"&gt;
&lt;li&gt;Можно сортировать и по количеству, а уже затем по наличию. Для этого заменяем на:&lt;/li&gt;
&lt;/ol&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;if (isset($data['sort']) &amp;amp;&amp;amp; in_array($data['sort'], $sort_data)) {
    if ($data['sort'] == 'pd.name' || $data['sort'] == 'p.model') {
        $sql .= &amp;quot; ORDER BY p.quantity DESC, p.stock_status_id DESC, LCASE(&amp;quot; . $data['sort'] . &amp;quot;)&amp;quot;;
    } elseif ($data['sort'] == 'p.price') {
        $sql .= &amp;quot; ORDER BY p.quantity DESC, p.stock_status_id DESC, (CASE WHEN special IS NOT NULL THEN special WHEN discount IS NOT NULL THEN discount ELSE p.price END)&amp;quot;;
    } else {
        $sql .= &amp;quot; ORDER BY p.quantity DESC, p.stock_status_id DESC, &amp;quot; . $data['sort'];
    }
} else {
    $sql .= &amp;quot; ORDER BY p.quantity DESC, p.stock_status_id DESC, p.sort_order&amp;quot;;
}&lt;/code&gt;&lt;/pre&gt;&lt;ol start="7"&gt;
&lt;li&gt;Можно использовать разные комбинации: сортировать по стоимости, рейтингу, дате добавления. Нужно лишь подменить значения в коде выше. Вот они:&lt;/li&gt;
&lt;/ol&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;$sort_data = array(
    'pd.name',
    'p.model',
    'p.quantity',
    'p.price',
    'rating',
    'p.sort_order',
    'p.date_added'
);&lt;/code&gt;&lt;/pre&gt;&lt;h2&gt;Как сделать в админке&lt;/h2&gt;
&lt;ol start="1"&gt;
&lt;li&gt;Открываем сайт/admin/model/catalog/product.php.&lt;/li&gt;
&lt;/ol&gt;
&lt;ol start="2"&gt;
&lt;li&gt;Делаем тоже самое, что и наверху.&lt;/li&gt;
&lt;/ol&gt;
&lt;ol start="3"&gt;
&lt;li&gt;Готово.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;По теме&lt;/h2&gt;
&lt;p&gt;&lt;a href="http://old.code.mu/sql/order-by.html"&gt;Сортировка данных в SQL (ORDER BY&lt;/a&gt;).&lt;/p&gt;
</description>
</item>

<item>
<title>OpenCart: как подключить LazyLoad</title>
<guid isPermaLink="false">67</guid>
<link>https://antonkim.ru/blog/all/opencart-lazyload/</link>
<pubDate>Fri, 24 Apr 2020 11:37:07 +0000</pubDate>
<author>Антон Ким</author>
<comments>https://antonkim.ru/blog/all/opencart-lazyload/</comments>
<description>
&lt;p&gt;На страницы товаров, в категориях, результаты поиска, страницы производителей.&lt;/p&gt;
&lt;h2&gt;Что это&lt;/h2&gt;
&lt;p&gt;Это ленивая загрузка изображений, которая ускоряет загрузку сайта.&lt;/p&gt;
&lt;h2&gt;Что делать&lt;/h2&gt;
&lt;p&gt;Примечание: для работы скрипта нужна подключённая библиотека jquery.&lt;/p&gt;
&lt;ol start="1"&gt;
&lt;li&gt;Скачать &lt;a href="https://antonkim.ru/blog/download/lazyload.min.js" download&gt;lazyload.min.js&lt;/a&gt;.&lt;/li&gt;
&lt;/ol&gt;
&lt;ol start="2"&gt;
&lt;li&gt;Можно подключить и ссылкой:&lt;/li&gt;
&lt;/ol&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;&amp;lt;script src=&amp;quot;https://cdn.jsdelivr.net/npm/vanilla-lazyload@15.1.1/dist/lazyload.min.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;/code&gt;&lt;/pre&gt;&lt;ol start="3"&gt;
&lt;li&gt;Загрузить файл в &lt;tt&gt;catalog/view/javascript/&lt;/tt&gt;. Или куда удобно.&lt;/li&gt;
&lt;/ol&gt;
&lt;ol start="4"&gt;
&lt;li&gt;Подключить в &lt;tt&gt;header.twig&lt;/tt&gt; в своей теме.&lt;/li&gt;
&lt;/ol&gt;
&lt;ol start="5"&gt;
&lt;li&gt;В &lt;tt&gt;footer.twig&lt;/tt&gt;, перед закрывающим тегом &lt;tt&gt;body&lt;/tt&gt;, вставить:&lt;/li&gt;
&lt;/ol&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;&amp;lt;script&amp;gt;
var lazyLoadInstance = new LazyLoad({
    elements_selector: &amp;quot;.lazy&amp;quot;
});
&amp;lt;/script&amp;gt;&lt;/code&gt;&lt;/pre&gt;&lt;ol start="6"&gt;
&lt;li&gt;Переходим в &lt;tt&gt;сайт/catalog/view/тема/product/category.twig&lt;/tt&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;ol start="7"&gt;
&lt;li&gt;К каждому тегу img добавляем класс lazy, а вместо src — data-src. Вот так:&lt;/li&gt;
&lt;/ol&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;&amp;lt;img class=&amp;quot;lazy&amp;quot; data-src=&amp;quot;ссылка на изображение&amp;quot; alt=&amp;quot;&amp;quot;&amp;gt;&lt;/code&gt;&lt;/pre&gt;&lt;ol start="8"&gt;
&lt;li&gt;Тоже самое нужно проделать в файлах &lt;tt&gt;product.twig&lt;/tt&gt;, &lt;tt&gt;search.twig&lt;/tt&gt;, &lt;tt&gt;manufacturer_info.twig&lt;/tt&gt;.&lt;/li&gt;
&lt;/ol&gt;
&lt;ol start="9"&gt;
&lt;li&gt;Сохраняем, обновляем кэш.&lt;/li&gt;
&lt;/ol&gt;
&lt;ol start="10"&gt;
&lt;li&gt;Готово.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;У скрипта много настроек и возможностей, взгляните &lt;a href="https://github.com/verlok/lazyload"&gt;на гитхабе&lt;/a&gt;.&lt;/p&gt;
</description>
</item>


</channel>
</rss>