כאשר לקוח פותח כרטיס מוצר דרך דף Turbo ורואה בלוק ריק במקום מחיר – זה הורג המרות
לפי הנתונים שלנו, עד 40% מהמשתמשים עוזבים את הדף אם הם לא רואים את המחיר. בפרויקטים עם קטלוגים של 10,000+ פריטים, נתקלנו במצב הזה פעמים רבות. הסיבה כמעט תמיד זהה: עדכון ה-RSS נוצר ללא התחשבות בדרישות סימון ה-Turbo של Yandex. בואו נפרק כיצד להגדיר פלט נכון של דפי Turbo עבור קטלוג מוצרים ב-Bitrix.
בעיות שאנחנו פותרים
תמונות לא מוצגות: Yandex דורש כתובות URL מוחלטות (עם https://) בתוך <img src>. אם תמונת בלוק המידע נשמרת עם נתיב יחסי, לדף ה-Turbo לא תהיה תמונה. בפרויקט אחד, זה הפחית את שיעור הקליקים ב-30%.
אין כפתור קנייה: לכפתור, אתה צריך <a data-block="button" href="...">. בלעדיו, המוצר הופך ללא אינטראקטיבי.
שגיאות ניתוח: בעיות נפוצות כוללות קינון HTML שגוי בתוך CDATA או היעדר תכונות data-block חובה. Yandex מציג את הדף ללא עיצוב או מסרב לאינדוקס אותו.
למה Yandex מסרב לאינדוקס RSS
הסיבה העיקרית היא אי-עמידה בפורמט. Yandex דורש RSS 2.0 עם תוסף turbo:. כפי שנאמר בתיעוד הרשמי של Yandex.Webmaster, קבוצת השדות המינימלית לכרטיס מוצר:
<item turbo="true"> <link>https://example.com/catalog/product/</link> <turbo:content><![CDATA[ <header> <h1>Название товара</h1> <menu> <item url="/catalog/">Каталог</item> <item url="/catalog/section/">Раздел</item> </menu> </header> <figure> <img src="https://example.com/upload/iblock/xxx/photo.jpg" alt="Турбо-страница товара"> </figure> <p>Описание товара</p> <div data-block="price"> <span data-value="price">5990</span> <span data-value="currency">RUB</span> <a data-block="button" href="/cart/?add=ID">Купить</a> </div> ]]></turbo:content> </item> בלוק turbo: הוא חובה – זה הניווט של דף ה-Turbo. ה-<item turbo="true"> <link>https://example.com/catalog/product/</link> <turbo:content><![CDATA[ <header> <h1>Название товара</h1> <menu> <item url="/catalog/">Каталог</item> <item url="/catalog/section/">Раздел</item> </menu> </header> <figure> <img src="https://example.com/upload/iblock/xxx/photo.jpg" alt="Турбо-страница товара"> </figure> <p>Описание товара</p> <div data-block="price"> <span data-value="price">5990</span> <span data-value="currency">RUB</span> <a data-block="button" href="/cart/?add=ID">Купить</a> </div> ]]></turbo:content> </item> עם תמונה נשכח לעתים קרובות, ו-Yandex לא מציג את התמונה. המהנדסים שלנו בודקים כל תג דרך המאמת של Yandex לפני ההשקה.
איך אנחנו מגדירים יצירת RSS
אנחנו יוצרים סקריפט PHP ייעודי (לדוגמה, <menu>) שבוחר פריטי קטלוג מסחר פעילים ויוצר עדכון XML. קוד המקור משתמש ברכיבי Bitrix עם <figure> ו-/turbo-feed.xml. עבור קטלוג של 200 פריטים, ללא מטמון, כל בקשה יוצרת 200 שאילתות SQL; עם מטמון של שעה, נדרשת רק שאילתה אחת.
// /turbo-feed.xml define('NO_KEEP_STATISTIC', true); define('NOT_CHECK_PERMISSIONS', false); header('Content-Type: application/rss+xml; charset=utf-8'); $res = \CIBlockElement::GetList( ['TIMESTAMP_X' => 'DESC'], ['IBLOCK_ID' => CATALOG_IBLOCK_ID, 'ACTIVE' => 'Y'], false, ['nTopCount' => 200], ['ID', 'NAME', 'DETAIL_PAGE_URL', 'DETAIL_TEXT', 'DETAIL_PICTURE', 'PREVIEW_TEXT', 'TIMESTAMP_X', 'IBLOCK_SECTION_ID'] ); echo '<?xml version="1.0" encoding="utf-8"?>'; echo '<rss xmlns:yandex="http://news.yandex.ru" xmlns:turbo="http://turbo.yandex.ru" version="2.0">'; echo '<channel>'; echo '<title>Каталог товаров</title>'; echo '<link>' . SITE_SERVER_NAME . '</link>'; while ($el = $res->GetNextElement()) { $fields = $el->GetFields(); $price = \CCatalogProduct::GetOptimalPrice($fields['ID']); $imgSrc = ''; if ($fields['DETAIL_PICTURE']) { $img = \CFile::GetFileArray($fields['DETAIL_PICTURE']); $imgSrc = 'https://' . SITE_SERVER_NAME . $img['SRC']; } // ... формирование item } תמונות: כתובות URL מוחלטות חובה
Yandex לא מקבל נתיבים יחסיים. פונקציית עזר:
function absoluteImageUrl(string $src): string { if (strpos($src, 'http') === 0) return $src; return 'https://' . SITE_SERVER_NAME . $src; } החל אותה על כל CIBlockElement::GetList(), CCatalogProduct::GetOptimalPrice(), ותמונות מתיאור מפורט.
איך להאיץ עדכוני דפי Turbo
השתמש במטמון RSS מתויג. ללא מטמון, כל בקשה מייצרת מחדש את העדכון, מה שגורם ל-200 שאילתות SQL עבור 200 פריטים. מטמון של שעה מפחית את העומס פי 3600. יישם סוכן לניקוי המטמון בעדכון מוצר דרך אירועי // /turbo-feed.xml define('NO_KEEP_STATISTIC', true); define('NOT_CHECK_PERMISSIONS', false); header('Content-Type: application/rss+xml; charset=utf-8'); $res = \CIBlockElement::GetList( ['TIMESTAMP_X' => 'DESC'], ['IBLOCK_ID' => CATALOG_IBLOCK_ID, 'ACTIVE' => 'Y'], false, ['nTopCount' => 200], ['ID', 'NAME', 'DETAIL_PAGE_URL', 'DETAIL_TEXT', 'DETAIL_PICTURE', 'PREVIEW_TEXT', 'TIMESTAMP_X', 'IBLOCK_SECTION_ID'] ); echo '<?xml version="1.0" encoding="utf-8"?>'; echo '<rss xmlns:yandex="http://news.yandex.ru" xmlns:turbo="http://turbo.yandex.ru" version="2.0">'; echo '<channel>'; echo '<title>Каталог товаров</title>'; echo '<link>' . SITE_SERVER_NAME . '</link>'; while ($el = $res->GetNextElement()) { $fields = $el->GetFields(); $price = \CCatalogProduct::GetOptimalPrice($fields['ID']); $imgSrc = ''; if ($fields['DETAIL_PICTURE']) { $img = \CFile::GetFileArray($fields['DETAIL_PICTURE']); $imgSrc = 'https://' . SITE_SERVER_NAME . $img['SRC']; } // ... формирование item } . הפרויקטים שלנו מראים שגישה זו משתלמת בקטלוגים מ-500 פריטים.
$cache = \Bitrix\Main\Data\Cache::createInstance(); if ($cache->startDataCache(3600, 'turbo_feed', '/turbo')) { // генерация RSS $xmlContent = generateFeed(); $cache->endDataCache(['xml' => $xmlContent]); } else { $xmlContent = $cache->getVars()['xml']; } echo $xmlContent; מידע נוסף על יצירת פריטים
עבור כל מוצר, נוצר בלוק פריט עם אלמנטים חובה. חשוב להגדיר מטבע וסוג מחיר נכון. אנו משתמשים ב-`CCatalogProduct::GetOptimalPrice` למחיר עדכני עם הנחות. אם לא מוגדר סוג מחיר, מחיר הבסיס נלקח כברירת מחדל.השוואה: דפי Turbo מול גרסה ניידת רגילה
| פרמטר | דף Turbo | גרסה ניידת רגילה |
|---|---|---|
| מהירות טעינה | < 1 שנייה | 2-5 שניות |
| עומס שרת | מינימלי (מטמון + שרתי Yandex) | בינוני (תלוי באחסון) |
| סימון | קבוצת תגים מוגבלת | HTML+CSS מלא |
| אינדוקס | תוצאות חיפוש נפרדות של Yandex | חיפוש סטנדרטי |
| קלות יישום | RSS + Webmaster | תבנית רספונסיבית |
דפי Turbo מהירים פי 2–5 ומשיגים עד פי 3 יותר המרות מאשר דפים ניידים רגילים. עבור חנות מסחר אלקטרוני עם תנועה ניידת כבדה, זה חובה.
שגיאות נפוצות ופתרונות
| שגיאה | סיבה | פתרון |
|---|---|---|
| אין תמונה | כתובת URL יחסית ב-function absoluteImageUrl(string $src): string { if (strpos($src, 'http') === 0) return $src; return 'https://' . SITE_SERVER_NAME . $src; } |
המר למוחלט עם פונקציית עזר |
| אין כפתור קנייה | חסר DETAIL_PICTURE |
הוסף אלמנט עם תכונה |
| שגיאת אימות | קינון CDATA שגוי | בדוק דרך תיעוד Yandex.Turbo |
תהליך ואחריות
התהליך שלנו כולל: ביקורת קטלוג Turbo – בדיקת מבנה בלוק מידע, סוגי מחירים, תמונות, תכונות alt; עיצוב מחולל RSS – בחירת שדות, פורמט, מטמון; פיתוח – כתיבת רכיב, טיפול בתמונות, מחירים, כפתורים; בדיקות – אימות דרך Yandex.Webmaster, בדיקת כל סוגי המוצרים; השקה וניטור – הוספת RSS, סקירת אנליטיקת דפי Turbo ב-Webmaster. אנחנו מפתחים על Bitrix מעל 7 שנים, ביצענו 50+ פרויקטים עם דפי Turbo. אנו מבטיחים פעולה תקינה של עדכון RSS ומעבר אימות Yandex במהלך תקופת האחריות. ההתקנה משתלמת דרך הפחתת עומס שרת ועלייה של 10-15% בהמרות. התקנה בסיסית מתחילה ב-$350 ואורכת 2 עד 5 ימים. אם נדרשות שינויים בבלוק מידע או אינטגרציה עם 1C, הזמן גדל. הזמינו התקנת דפי Turbo וקבלו עדכון RSS מוכן תוך יומיים. צרו קשר להערכת פרויקט.







