Filling the articles section with 1C-Bitrix content

Our company is engaged in the development, support and maintenance of Bitrix and Bitrix24 solutions of any complexity. From simple one-page sites to complex online stores, CRM systems with 1C and telephony integration. The experience of developers is confirmed by certificates from the vendor.
Our competencies:
Development stages
Latest works
  • image_website-b2b-advance_0.png
    B2B ADVANCE company website development
    1175
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Website development for FIXPER company
    811
  • image_bitrix-bitrix-24-1c_development_of_an_online_appointment_booking_widget_for_a_medical_center_594_0.webp
    Development based on Bitrix, Bitrix24, 1C for the company Development of an Online Appointment Booking Widget for a Medical Center
    564
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Development based on 1C Enterprise for MIRSANBEL
    747
  • image_crm_dolbimby_434_0.webp
    Website development on CRM Bitrix24 for DOLBIMBY
    655
  • image_crm_technotorgcomplex_453_0.webp
    Development based on Bitrix24 for the company TECHNOTORGKOMPLEKS
    976

Populating an Articles Section with Content in 1C-Bitrix

An articles section differs from a blog in purpose: a blog is about relevance and traffic, articles are about expertise and conversion. Typical tasks: a product knowledge base, a technical description reference, a "Help" or "Learning" section. What matters here is not publication frequency but the depth of each piece of material and navigation across a large volume of content.

The problem that usually brings clients in: 200 articles have accumulated, but finding anything is impossible — there is no section-level search, no categorization, articles are mixed together, there are no internal links. The SEO potential of the section is unrealized; users go back to Google instead of finding answers on the site.

Articles Infoblock Architecture

A dedicated infoblock is created for the articles section. The section (b_iblock_section) structure matches the topic hierarchy — up to 3 levels of nesting. Deeper nesting is technically possible in Bitrix, but it harms navigation and SEO (long URLs, diluted page weight).

Required infoblock properties:

  • DIFFICULTY — material difficulty level (list: "Beginner", "Advanced", "Expert")
  • READING_TIME — reading time in minutes
  • LAST_UPDATED — date of the last article update (important for technical materials)
  • RELATED_LINKS — multiple property of type "String" for external sources
  • VIDEO_EMBED — video tutorial embed code

Publication date (ACTIVE_FROM) and update date (LAST_UPDATED) are separate fields. For technical articles it is important to show currency. The detail page template displays: "Last updated: January 15, 2025".

Search Within the Articles Section

The standard Bitrix search (bitrix:search.page) searches the entire site. For an articles section, search within the infoblock alone is often needed. This is handled in two ways:

Via the standard search module with a filter. Indexing the articles infoblock is configured through CSearch::Index(). Search with restriction by IBLOCK_ID parameter:

$obSearch = new CSearch();
$obSearch->Search([
    'QUERY'      => $searchQuery,
    'MODULE_ID'  => 'iblock',
    'PARAM2'     => IBLOCK_ARTICLES_ID,
]);

Via Elasticsearch / Sphinx for large sections (1,000+ articles). Standard MySQL/PostgreSQL full-text search is slow on complex queries. An external search engine is connected via a custom component; data is synchronized into it through a Bitrix agent.

Cross-References and Navigation

Navigation within an articles section is a critical element. A user arrived looking for an answer, found an article, and should be able to easily move to related topics.

Breadcrumbs — the standard bitrix:breadcrumb component, works automatically with a correct infoblock section structure.

Sidebar category menu — the bitrix:menu component with a MENU_TYPE parameter, or a custom component using CIBlockSection::GetList():

$sections = CIBlockSection::GetList(
    ['SORT' => 'ASC'],
    ['IBLOCK_ID' => IBLOCK_ARTICLES_ID, 'DEPTH_LEVEL' => 1, 'ACTIVE' => 'Y'],
    false,
    ['ID', 'NAME', 'CODE', 'SECTION_PAGE_URL']
);

"Related articles" block — matched by section or tags:

$related = CIBlockElement::GetList(
    ['RAND' => 'ASC'],
    ['IBLOCK_ID' => IBLOCK_ARTICLES_ID, 'SECTION_ID' => $arResult['IBLOCK_SECTION_ID'], '!ID' => $arResult['ID'], 'ACTIVE' => 'Y'],
    false, ['nTopCount' => 4],
    ['ID', 'NAME', 'PREVIEW_PICTURE', 'PREVIEW_TEXT', 'DETAIL_PAGE_URL']
);

Structured Data (Schema.org)

Article or HowTo markup is added for articles depending on the content type. This improves search display (rich snippets):

// in template.php of the detail page
$schema = [
    '@context'      => 'https://schema.org',
    '@type'         => 'Article',
    'headline'      => $arResult['NAME'],
    'datePublished' => $arResult['ACTIVE_FROM'],
    'dateModified'  => $arResult['PROPERTIES']['LAST_UPDATED']['VALUE'],
    'author'        => ['@type' => 'Organization', 'name' => 'Company Name'],
];
echo '<script type="application/ld+json">' . json_encode($schema, JSON_UNESCAPED_UNICODE) . '</script>';

Bulk Population and Import

A large articles section is often populated from external sources: Word documents, PDF manuals, Google Docs. Manually entering each article into the Bitrix visual editor is inefficient.

Import from Excel. The standard Bitrix tool allows importing infoblock elements from CSV. Columns: NAME, PREVIEW_TEXT, DETAIL_TEXT, SECTION_ID, properties. But HTML markup in CSV is a problem: quotes and line breaks break the format. The solution is a custom PHP script using CIBlockElement::Add().

Conversion from Word/PDF. The PHPWord library (via Composer) reads DOCX and converts it to HTML. PDF is converted via pdftohtml (a system utility) or via an external API (Adobe PDF Services). The result is cleaned with regular expressions and saved to DETAIL_TEXT.

Content versioning. For technical documentation, tracking changes is important. Bitrix has no built-in versioning for article content (only for site pages via the landing module). A custom solution: before updating an article, the previous DETAIL_TEXT is saved to a separate table b_custom_article_versions with fields ELEMENT_ID, VERSION_DATE, CONTENT, USER_ID.

Automatic Updating of Outdated Articles

Technical articles become outdated. A notification system is needed: 6–12 months after publication a content manager receives a reminder to check relevance. Implemented via a Bitrix agent (CAgent::Add()) that checks the last update date monthly and sends an email via CEvent::Send().

Timelines

Volume Work format Timeline
Up to 50 articles Manual population + basic SEO 2–3 weeks
50–200 articles + import, categorization, cross-linking 3–6 weeks
200+ articles + section search, versioning 6–12 weeks

An articles section pays off slowly but steadily: technical materials hold their positions in search for years with a correct structure and periodic updates.