200 articles accumulated, but you can't find the one you need — no full-text search, articles not categorized. Users go to Yandex without finding an answer. We solve this problem by creating a structured knowledge base on 1C-Bitrix with a configured infoblock, search, and automatic import. Our experience — 7 years of development, over 50 successful projects.
Why a standard blog isn't suitable for technical documentation?
Technical documentation is about search and depth, not chronology. A blog is about relevance and traffic; articles are about expertise and conversion. Typical tasks: product knowledge base, technical descriptions reference, "Help" or "Training" section. Here, what matters is not publication frequency, but navigation through a large volume of content. For sections with 500+ articles, a standard blog becomes ineffective.
Infoblock architecture for articles
A separate infoblock is created for the articles section. The section structure (b_iblock_section) corresponds to the topic hierarchy — up to 3 nesting levels. Deeper nesting in Bitrix is technically possible, but worsens navigation and SEO (long URL, diluted weight).
Mandatory infoblock properties:
- DIFFICULTY — material complexity level (list: "Beginner", "Advanced", "Expert")
- READING_TIME — reading time in minutes
- LAST_UPDATED — date of last article update (important for technical materials)
- RELATED_LINKS — multiple property of type "String" for external sources
- VIDEO_EMBED — video instruction embed code
Publication date (ACTIVE_FROM) and update date (LAST_UPDATED) are different fields. In the detail page template, we output: "Last updated: recently."
How to configure search only within the articles section?
Standard Bitrix search (bitrix:search.page) works across the entire site. For the articles section, we often need search only within the infoblock. This is solved in two ways.
Through the standard search module with a filter. Infoblock indexing for articles is configured via CSearch::Index(). Search limited by IBLOCK_ID parameter:
$obSearch = new CSearch(); $obSearch->Search([ 'QUERY' => $searchQuery, 'MODULE_ID' => 'iblock', 'PARAM2' => IBLOCK_ARTICLES_ID, ]); Via Elasticsearch for large sections (1000+ articles). Standard MySQL full-text search is slow for complex queries. An external search engine is connected through a custom component; data is synchronized via a Bitrix agent. For 3000 articles, the speed difference is tenfold: 4 seconds vs 0.1 seconds.
| Parameter | Standard search | Elasticsearch |
|---|---|---|
| Speed for 1000+ articles | 2–5 sec | 0.1–0.2 sec |
| Setup | Built-in module | Requires installation |
| Ranking | By date/relevance | Customizable |
Cross-linking and navigation
Navigation within the articles section is critical. The user came for an answer, found an article, and should easily navigate to related topics.
Breadcrumbs — standard bitrix:breadcrumb component, works automatically with correct infoblock section structure.
Side category menu — bitrix:menu component with 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 — by matching 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)
For articles, we attach Article or HowTo markup depending on content type. This improves search snippet display:
// in template.php of 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>'; How does content import work?
- Source preparation. We collect all files (Word, PDF, Excel) into one folder. We check the structure.
- Conversion. For DOCX we use PHPWord, for PDF — pdftohtml. We get HTML.
- Cleaning. We remove extra styles, align headings, fix encoding.
- Loading. A script goes through each file, creates an infoblock element via CIBlockElement::Add().
- Categorization. We assign sections based on file name or a separate map.
- Verification. We visually check 10% of articles. We fix errors.
The entire process takes from 2 days to 2 weeks depending on volume. In one agent run, up to 100 articles are imported.
Mass content filling and import
A large articles section is often filled from external sources: Word documents, PDF instructions, Google Docs. Manual entry of each article into Bitrix's visual editor is inefficient.
Import from Excel. Bitrix's standard tool allows importing infoblock elements from CSV. Columns: NAME, PREVIEW_TEXT, DETAIL_TEXT, SECTION_ID, properties. But HTML markup in CSV is problematic: quotes and line breaks break the format. Solution — a custom PHP script with CIBlockElement::Add().
Conversion from Word/PDF. The PHPWord library (via Composer) reads DOCX and converts to HTML. PDF is converted via pdftohtml (system utility) or via an external API (Adobe PDF Services). The result is cleaned with regular expressions and saved into DETAIL_TEXT.
Content versioning. For technical documentation, it's important to track changes. Bitrix has no built-in versioning for article content (only for site pages via the landing module). Custom solution: before updating an article, the old DETAIL_TEXT version is saved in a separate table b_custom_article_versions with fields ELEMENT_ID, VERSION_DATE, CONTENT, USER_ID. Over a year, such a system allows rolling back up to 15 edits.
Automatic update of outdated articles
Technical articles become obsolete. A notification system is needed: 6–12 months after publication, the content manager receives a reminder to check relevance. Implementation via a Bitrix agent (CAgent::Add()) that checks the last update date once a month and sends an email via CEvent::Send().
What is included in the work
When ordering the filling of an articles section, we provide:
- Designing the infoblock and properties
- Configuring search (standard or Elasticsearch)
- Importing content from external sources (Word, PDF, Excel)
- Developing templates for detail page and list
- Setting up cross-links and navigation
- Connecting structured data
- Setting up an agent for updating outdated articles
- Training content managers
We estimate the project in 1 day. Warranty on all work — 12 months. Get a consultation: write to us and we will evaluate your project.
Timelines and volumes
| Volume | Scope of work | Timeline |
|---|---|---|
| Up to 50 articles | Manual filling + basic SEO | 2–3 weeks |
| 50–200 articles | + import, categorization, cross-linking | 3–6 weeks |
| 200+ articles | + section search, versioning | 6–12 weeks |
The articles section pays off slowly but steadily: technical materials retain search positions for years with proper structure and periodic updates.
Contact us to discuss your project. Order the filling of your articles section — and your clients will find answers faster.

