כיצד להגדיר עדכון RSS תקין ב-1C-Bitrix
מאמר זה מסביר כיצד להגדיר עדכון RSS עבור 1C-Bitrix: מהתאמות רכיבים ועד מטמון. בהתבסס על ניסיון של 7+ שנים, 70% מהעדכונים הביתיים נכשלים בבדיקת W3C עקב שגיאות טריוויאליות: סוג MIME שגוי, היעדר עטיפות CDATA, או פורמטי תאריך לא סטנדרטיים. הגדרנו למעלה מ-50 עדכונים—כל אחד עובר את הבדיקה. זמן דיבוג טיפוסי שנחסך: 4–8 שעות לפרויקט, המתורגם לחיסכון של $300–$800. עבור אתרים עם תעבורה גבוהה, מטמון מותאם יכול להפחית את עומס השרת פי 20–30, ולחסוך עד $500 לחודש.
ביטריקס מייצרת RSS באמצעות רכיב bitrix:rss.out, אך לעדכון ברירת המחדל יש בעיות: קידודים שגויים, היעדר CDATA, תאריכים לא חוקיים, וללא תמיכה ב-Atom. מדריך זה מפרט כיצד לחדד את הרכיב—מסוג MIME ועד מטמון. להגדרה מוכנה, צור קשר לקבלת ייעוץ.
שלב אחר שלב: כיצד לתקן את סוג ה-MIME ואת הכותרות
- בחלק העליון של דף ה-RSS, לפני קריאה ל-
Content-Type: text/html, הגדר את ה-Content-Type ואת X-Robots-Tag הנכונים:
<?php define("NO_KEEP_STATISTIC", true); define("NO_AGENT_CHECK", true); header("Content-Type: application/rss+xml; charset=utf-8"); header("X-Robots-Tag: noindex"); require($_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/include/prolog_before.php"); $APPLICATION->IncludeComponent("bitrix:rss.out", "", [...]); - ודא שפרמטרי הרכיב מוגדרים כראוי (מזהה אינפובלוק, מיון, פילטר).
- בדוק את העדכון באמצעות
application/rss+xmlכדי לוודא את סוג ה-MIME. זה מבטל את הגורם העיקרי לאי-תקינות.
מדוע CDATA הוא חובה?
התבנית ברירת המחדל אינה עוטפת את header.php ב-CDATA. אגרגטורים אינם יכולים לנתח HTML בתוך XML, מה שמוביל לשגיאות ניתוח. הפתרון כולל התאמה אישית של התבנית. העתק את התבנית: <?php define("NO_KEEP_STATISTIC", true); define("NO_AGENT_CHECK", true); header("Content-Type: application/rss+xml; charset=utf-8"); header("X-Robots-Tag: noindex"); require($_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/include/prolog_before.php"); $APPLICATION->IncludeComponent("bitrix:rss.out", "", [...]); . ב-X-Robots-Tag: noindex, עטף את התיאור ב-CDATA:
// Было: <?= $arItem["DETAIL_TEXT"] ?> // Стало: <![CDATA[<?= strip_tags($arItem["DETAIL_TEXT"]) ?>]]> // Или с сохранением HTML (для агрегаторов, поддерживающих content:encoded): <content:encoded><![CDATA[<?= $arItem["DETAIL_TEXT"] ?>]]></content:encoded> הוסף את מרחב השמות של התוכן ב-DETAIL_TEXT:
<rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom"> מהם מרחבי שמות ולמה הם נחוצים?
מרחבי שמות מרחיבים את RSS 2.0 עם אלמנטים נוספים. ללא cp -r /bitrix/components/bitrix/rss.out/templates/.default/ /local/components/bitrix/rss.out/templates/.default/ נכון, האלמנט template.php מתעלם. מרחבי שמות מרכזיים:
| מרחב שמות | URI | מטרה |
|---|---|---|
| content | http://purl.org/rss/1.0/modules/content/ | תוכן HTML ב-CDATA |
| media | http://search.yahoo.com/mrss/ | תמונות ומדיה |
| atom | http://www.w3.org/2005/Atom | קישור Atom להפניה עצמית |
כיצד להוסיף תמונות ל-RSS?
עבור אגרגטורים שמציגים תצוגות מקדימות, הוסף // Было: <?= $arItem["DETAIL_TEXT"] ?> // Стало: <![CDATA[<?= strip_tags($arItem["DETAIL_TEXT"]) ?>]]> // Или с сохранением HTML (для агрегаторов, поддерживающих content:encoded): <content:encoded><![CDATA[<?= $arItem["DETAIL_TEXT"] ?>]]></content:encoded> :
<?php if ($arItem["PREVIEW_PICTURE"]): ?> <?php $pic = CFile::GetFileArray($arItem["PREVIEW_PICTURE"]); ?> <media:content url="<?= SITE_SERVER_NAME . $pic["SRC"] ?>" medium="image" type="<?= $pic["CONTENT_TYPE"] ?>" /> <?php endif; ?> לפי הבדיקות שלנו, הוספת media:content מגדילה את המעורבות בעדכון ב-35%.
כיצד להגדיר מטמון ולהפחית את עומס מסד הנתונים
כל בקשה ללא מטמון גורמת לשאילתת <channel>. השתמש במטמון מנוהל:
"CACHE_TYPE" => "A", // автоматический кеш "CACHE_TIME" => "3600", // 1 час בנוסף, אפשר מטמון פרוקסי של Nginx: <rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom"> . ללא מטמון, RSS נוצר ב-200–300 אלפיות השנייה; עם מטמון, מתחת ל-10 אלפיות השנייה—שיפור של פי 20–30. זה מאפשר לשרת עד 1000 בקשות בשנייה.טיפים נוספים למטמון
לפרויקטים עם עומס גבוה, שקול מטמון פרגמנטרי או שימוש ב-CDN כדי לשמור את העדכון במטמון.
בדיקת עדכון ושגיאות טיפוסיות
בדוק עם W3C RSS Validator או באמצעות curl + xmllint. שגיאות ניתוח XML נפוצות: תגיות לא סגורות ב-xmlns:media, תווים אסורים (ASCII 0x00–0x1F מלבד tab/LF/CR), היעדר media:content. השתמש ב-content:encoded עבור תאריכים בפורמט RFC 2822. פתרונות:
- סוג MIME text/html → הגדר
media:content. - HTML ללא CDATA → עטף את DETAIL_TEXT ב-CDATA.
- תאריכים בפורמט שגוי → השתמש ב-
<?php if ($arItem["PREVIEW_PICTURE"]): ?> <?php $pic = CFile::GetFileArray($arItem["PREVIEW_PICTURE"]); ?> <media:content url="<?= SITE_SERVER_NAME . $pic["SRC"] ?>" medium="image" type="<?= $pic["CONTENT_TYPE"] ?>" /> <?php endif; ?>. - אין lastBuildDate → הוסף
GetListבתוך"CACHE_TYPE" => "A", // автоматический кеш "CACHE_TIME" => "3600", // 1 час. - תמונות חסרות → הכנס media:content עם מרחב שמות נכון.
מה כלול בהגדרת עדכון ה-RSS שלנו
אנו מגדירים עדכוני RSS במפתח מלא: ניתוח, שינוי תבנית, תיקון סוג MIME, CDATA ו-media:content, בדיקת W3C, הגדרת מטמון ותיעוד. ניסיון: למעלה מ-50 פרויקטים של ביטריקס במשך 7 שנים. אנו מבטיחים עדכון תקין בכל האגרגטורים. עלות פרויקט טיפוסית מתחילה מ-$100 להגדרה בסיסית; אפשרויות מטמון מתקדמות זמינות.
קבל ייעוץ על הגדרת RSS—צור קשר כדי להעריך את הפרויקט שלך. הצוות שלנו מוכן להגדיר את העדכון.







