Navigation Structure Design for a 1C-Bitrix Website
Navigation on a Bitrix site is more than the menu a user sees. It is the directory structure inside local/ and bitrix/, the routing logic in urlrewrite.php, the breadcrumb scheme via bitrix:breadcrumb, and the info block section structure that feeds all of it. Poor navigation design leads to broken links when sections are edited, duplicate URLs, SEO-friendly URL conflicts, and menus that cannot be updated without touching code.
File Structure vs. Component-Based Navigation
Bitrix offers two approaches to URL organization:
File structure — real directories: /catalog/, /about/, /contacts/. Each section is a folder containing an index.php that calls a component. Advantage: transparent — every page is a file. Disadvantage: adding a new section requires creating a directory on the server.
SEO-friendly URLs via urlrewrite — all requests are redirected to a single PHP file that parses the URL and loads the appropriate component. This is the standard for catalogs: /catalog/smartphones/apple/iphone-15/ is not a file structure, but a rule in urlrewrite.php that routes the request to the bitrix:catalog.section or bitrix:catalog.element component.
In practice: file structure for static pages (About, Contacts, Blog), SEO-friendly URLs via urlrewrite for dynamic sections (catalog, news, filters).
The bitrix:menu Component and Menu Types
In Bitrix, menus are stored in .menu.php files within the site's directory structure. The bitrix:menu component with the ROOT_MENU_TYPE parameter reads these files and builds the navigation. Menu types:
-
top— top horizontal menu -
left— left sidebar -
footer— footer
Editing via the admin panel: Site Structure → Files. This is the file system, and menu items are stored in .menu.php as PHP arrays.
For a dynamic mega-menu based on info block sections, the standard bitrix:menu is not suitable. Use bitrix:catalog.section.list or a custom component that builds the menu from CIBlockSection::GetList().
Breadcrumbs: Structure and Common Issues
Breadcrumbs in Bitrix are built via $APPLICATION->SetPageProperty("bx_breadcrumb", ...) or automatically by the bitrix:catalog.section and bitrix:catalog.element components when SEO-friendly URLs are configured correctly. They are rendered by the bitrix:breadcrumb component.
A typical problem: if SECTION_URL is misconfigured in the component, breadcrumbs point to incorrect URLs or duplicate path segments. Verify in the browser and by auditing $APPLICATION->GetNavChain().
Info Block Navigation and Section Nesting
For a product catalog, the navigation hierarchy is determined by the info block section hierarchy. The design decision: which levels of the hierarchy are shown in navigation, and which appear only in the filter.
Example: an info block with the structure "Type → Brand → Model" (3 levels). Showing all three levels in the navigation makes the menu enormous. Showing only the first two means the third-level URLs still exist via SEO-friendly URLs, but there are no links to them in the menu. This is acceptable — users reach the model page via search or filtering, not through the menu.
Multi-Site Setup and Navigation
When running multiple language versions or regional sites within a single Bitrix core, each site has its own file structure and menu files. The bitrix:language.menu component (or a custom solution) switches language while preserving the current context (the same page in another language). Design decision: URL structure for language versions — with a language prefix (/en/, /de/) or on separate domains.
Case Study: Navigation Refactoring for a Corporate Portal
A manufacturing company with a corporate site and a B2B portal. Problem: developers edited the menu directly in .menu.php files, and editors could not add a menu item without filing a ticket. Breadcrumbs in the catalog did not appear at the third nesting level.
What was done:
- Moved the top menu to a "Navigation" info block (type
navigation): sections = first-level items, subsections = second level. The menu component reads from the info block viaCIBlockSection::GetList(). - Editors now manage the menu through the standard info block interface — without file system access.
- Breadcrumbs: fixed
SECTION_URLin the catalog component, added an event handler for the third level.
Result: editors add menu items independently, breadcrumbs work at all levels.
Scope of Work for Navigation Design
- URL structure scheme: static pages and dynamic sections
- Design of menu types and data sources
- urlrewrite rules for the catalog and content sections
- Breadcrumb scheme by page type
- Navigation for multi-site setup (if applicable)
- Documentation: site map with URL types
Timeline: 2–5 business days for a typical site, up to 2 weeks for a multilingual portal with multiple domains.







