Developing a Corporate Business Card Website on 1C-Bitrix
A business card website on Bitrix is not "something done quickly with a website builder." Companies choose Bitrix for a business card site for specific reasons: they already have a licence (using Bitrix24), they need CRM integration, they plan to grow into an online store, or they require a reliable CMS with support from a Russian vendor. Technically such a project is not complex, but typical mistakes include choosing the wrong licence, a suboptimal information block structure, and ignoring performance at modest traffic levels.
Choosing the Licence and Edition
For a corporate business card site without an online store, the "Start" or "Standard" edition is sufficient. "Small Business" and "Business" are needed if you plan a catalogue with orders. For a business card site with contact forms, news, and service pages — "Standard" covers all needs.
The "Start" licence (~4,900 ₽/year) is limited to one site and does not support a composite site (multisite) or a web cluster. For a single corporate site, this is sufficient.
Information Block Structure
A typical set of information blocks for a corporate site:
| Info block | Symbolic code | Purpose |
|---|---|---|
| News | news |
Company news feed |
| Services | services |
Service pages |
| Portfolio | portfolio |
Cases, projects |
| Team | team |
Staff cards |
| Reviews | reviews |
Client testimonials |
| Vacancies | vacancies |
Open positions |
| Partners | partners |
Logos and links |
All info blocks are created within a single type — for example CORPORATE. The type is set when creating the info block in the IBLOCK_TYPE_ID field.
An important decision — SEO properties. Activate SEO properties (meta title, meta description, canonical) for each info block at section and element level. Otherwise this will need to be added later.
Component Template
To display info block elements we use the bitrix:news.list and bitrix:news.detail components. The template is overridden in /local/templates/TEMPLATE_NAME/components/bitrix/news.list/services/.
Template structure in template.php:
<?php
/** @var array $arResult */
/** @var array $arParams */
if (!defined('B_PROLOG_INCLUDED') || B_PROLOG_INCLUDED !== true) die();
?>
<div class="services-grid">
<?php foreach ($arResult['ITEMS'] as $item): ?>
<div class="service-card">
<?php if ($item['PREVIEW_PICTURE']): ?>
<img src="<?= $item['PREVIEW_PICTURE']['SRC'] ?>"
alt="<?= htmlspecialchars($item['NAME']) ?>">
<?php endif; ?>
<h3><?= htmlspecialchars($item['NAME']) ?></h3>
<div class="service-preview">
<?= $item['PREVIEW_TEXT'] ?>
</div>
<a href="<?= $item['DETAIL_PAGE_URL'] ?>" class="btn">Learn more</a>
</div>
<?php endforeach; ?>
</div>
Contact Forms
The standard Bitrix form (bitrix:main.feedback) is outdated and limited. We recommend two approaches:
1. Form via web forms (the form module):
Created in the admin area: Services → Forms. Fields, submission results, and email templates are configured flexibly. Rendered by the bitrix:form.result.new component.
2. Custom AJAX form. A more modern option — an HTML form, JS validation, submitted via AJAX to a Bitrix controller:
// /local/ajax/contact_form.php
require_once $_SERVER['DOCUMENT_ROOT'] . '/bitrix/modules/main/include/prolog_before.php';
if ($_SERVER['REQUEST_METHOD'] !== 'POST' || !check_bitrix_sessid()) {
http_response_code(403);
echo json_encode(['error' => 'Forbidden']);
exit;
}
$name = htmlspecialchars(trim($_POST['name'] ?? ''));
$phone = htmlspecialchars(trim($_POST['phone'] ?? ''));
$email = htmlspecialchars(trim($_POST['email'] ?? ''));
if (empty($name) || empty($phone)) {
echo json_encode(['error' => 'Please fill in the required fields']);
exit;
}
// Create a lead in Bitrix24 (if integrated)
if (\Bitrix\Main\Loader::includeModule('crm')) {
$lead = new \CCrmLead(false);
$lead->Add([
'TITLE' => 'Website enquiry from ' . $name,
'NAME' => $name,
'PHONE' => [['VALUE' => $phone, 'VALUE_TYPE' => 'WORK']],
'EMAIL' => [['VALUE' => $email, 'VALUE_TYPE' => 'WORK']],
'SOURCE_ID' => 'WEB',
]);
}
// Send email
$event = new \Bitrix\Main\Mail\Event([
'EVENT_NAME' => 'CONTACT_FORM_SUBMIT',
'LID' => SITE_ID,
'C_FIELDS' => ['NAME' => $name, 'PHONE' => $phone, 'EMAIL' => $email],
]);
$event->send();
echo json_encode(['success' => true]);
Multilingualism
If the site is needed in multiple languages — a composite site (multisite) is configured at the "Standard"+ licence level. Each language is a separate site in Bitrix (SITE_ID), but on the same domain with language folders (/en/, /de/).
Page translations — via language properties of the info block (the iblock module supports multilingual values through the tables b_iblock_element_prop_s{N} for strings and b_iblock_element_prop_m{N} for multiple values).
SEO: Automatic Meta Tag Generation
For info blocks — meta tag templates in the info block's SEO settings:
-
titleof the detail view page:{=ThisElement.NAME} — Company Ltd -
description:{=ThisElement.PREVIEW_TEXT}(truncated to 160 characters via a filter in the component) -
canonical: automatically via\Bitrix\Main\Page\Asset
Performance
For a business card site with modest traffic (up to 1,000 visitors per day), the following is sufficient:
- Enable Managed Cache in component settings.
- Bitrix file-based cache (default) or Redis.
- HTML cache for pages without personalisation — via the
bitrix:main.includecomponent with cache typeA.
// Enable HTML cache for the home page
$APPLICATION->IncludeComponent('bitrix:main.include', '.default', [
'AREA_FILE_SHOW' => 'sect',
'PATH' => '/index.php',
'EDIT_TEMPLATE' => 'index',
'CACHE_TYPE' => 'A',
'CACHE_TIME' => 3600, // 1 hour
]);
Project File Structure
/local/
├── templates/
│ └── corporate_v1/ # Main template
│ ├── header.php
│ ├── footer.php
│ ├── styles/
│ ├── components/ # Component template overrides
│ └── images/
├── components/
│ └── local/ # Custom components (if needed)
└── php_interface/
├── init.php
└── user_lang/
Development Timelines
| Option | Composition | Duration |
|---|---|---|
| Basic (ready-made design) | Layout + info blocks + forms | 5–8 days |
| Design + development | UX/UI + layout + info blocks + CRM | 15–25 days |
| Multilingual site | + Multisite, translations, hreflang | +5–8 days |







