11 жовтня 2017

Smart-елементи. Скорочуємо час на створення однотипних листів за рахунок їх автоматизації

Створити листи з Smart-елементами

Створюючи новий шаблон для розсилки, часто доводиться робити одні і ті ж дії. Наприклад, уявіть: у Вас є сайт, на якому опубліковані товари. Якщо Вам потрібно відправити лист про акцію з посиланням на 5 товарів з вашого сайту, потрібно завантажити 5-ть зображень, назв товарів, їх цін і посилань, щоб вказати їх під кнопкою “Купити”. Ці викачані об’єкти, як правило, застосовуються в листі по кілька разів, наприклад, назва товару використовується 3 рази: в полі “назва товару”, для title і alt-тексту зображення товару. Те ж саме з посиланням, його ми застосовуємо для кнопки, для зображення, для заголовка і т.д. А завтра нова акція і знову потрібно повторювати описані вище кроки. А що якщо товарів не 5, а 50? Це біль, чи не так?

Для того, щоб скоротити втрату Вашого часу на виконання рутинних операцій ми створили нову сутність — smart-елемент, який дозволяє автоматизувати цей процес! Хоча, якщо бути чесним, спочатку доведеться трохи “попітніти”, щоб потім відбувалася магія.

І так, що таке smart-елемент?

Smart-елемент — це структура, контейнер або смуга, в яких присутні всі ті ж базові блоки, як Зображення, Текст, Кнопка і так далі, але для них активована опція отримання даних через змінні із зовнішніх джерел. Ви один раз налаштовуєте контент, в якому будуть розташовані в потрібному порядку заголовок товару, зображення, ціна, опис та кнопка “Купити”, а також їх зовнішній вигляд. Далі додаєте змінні, встановлюєте правила звідки брати значення і куди їх застосовувати і все – smart-елемент готовий до використання. Вам потрібно всього лише вказати посилання на сторінку продукту на сайті і система самостійно “витягне” з неї потрібні нам дані і застосує їх в зазначених місцях Вашого листа. В кінцевому рахунку, створюючи 5 карток товару Ви значно економите час, вказавши лише 5-ть різних посилань — інше система робить самостійно!

Додатково варто відзначити, що система дозволяє налаштувати перетворення даних через модифікатори, наприклад, щоб отримане значення ціни з сайту у вигляді ХХХХ.ХХ в листі відображалося як Х,ХХХ або Х,ХХХ.ХХ, або щоб отриману назву товару довжиною в 150 символів обрізати до перших 50 символів і т.д.

Давайте детальніше розглянемо всі переваги smart-елемента на прикладі.

Приклад створення смарт-контейнера для картки товару

Для прикладу давайте розглянемо створення картки товару, розташованого на сайті Boohoo. Для картки з цього сайту мені потрібні будуть зображення продукту, його назву і ціна.

У редакторі Stripo кидаємо структуру з двох контейнерів (відразу обмовлюся: це на Ваш особистий розсуд, скільки саме контейнерів в структурі Вам потрібно, стільки і додавайте). У перший контейнер додаю потрібні мені блоки (Зображення, два блоки Текст, Кнопка) – роблю “скелет” картки товару.

Далі, виділяю контейнер з базовими блоками (для цього кликаю по синій лейбі “Контейнер” зверху), вибираю в бічній панелі табу “Дані” і кликаю на кнопку “Почати” для активації Smart-властивості.

В результаті, замість кнопки відобразиться візуальний конструктор, в якому ми можемо:

  • налаштувати всі можливі правила отримання значень, застосування їх через змінні до потрібних блокам всередині мого листа. Для цього нам знадобиться вкладка “Конфігурація”;
  • переглянути і скоригувати вручну (при бажанні) отримані значення налаштованих змінних з сайту у вкладці “Зовнішній вигляд”.

І так, приступимо до конфігурації — додамо змінні. Для зручності користування, якщо натиснути на іконку додавання змінної, буде показаний список найпопулярніших, які найчастіше можуть бути у Товарів / Продуктів або у Блогових записах. До речі, зверніть увагу, що як тільки ми активуємо smart-властивість будь-якого об’єкта, за замовчуванням створюється змінна URL, яку видалити не можна.

Так як я задумала зробити картку з зображенням, назвою і ціною, я додаю змінні Name, Image, Price з секції Product. Кожній доданої змінної створюється своя табка для конфігурації. Разом їх у мене виходить чотири.

Далі потрібно налаштувати правила отримання значення для цих змінних і їх застосування в нашому smart-елементі. Для цього переходимо до контролю Matching rules, який складається з двох вкладок:

  • Внутрішні правила. Тут ми будемо задавати правила куди саме потрібно застосувати уже отримані значення змінних в нашому smart-елементі.
  • Зовнішні правила. У ньому налаштовуються правила, звідки потрібно отримати значення змінних з потрібного нам сайту. Також тут є контроли, що дозволяють перетворити отримане значення через регулярні вирази або застосовуючи різні види форматування.

Правила для кожної вкладки налаштовуються через загальноприйнятий механізм пошуку елементів в HTML через CSS-селектори і Атрибути, про які більш детально можна прочитати тут.

Так як цей процес вимагає певних знань пристрої сайтів, давайте розглянемо його детальніше для кожної змінної з мого прикладу.

Змінна URL

У цієї змінної є контрол “Динамічний сайт”, який за замовчуванням вимкнений. Якщо сайт, з якого Ви хочете отримати значення для будь-якої із змінних smart-елемента, є динамічним – відзначте цей контрол, поставивши чекбокс навпроти.

Динамічний сайт — це сайт, вміст якого створюється з КЛІЄНТСЬКОЇ сторони javascript-ом, тобто отримавши HTML сторінки на ній не можна знайти потрібні елементи, не виконавши перед цим всі належні скрипти. Наприклад, ціна розраховується на льоту і т.п.

Сайт, з якого я збираюся отримати значення, не є динамічним, тому я пропускаю контрол і переходжу відразу до Matching rules.

Так як мені потрібно, щоб в smart-елементі були посилання на сайт при натисканні на кнопку “Купити” і картинку продукту, у вкладці “Внутрішні правила” я прописую правило, щоб значення змінної встановлювалося всіх елементів ‘a’ (поле CSS селектор) в атрибут ‘href’ (поле Атрибут).

Зверніть увагу, що для цієї змінної не доступна вкладка “Зовнішніх правил”, так як по суті сама посилання на сайт і є джерелом отримання даних.

Змінна для зображення продукту

Встановимо для початку правило отримання зображення продукту для вкладки “Зовнішнє правило”. Для цього відкриваємо сторінку сайту з продуктом, наводимо курсор на зображення, натискаємо правою кнопкою миші для відкриття контекстного меню і вибираємо пункт “Перевірити об’єкт” (зверніть увагу що цей пункт меню може називатися інакше на Вашому комп’ютері, наприклад “Дослідити”). В результаті відкриється консоль, в якій ми побачимо CSS-селектори з атрибутами.

У моєму випадку, правило для отримання зображення вийшло наступним:

CSS-селектор: div # product-primary-image.product-primary-image.js-product-primary-image a
Атрибут: href

Встановлюємо їх у відповідні поля вкладки “Зовнішні правила”. Для вкладки “Внутрішні правила” я вказую:

CSS-селектор: .esd-block-image .adapt-img
Атрибут: src

Завдяки цьому правилу, отримане значення зображення буде застосовано для атрибута ‘src’, який розташований в блоці “Зображення”.

Змінні для назви продукту і ціни

По суті, принцип дії тут такий же, як ми вже зробили для зображення. Тільки є деяка хитрість, якою я хочу з Вами поділитися.

Як Ви пам’ятаєте, я додала два блоку “Текст” в наш smart-елемент. Перший я буду використовувати для назви, а другий – для ціни. Причому контент для першого блоку буде заповнюватися тільки з сайту, а для блоку з ціною: частина контенту буде братися з сайту, а частина буде константою. Наприклад, ось так:

У другому текстовому блоці виділене слово “Price:” буде константою, а текст далі буде замінюватися на значення, отриманої з сайту. Щоб наш smart-елемент зміг розрізнити ці блоки (який з текстових полів ми хочемо зробити для назви, а який для ціни), а також розуміти куди саме застосовувати отриманий контент — потрібно кожному з них додати свій унікальний клас у редакторі коду HTML. У моєму випадку, це будуть класи esd-p-name і esd-p-price.

Тепер заповнюємо по черзі для кожної змінної внутрішні і зовнішні правила для контрола Matching rules.

В моєму випадку,

Для змінної Name

  • внутрішні правила

CSS-селектор: .esd-block-text.esd-p-name
Атрибут: пусто
CSS-селектор 2: .esd-block-image a img
Атрибут: title
CSS-селектор 3: .esd-block-image a img
Атрибут: alt

  • зовнішні правила:

CSS-селектор: h1.product-name.js-product-name
Атрибут: пусто

Для змінної Price

  • внутрішні правила

CSS-селектор: .esd-p-price
Атрибут: пусто

  • зовнішні правила:

CSS-селектор: span[itemprop=price]
Атрибут: пусто

От і все. Найскладніше позаду! Тепер залишилася справа за малим — отримати значення за посиланням з зовнішнього сайту. Для цього просто вставте посилання в поле Link і дочекайтеся декількох секунд для відображення отриманих даних.

Вуаля — smart-елемент зробив свою справу! У шаблоні відображаються ім’я, зображення і ціна продукту з нашого сайту. Тепер залишилося трохи підредагувати стилі картки товару. Дивіться, що у мене вийшло!

У вкладці “Зовнішній вигляд” ми бачимо всі дані, які відображаються у нас в шаблоні, тут ми можемо їх відкоригувати, що не переживаючи що це якось вплине на стилі форматування.

Так як наш smart-елемент вже налаштований, для створення аналогічної картки товару з іншої сторінки цього сайту, треба всього-лише вказати інший шлях в поле Link і картка товару буде заповнена новими даними автоматично, а Ваш час буде значно зекономлено!

Закінчити цю статтю хочеться приємним бонусом — у всіх наших безкоштовних шаблонах вже є підготовлені нами smart-елементи. У них вже налаштовані внутрішні правила, тому для їх використання Вам достатньо вказати зовнішні правила у відповідності з Вашим сайтом. Так як зовнішні правила стандартні для більшості сайтів, ми незабаром додамо їх як приклади в систему для їх автоматичної підстановки.

54 коментарів
Is it possible to pull data from metadata other than OG? eg. if I wanted to pull the content from how would I go about doing that?
Dear James, Thank you for your question. The article in question offers detailed guidance on extracting content from metadata, not limited to the Open Graph protocol. It may well cover the scenario you're facing with your website. Should you have any lingering questions after reading, or require further assistance, please don't hesitate to get in touch at support@stripo.email, including your website's link. We're eager to help and guide you through extracting data from your site. Best wishes, Hanna.
Hi, is it smart element work with woo-commerce? I cant import my product with smart elements. Here the link: https://droppii.vn/san-pham/nuoc-uong-ho-tro-tieu-duong-more/ I want to take Name, price, description & link. Thanks a lot
Although my website has "og:" tag, but it cannot load the element
Hello, We opened the link you provided us and the site doesn't load completely. On the screenshot, we caught errors in the console - https://prnt.sc/noRlBcdyhj3r. We tried to connect different Internet connections and also enabled the VPN service. However, it didn’t help. That’s why our system cannot pull data from your site since it does not load to the end for us. Maybe you have another website example?
Hello, there is a way to target the href attribute from a bracket? I use the MSO compatibility for my buttons and when i use the variables for adding my url into my html elements (image, link and buttons), that doesn't work for the mso button. Here is the line in question: [..]
Hello, Your line, "Here is the line in question: [..] " If this is supposed to be a link, it doesn', and werk, we can't click on it, sorry. Code for MSO buttons is an HTML comment, and as far as I know, Smart Elements does not work with HTML comments, they handle tags only. Would you provide us with a link to your product so we can check if it is compatible with the Smart Elements option? Thank you.
from a v:roundrect brack. Sorry I encounter some difficulties :'(
Hello, please help pulling main photo, price, name from: https://selly.vn/product/6225745b9da17eda62fb290e I have tried many ways with instruction but it was not worked
Hello, I want to bring to your attention that smart elements aren't the universal solution for all possible cases. Unfortunately, some sites don't allow get information from them using smart containers, as it happens with this site I assume.
Hello, please help pulling main photo, price and name from: https://loja.misterpc.pt/DELL-LATITUDE-E6330-13.3-i5-3320m-6GB-120GB-SSD-OFERTA-DE-MALA Thanks.
Hello, You can try to get the image, name, and price via the next external attributes: - image CSS selector meta[property='og:image'] Attribute content https://skr.sh/s8mMuXxz6cF - name CSS selector .title-product https://skr.sh/s8mWqjDYnJ5 - price CSS selector .price-new https://skr.sh/s8msNx9lVA6
Добрый день! Какие данные нужны, чтобы вытянуть картинку(основное фото), цену и название с конкретным объемом со страницы подобного типа https://aromaup.ru/parfyumeriya/muzhskie-duhi/banana-republic-wildblue-noir/ ? Заранее спасибо
Добрый день. С данного сайта получилось извлечь картинку, цену и название используя следующие внешние селекторы: .ty-product-block-title для названия - http://prntscr.com/117725t meta[itemprop="price"] и content атрибут для цены - http://prntscr.com/11771un meta[property="og:image"] и content атрибут для картинки - http://prntscr.com/11772iw Пожалуйста, обратите внимание что данный сайт использует изображения в формате webp. Они могут не отображаться в некоторых почтовых сервисам. Мы используем jpg, png и gif изображения как наиболее кросс-платформенные.
Александр, мы сменили фото на формат jpg. Помогите, пожалуйста, еще с парой моментов. 1 - https://prnt.sc/117chj6 вы можете указать параметры для получения этого фото? А то мы очень тяжелое фото детализированное получили пердыдущим способом. 2. Как получить текст с объемом отсюда https://prnt.sc/117ckt3 ?Именно от первой строки(вариация товара с объемом) в карточке
1. Насколько я могу судить, картинка с меньшим разрешением на данном сайте не содержит каких-то уникальных классов. Классы использующиеся для изображении применяются на странице множество раз - http://prntscr.com/117ded6. Поэтому будет сложно получить значение именно из нужного тега. Если тег данной картинки будет содержать какой-то уникальный класс (не повторяющийся на странице) или ID это может помочь. 2. Можно попробовать использовать .ty-product-options-content > a > strong селектор Однако, как я понимаю тут похожая ситуация с первым пунктом, т.к. для данного элемента не используются уникальные классы и селекторы получают все значения доступные для данного класса - http://prntscr.com/117djoz
Спасибо за помощь! Видимо, придется в отдельном формате фото выводить под это дело
День добрый. Помогите пожалуйста с селекторами для картинки. Пробовал селекторы в контейнере с картинкой не работает. https://iherb.in.ua/houston-enzymes-trienza-90-kapsul.html
Добрый день. По данной ссылке удалось получить картинку используя следующие CSS селекторы: внутренний .adapt-img и атрибут src http://prntscr.com/10ou3ms внешний .imagezoom и атрибут href http://prntscr.com/10ou6g8
Добрый день! Вот есть товар https://fitomarket.com.ua/pravenor-forte-kaps-60 . Атрибут href, а CSS-селектор какой использовать?
Здравствуйте. Для изображение можете использовать: CSS селектор: div.main-imagemain-image-wrapper > a > img Атрибут: src
Здраствуйте. Помогите с селекторами https://pro.auto/katalog/tjagachi/4x2/man-tga-18-390-id-13076/ . И еще вопрос: Можно ли как-нибудь автоматизировать. Чтобы данные брались не из товарной карточки, а со страницы с каталогом, чтобы в рассылку не попадали проданные товары?
Добрый день. Используя .vehicleName .priceIn .vehicleSpecifications внешние селекторы удалось получить название товара, цену и его описание. Насколько я могу судить, используя смарт-элементы получить картинки с данного сайта не получится. По поводу вашего вопроса об автоматизации. Могли бы вы уточнить адрес страницы с которой необходимо получить данные? Спасибо.
Подскажите какие селекторы нужно указать для названия товара и фото Для карточки товара https://kosmetika-proff.ru/catalog/detail/modeliruyushchiy_krem_filler_dlya_gub/
Добрый день. Название товара и фото с данного сайта получилось "подтянуть" используя следующие внешние селекторы: h1[itemprop='name'] для названия - http://prntscr.com/uprxrk а также .img-target и атрибут src для фото. Пожалуйста, обратите внимание что для фото понадобится использование модификатора /upload/ и замены https://kosmetika-proff.ru/upload/ http://prntscr.com/uprzxq
Благодарю за опаеративный ответ. Очень помогли. По аналогии попробовал добавить цену и старую цену.Почемуто и то и другое задваивается. https://yadi.sk/i/dgqsms4ZYUGfjA
Для старой цены указывал внешний селектор - s А для цены - span.price
Чтобы избежать "задваивания", можно попробовать использовать следующие внешние селекторы. Для цены: meta[itemprop='price'] и атрибут content https://prnt.sc/upt347 Для старой цены: .element-price-price-old.x-element-price-price-old http://prntscr.com/upt49z
Спасибо!!!
Добрый день! А получится использовать эмейл рассылку с подхватом картинок и цен для сайта https://nspdoma.com.ua/colloidal-silver.php
Добрый день. Напишите пожалуйста к нам в службу поддержки и мы поможем настроить Вам Smart-Container
Добрый день. Никак не могу подобрать селекторы для картинок и стоимости для https://novaflora.com.ua/tyulpan-double-beauty-of-apeldoorn Заранее благодарен за помощь
Добрый день. Чтобы "подтянуть" картинку и стоимость вы можете попробовать использовать следующие внешние селекторы: meta[property='og:image'] с атрибутом content http://prntscr.com/t920mq #main-product-wrapper > div.row.product-info-row > div.col-md-5.col-product-info > div.product_header_container.clearfix > div > div:nth-child(3) > div > span без атрибута http://prntscr.com/t920v3
День добрый. Помогите пожалуйста с селекторами для картинки. Перебрал селекторы всех в контейнере с картинкой ничего не работает. https://mitsudiesel.su/catalog/diesel/ad-30-t400/ Спасибо.
Добрый день. Для картинок на приведенном сайте используются относительные ссылки вместо абсолютных, поэтому потребуется использовать модификатор и следующий внешний CSS селектор: .wrp_img img атрибут src модификатор assets замещение https://mitsudiesel.su/assets http://prntscr.com/ss4f8i
Здравствуйте! Подскажите, пожалуйста, какой селектор взять с сайта https://usmall.ru/product/734594-ribbed-stretch-viscose-tank-top-michael-kors Можно ли добавить определенную картинку из слайдера? Спасибо
Добрый день. Основную картинку удалось получить с использованием .p-product__thumb.__active img селектора и src аттрибута - http://prntscr.com/sokhku Вторую картинку из слайдера удалось "втянуть" с помощью следующего селектора: #__layout > div > div > section > div > div.grid.small-collapse > div.item.item--images > div.ui-scroller.p-product__thumb-list > div > div:nth-child(2) > img и того же атрибута - http://prntscr.com/sokiyf
Делаю так, как вы написали. Приходят картинки других вариантов продукта - другого цвета вещи :( Вытянуть заглавную картинку слайдера вообще невозожмно?
Вы можете "вытянуть" заглавную картинку слайдера с помощью .p-product__thumb.__active img селектора, как я и писал выше. Пожалуйста, обратите внимание что если сайт использует разное расположение элементов и разные ID и классы на разных страницах (отличающихся от расположения по ссылке которую вы привели выше) то селекторы могут не работать универсально для всех страниц. Если вы хотите и уточните почтовый ящик на который зарегестрирован ваш аккаунт в Страйпо, я могу добавить в ваш аккаунт письмо с примером работы описанных мною селекторов.
Я пробую сделать так и не всегда получаю данные из слайдера на странице. У товаров могут быть разные варианты по цвету и по этому селектору показывается карточка товара не из слайдера страницы, а из какого-то товара. Также есть вариант, что цена на разный цвет отличается, поэтому по селектору цены передается цена не того варианта. моя почта hello@anyastepanova.ru.
Анна, Спасибо. По Вашему вопросу связались с Вами в почте.
Спасибо большое!
How can I pull a image url which is includet as background-image out of my website?
Hello, Please be advised that background images are creating via CSS styles. Our smart elements meant to get data within HTML tags but can't fetch CSS styles out of code, including background styles. You can add background images to an email only manually.
Здравствуйте! Бьемся больше часа, попробовали разные способы по логике, приведенной ниже в комментариях, не получается. Помогите нам с селектором на картинку, пожалуйста. https://kidsavenue.ru/catalog/malchiki/odezhda_1/longslivy_1/36020/
Добрый день. По данной ссылке картинку можно подгрузить используя следующие селекторы\параметры: внешний #bx_117848907_36020_pict атрибут src внутренний .myImage атрибут src На скриншотах: http://prntscr.com/qscfe3 http://prntscr.com/qscfmy Важно отметить. На сайте используется относительный путь для картинки, поэтому необходимо использовать модификатор /upload/ с заменой на https://kidsavenue.ru/upload/ http://prntscr.com/qscggp
Здравствуйте, подскажите какой селектор ввести чтобы выгрузить картинку https://flytechnology.ua/dji-agras-mg-1p
Здравствуйте, для Вашего сайта Вам нужно указать селектор #content > div > div.us-product-top.d-flex > div.us-product-left > div.us-product-photo-main.mb-4 > a > img Атрибут src Пример: http://prntscr.com/qc1kyq и выбрать динамический сайт в пункте URL http://prntscr.com/qc1h4a Но так как на Вашем сайте используются изображения формата .webp http://prntscr.com/qc1i3e мы не гарантируем что будет отображаться изображения в почтовых клиентах, так как нет подержки рендеринга изображений в формате .webp. Мы рекомендуем Вам использовать на Вашем сайте форматы изображений такие как jpg, png, gif.
Добрый день, подскажите какой селектор ввести чтобы выгрузить картинку https://sayyes.com.ua/skrab-dlya-tela/10943-kofeynyy-skrab-joko-blend-cherry-200-g.html
Добрый день. По данной ссылке картинку получится подгрузить используя следующий внутренний и внешний CSS селекторы: внутренний .adapt-img атрибут src внешний head > meta:nth-child(13) атрибут content На скриншотах: http://prntscr.com/q25763 http://prntscr.com/q257im
Добрый день! столкнулся с ситуацией в смарт контенте, у меня на сайты все ссылки на картинки начинаются с папки. /upload/resize_cache/iblock/6cd/500_500_19c25237da8d22b6fe15e058ccab634fe/6cd1af7c8c4dee53d44c1849e9757467.jpg , соответственно не открывается картинка, как сделать так чтобы впереди добавилось название сайта чтобы картинка подгружался ?
В Вашем случае, картинку получится подгрузить, используя следующий CSS селектор meta[property=og:image] и атрибут content Пожалуйста, посмотрите как это выглядит на скриншоте https://prnt.sc/of4cge
Спасибо за оперативный ответ!