МСню Π½Π° сайтС β€” это ΠΊΠ°ΠΊ вывСска для ΠΌΠ°Π³Π°Π·ΠΈΠ½Π°: Ссли ΠΎΠ½ΠΎ нСпонятноС ΠΈΠ»ΠΈ Π½Π΅ΡƒΠ΄ΠΎΠ±Π½ΠΎΠ΅, посСтитСли просто ΡƒΠΉΠ΄ΡƒΡ‚ ΠΊ ΠΊΠΎΠ½ΠΊΡƒΡ€Π΅Π½Ρ‚Π°ΠΌ. Π’ 1Π‘-Битрикс ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ структуру Π½Π°Π²ΠΈΠ³Π°Ρ†ΠΈΠΈ ΠΌΠΎΠΆΠ½ΠΎ дСсятком способов, Π½ΠΎ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ администраторов ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΠ²Π°ΡŽΡ‚ΡΡ Π±Π°Π·ΠΎΠ²Ρ‹ΠΌΠΈ настройками Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π°. ΠœΠ΅ΠΆΠ΄Ρƒ Ρ‚Π΅ΠΌ, Π΄Π°ΠΆΠ΅ стандартныС инструмСнты систСмы ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΌΠ½ΠΎΠ³ΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²Ρ‹Π΅ мСню с динамичСскими ссылками, ΠΈΠΊΠΎΠ½ΠΊΠ°ΠΌΠΈ ΠΈ Π²Ρ‹ΠΏΠ°Π΄Π°ΡŽΡ‰ΠΈΠΌΠΈ Π±Π»ΠΎΠΊΠ°ΠΌΠΈ β€” Π±Π΅Π· Π΅Π΄ΠΈΠ½ΠΎΠΉ строки ΠΊΠΎΠ΄Π°.

Π­Ρ‚Π° ΡΡ‚Π°Ρ‚ΡŒΡ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒΡΡ, ΠΊΠ°ΠΊ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ мСню Π² 1Π‘-Битрикс Π½Π° любом ΡƒΡ€ΠΎΠ²Π½Π΅ слоТности: ΠΎΡ‚ простого пСрСтаскивания ΠΏΡƒΠ½ΠΊΡ‚ΠΎΠ² Π² Π°Π΄ΠΌΠΈΠ½ΠΊΠ΅ Π΄ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠΉ Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ Π½Π°Π²ΠΈΠ³Π°Ρ†ΠΈΠΈ Ρ‡Π΅Ρ€Π΅Π· API. ΠœΡ‹ рассмотрим всС Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ с ΡƒΡ‡Π΅Ρ‚ΠΎΠΌ послСдних ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΉ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ (Π²ΠΊΠ»ΡŽΡ‡Π°Ρ измСнСния Π² интСрфСйсС управлСния послС Ρ€Π΅Π»ΠΈΠ·Π° Битрикс24.Site). ОсобоС Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΡƒΠ΄Π΅Π»ΠΈΠΌ Ρ‚ΠΈΠΏΠΈΡ‡Π½Ρ‹ΠΌ ошибкам, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π»ΠΎΠΌΠ°ΡŽΡ‚ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ мСню Π½Π° ΠΌΠΎΠ±ΠΈΠ»ΡŒΠ½Ρ‹Ρ… устройствах, ΠΈ способам ΠΈΡ… исправлСния.

1. Π‘Π°Π·ΠΎΠ²ΠΎΠ΅ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ мСню Ρ‡Π΅Ρ€Π΅Π· Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€

НачнСм с самого простого β€” встроСнного инструмСнта МСню Π² административной ΠΏΠ°Π½Π΅Π»ΠΈ. Π­Ρ‚ΠΎΡ‚ способ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ для 90% Π·Π°Π΄Π°Ρ‡: добавлСния/удалСния ΠΏΡƒΠ½ΠΊΡ‚ΠΎΠ², измСнСния порядка, рСдактирования ссылок ΠΈ Π½Π°Π·Π²Π°Π½ΠΈΠΉ. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€:

  1. ΠŸΠ΅Ρ€Π΅ΠΉΠ΄ΠΈΡ‚Π΅ Π² ΠšΠΎΠ½Ρ‚Π΅Π½Ρ‚ β†’ Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° сайта β†’ МСню (ΠΈΠ»ΠΈ ΠšΠΎΠ½Ρ‚Π΅Π½Ρ‚ β†’ МСню Π² Π½ΠΎΠ²Ρ‹Ρ… вСрсиях).
  2. Π’Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ Ρ‚ΠΈΠΏ мСню (ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π’Π΅Ρ€Ρ…Π½Π΅Π΅ мСню ΠΈΠ»ΠΈ Π›Π΅Π²ΠΎΠ΅ мСню).
  3. НаТмитС Π˜Π·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ рядом с Π½ΡƒΠΆΠ½Ρ‹ΠΌ мСню.

Π’ ΠΎΡ‚ΠΊΡ€Ρ‹Π²ΡˆΠ΅ΠΌΡΡ интСрфСйсС Π²Ρ‹ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅ Π΄Ρ€Π΅Π²ΠΎΠ²ΠΈΠ΄Π½ΡƒΡŽ структуру ΠΏΡƒΠ½ΠΊΡ‚ΠΎΠ². Π—Π΄Π΅ΡΡŒ ΠΌΠΎΠΆΠ½ΠΎ:

  • πŸ“ ΠŸΠ΅Ρ€Π΅Ρ‚Π°ΡΠΊΠΈΠ²Π°Ρ‚ΡŒ ΠΏΡƒΠ½ΠΊΡ‚Ρ‹ ΠΌΡ‹ΡˆΡŒΡŽ для измСнСния порядка (Π²ΠΊΠ»ΡŽΡ‡Π°Ρ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ ΡƒΡ€ΠΎΠ²Π½ΠΈ).
  • βž• Π”ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ Π½ΠΎΠ²Ρ‹Π΅ элСмСнты ΠΊΠ½ΠΎΠΏΠΊΠΎΠΉ Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΏΡƒΠ½ΠΊΡ‚.
  • ✏️ Π Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½Π°Π·Π²Π°Π½ΠΈΠ΅, ссылку ΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΡƒΠ½ΠΊΡ‚Π° (Π½Π°Π²Π΅Π΄ΠΈΡ‚Π΅ Π½Π° строку ΠΈ Π½Π°ΠΆΠΌΠΈΡ‚Π΅ Π½Π° ΠΈΠΊΠΎΠ½ΠΊΡƒ ΠΊΠ°Ρ€Π°Π½Π΄Π°ΡˆΠ°).
  • πŸ—‘οΈ Π£Π΄Π°Π»ΡΡ‚ΡŒ Π½Π΅Π½ΡƒΠΆΠ½Ρ‹Π΅ элСмСнты (крСстик справа).

Π’Π°ΠΆΠ½Ρ‹ΠΉ нюанс: Ссли Π²Ρ‹ измСняСтС систСмноС мСню (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, top ΠΈΠ»ΠΈ left), ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² шаблонС ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ, измСнСния примСнятся сразу Π½Π° всСх страницах. Для тСстирования Π»ΡƒΡ‡ΡˆΠ΅ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ копию мСню Ρ‡Π΅Ρ€Π΅Π· ΠΊΠ½ΠΎΠΏΠΊΡƒ Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ мСню ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с Π½Π΅ΠΉ.

πŸ’‘

Если ΠΏΡƒΠ½ΠΊΡ‚ мСню Π½Π΅ сохраняСтся ΠΈΠ»ΠΈ исчСзаСт послС обновлСния страницы, ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ ΠΏΡ€Π°Π²Π° доступа ΠΊ Ρ€Π°Π·Π΄Π΅Π»Ρƒ ΠšΠΎΠ½Ρ‚Π΅Π½Ρ‚ β†’ МСню Π² настройках Ρ€ΠΎΠ»Π΅ΠΉ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ (Настройки β†’ ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ β†’ Π“Ρ€ΡƒΠΏΠΏΡ‹ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ).

2. ДинамичСскиС мСню: привязка ΠΊ Ρ€Π°Π·Π΄Π΅Π»Π°ΠΌ ΠΈ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°ΠΌ

Π‘Ρ‚Π°Ρ‚ΠΈΡ‡Π½Ρ‹Π΅ мСню ΡƒΠ΄ΠΎΠ±Π½Ρ‹ для Π½Π΅Π±ΠΎΠ»ΡŒΡˆΠΈΡ… сайтов, Π½ΠΎ Ссли Ρƒ вас сотни Ρ€Π°Π·Π΄Π΅Π»ΠΎΠ² ΠΈΠ»ΠΈ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ², Π»ΡƒΡ‡ΡˆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΄ΠΈΠ½Π°ΠΌΠΈΡ‡Π΅ΡΠΊΡƒΡŽ Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΡŽ. Π’ 1Π‘-Битрикс это рСализуСтся Ρ‡Π΅Ρ€Π΅Π· привязку ΠΏΡƒΠ½ΠΊΡ‚ΠΎΠ² мСню ΠΊ:

  • πŸ“‚ Π Π°Π·Π΄Π΅Π»Π°ΠΌ ΠΈΠ½Ρ„ΠΎΠ±Π»ΠΎΠΊΠΎΠ² (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, автоматичСски ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΡŒ всС ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π°).
  • πŸ” Π€ΠΈΠ»ΡŒΡ‚Ρ€Π°ΠΌ (ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ ΠΏΡƒΠ½ΠΊΡ‚Ρ‹ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… Π³Ρ€ΡƒΠΏΠΏ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ).
  • πŸ“Š Π£ΠΌΠ½Ρ‹ΠΌ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°ΠΌ (для ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚-ΠΌΠ°Π³Π°Π·ΠΈΠ½ΠΎΠ² β€” мСню с популярными Π±Ρ€Π΅Π½Π΄Π°ΠΌΠΈ ΠΈΠ»ΠΈ Ρ†Π΅Π½Π°ΠΌΠΈ).

Π§Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ динамичСский ΠΏΡƒΠ½ΠΊΡ‚:

  1. Π’ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π΅ мСню Π½Π°ΠΆΠΌΠΈΡ‚Π΅ Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΏΡƒΠ½ΠΊΡ‚.
  2. Π’ ΠΏΠΎΠ»Π΅ Бсылка Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ Ρ‚ΠΈΠΏ Π Π°Π·Π΄Π΅Π» ΠΈΠ½Ρ„ΠΎΠ±Π»ΠΎΠΊΠ° ΠΈΠ»ΠΈ Π€ΠΈΠ»ΡŒΡ‚Ρ€.
  3. Π£ΠΊΠ°ΠΆΠΈΡ‚Π΅ ID ΠΈΠ½Ρ„ΠΎΠ±Π»ΠΎΠΊΠ° ΠΈΠ»ΠΈ настройтС условия Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΠΈ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ACTIVE=Y для Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹Ρ… элСмСнтов).
  4. Π’ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅ ΠΎΠΏΡ†ΠΈΡŽ ДинамичСский β€” это ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ мСню ΠΎΠ±Π½ΠΎΠ²Π»ΡΡ‚ΡŒΡΡ автоматичСски ΠΏΡ€ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠΈ Π½ΠΎΠ²Ρ‹Ρ… Ρ€Π°Π·Π΄Π΅Π»ΠΎΠ².

Для ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚-ΠΌΠ°Π³Π°Π·ΠΈΠ½ΠΎΠ² особСнно ΠΏΠΎΠ»Π΅Π·Π½Π° привязка ΠΊ Ρ‚ΠΎΡ€Π³ΠΎΠ²Ρ‹ΠΌ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π°ΠΌ. НапримСр, ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ мСню, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚Π΅ ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ, Π³Π΄Π΅ Π΅ΡΡ‚ΡŒ Ρ‚ΠΎΠ²Π°Ρ€Ρ‹ Π² Π½Π°Π»ΠΈΡ‡ΠΈΠΈ. Для этого Π² настройках ΠΏΡƒΠ½ΠΊΡ‚Π° ΡƒΠΊΠ°ΠΆΠΈΡ‚Π΅:

CATALOG_AVAILABLE=Y&SECTION_GLOBAL_ACTIVE=Y
πŸ“Š Какой Ρ‚ΠΈΠΏ мСню Π²Ρ‹ Ρ‡Π°Ρ‰Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ Π½Π° своих ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°Ρ…?
Π‘Ρ‚Π°Ρ‚ΠΈΡ‡Π½ΠΎΠ΅ (Ρ€ΡƒΡ‡Π½ΠΎΠ΅ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅)
ДинамичСскоС (привязка ΠΊ Ρ€Π°Π·Π΄Π΅Π»Π°ΠΌ)
Π“ΠΈΠ±Ρ€ΠΈΠ΄Π½ΠΎΠ΅ (комбинация ΠΎΠ±ΠΎΠΈΡ…)
НС знаю, Ρ‡Ρ‚ΠΎ это

3. ΠšΠ°ΡΡ‚ΠΎΠΌΠΈΠ·Π°Ρ†ΠΈΡ внСшнСго Π²ΠΈΠ΄Π° мСню Ρ‡Π΅Ρ€Π΅Π· ΡˆΠ°Π±Π»ΠΎΠ½Ρ‹

Если стандартноС ΠΎΡ„ΠΎΡ€ΠΌΠ»Π΅Π½ΠΈΠ΅ мСню Π² 1Π‘-Битрикс вас Π½Π΅ устраиваСт, ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π΅Π³ΠΎ Ρ‡Π΅Ρ€Π΅Π· ΡˆΠ°Π±Π»ΠΎΠ½Ρ‹ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ². Для этого:

  1. ΠŸΠ΅Ρ€Π΅ΠΉΠ΄ΠΈΡ‚Π΅ Π² ΠšΠΎΠ½Ρ‚Π΅Π½Ρ‚ β†’ Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° сайта β†’ Π¨Π°Π±Π»ΠΎΠ½Ρ‹ сайта.
  2. Π’Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ шаблон, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ вашС мСню (ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ header ΠΈΠ»ΠΈ footer).
  3. НайдитС Π²Ρ‹Π·ΠΎΠ² ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° мСню β€” ΠΎΠ½ выглядит ΠΊΠ°ΠΊ:
    <?$APPLICATION->IncludeComponent(
    

    "bitrix:menu",

    "top",

    Array(

    "ROOT_MENU_TYPE" => "top",

    "MAX_LEVEL" => "2",

    "CHILD_MENU_TYPE" => "left",

    "USE_EXT" => "Y"

    )

    );?>

  4. Π‘ΠΊΠΎΠΏΠΈΡ€ΡƒΠΉΡ‚Π΅ шаблон ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° (/bitrix/components/bitrix/menu/templates/.default/) Π² свой шаблон сайта (/local/templates/[VAΠ¨_Π¨ΠΠ‘Π›ΠžΠ]/components/bitrix/menu/top/) ΠΈ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΡƒΠΉΡ‚Π΅ HTML/CSS.

Π’ΠΎΡ‚ основныС Ρ„Π°ΠΉΠ»Ρ‹ для кастомизации:

Π€Π°ΠΉΠ» НазначСниС Π§Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ
template.php Основная Π»ΠΎΠ³ΠΈΠΊΠ° отобраТСния Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Ρƒ HTML, классы, Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΡΡ‚ΡŒ
style.css Π‘Ρ‚ΠΈΠ»ΠΈ мСню Π¦Π²Π΅Ρ‚Π°, ΡˆΡ€ΠΈΡ„Ρ‚Ρ‹, Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΡŽ, Π°Π΄Π°ΠΏΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ
.parameters.php ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ свои настройки Π² Π°Π΄ΠΌΠΈΠ½ΠΊΠ΅
result_modifier.php ΠœΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡ Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΠ΅Ρ€Π΅Π΄ Π²Ρ‹Π²ΠΎΠ΄ΠΎΠΌ Π€ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΡŽ ΠΏΡƒΠ½ΠΊΡ‚ΠΎΠ², сортировку, Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΈΠΊΠΎΠ½ΠΎΠΊ

ΠšΡ€ΠΈΡ‚ΠΈΡ‡Π΅ΡΠΊΠ°Ρ ошибка ΠΌΠ½ΠΎΠ³ΠΈΡ… Π²Π΅Ρ€ΡΡ‚Π°Π»ΡŒΡ‰ΠΈΠΊΠΎΠ²: ΠΎΠ½ΠΈ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΡƒΡŽΡ‚ Ρ„Π°ΠΉΠ»Ρ‹ прямо Π² ΠΏΠ°ΠΏΠΊΠ΅ /bitrix/, Π° Π½Π΅ ΠΊΠΎΠΏΠΈΡ€ΡƒΡŽΡ‚ ΠΈΡ… Π² /local/. ΠŸΡ€ΠΈ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΈ Битрикса всС измСнСния Π±ΡƒΠ΄ΡƒΡ‚ потСряны!

Как Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΈΠΊΠΎΠ½ΠΊΠΈ Font Awesome Π² мСню?

1. ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ Font Awesome Π² шаблонС сайта (Π² <head>).

2. Π’ Ρ„Π°ΠΉΠ»Π΅ template.php вашСго шаблона мСню Π½Π°ΠΉΠ΄ΠΈΡ‚Π΅ Π²Ρ‹Π²ΠΎΠ΄ названия ΠΏΡƒΠ½ΠΊΡ‚Π° (ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ <?=$arItem["TEXT"]?>).

3. Π—Π°ΠΌΠ΅Π½ΠΈΡ‚Π΅ Π΅Π³ΠΎ Π½Π°:

<iPARAMS"]["ICON"]?>"></i> <?=$arItem["TEXT"]?>

4. ΠŸΡ€ΠΈ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ ΠΏΡƒΠ½ΠΊΡ‚Π° мСню Π² Π°Π΄ΠΌΠΈΠ½ΠΊΠ΅ Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ ICON со Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, fa-home для ΠΈΠΊΠΎΠ½ΠΊΠΈ Π΄ΠΎΠΌΠ°).

4. МобильноС мСню: адаптация ΠΈ Β«Π³Π°ΠΌΠ±ΡƒΡ€Π³Π΅Ρ€Β»

Π‘ΠΎΠ»Π΅Π΅ 60% Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠ° Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π° сайтов приходится Π½Π° ΠΌΠΎΠ±ΠΈΠ»ΡŒΠ½Ρ‹Π΅ устройства, поэтому Π°Π΄Π°ΠΏΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ мСню β€” Π½Π΅ Ρ€ΠΎΡΠΊΠΎΡˆΡŒ, Π° Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ. Π’ 1Π‘-Битрикс Π΅ΡΡ‚ΡŒ Π΄Π²Π° основных ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π°:

Бпособ 1: CSS-мСдиазапросы

Π”ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ Π² style.css вашСго шаблона мСню ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΏΡ€Π°Π²ΠΈΠ»Π°:

@media (max-width: 768px) {

.menu-top > ul {

display: none;

}

.menu-top.active > ul {

display: block;

}

.menu-toggle {

display: block; / Кнопка "Π³Π°ΠΌΠ±ΡƒΡ€Π³Π΅Ρ€" /

}

}

Бпособ 2: Π“ΠΎΡ‚ΠΎΠ²Ρ‹Π΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ bitrix:menu с шаблоном mobile (Π΅ΡΡ‚ΡŒ Π² послСдних вСрсиях Битрикса) ΠΈΠ»ΠΈ установитС Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ ΠΈΠ· ΠœΠ°Ρ€ΠΊΠ΅Ρ‚ΠΏΠ»Π΅ΠΉΡΠ°, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

  • πŸ“± АдаптивноС мСню для Битрикс (ΠΎΡ‚ Webdebug).
  • πŸ” Mobile Menu Pro (с ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ мСгамСню).
  • ⚑ Fast Mobile Menu (ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½ΠΎ для скорости Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ).

βœ… МСню скрываСтся Π·Π° ΠΊΠ½ΠΎΠΏΠΊΠΎΠΉ "Π³Π°ΠΌΠ±ΡƒΡ€Π³Π΅Ρ€" Π½Π° экранах <768px

βœ… ВсС ΡƒΡ€ΠΎΠ²Π½ΠΈ влоТСнности доступны послС ΠΊΠ»ΠΈΠΊΠ°

βœ… Π¨Ρ€ΠΈΡ„Ρ‚ Ρ‡ΠΈΡ‚Π°Π±Π΅Π»Π΅Π½ Π±Π΅Π· ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ

βœ… НСт Π³ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΡŒΠ½ΠΎΠΉ ΠΏΡ€ΠΎΠΊΡ€ΡƒΡ‚ΠΊΠΈ

βœ… Π‘ΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ открытия мСню <0.3 сСкунды

-->

⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: Если Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ ΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° мСню ("CACHE_TYPE" => "A"), послС ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² шаблонС Π½Π΅ Π·Π°Π±ΡƒΠ΄ΡŒΡ‚Π΅ ΠΎΡ‡ΠΈΡΡ‚ΠΈΡ‚ΡŒ кэш Ρ‡Π΅Ρ€Π΅Π· Настройки β†’ ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ β†’ ΠžΡ‡ΠΈΡΡ‚ΠΈΡ‚ΡŒ кэш. Π˜Π½Π°Ρ‡Π΅ ΠΌΠΎΠ±ΠΈΠ»ΡŒΠ½Ρ‹Π΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ Π±ΡƒΠ΄ΡƒΡ‚ Π²ΠΈΠ΄Π΅Ρ‚ΡŒ ΡΡ‚Π°Ρ€ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ мСню.

5. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ мСню Ρ‡Π΅Ρ€Π΅Π· API

Для слоТных ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ², Π³Π΄Π΅ мСню гСнСрируСтся динамичСски (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π½Π° основС ΠΏΡ€Π°Π² ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΈΠ»ΠΈ Π³Π΅ΠΎΠ»ΠΎΠΊΠ°Ρ†ΠΈΠΈ), пригодится API Битрикса. ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹:

Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΡƒΠ½ΠΊΡ‚Π° Ρ‡Π΅Ρ€Π΅Π· PHP:

<?php

$arMenu = array(

array(

"ВСкст ΠΏΡƒΠ½ΠΊΡ‚Π°",

"/novaya-ssylka/",

array(),

array(),

""

)

);

$APPLICATION->IncludeComponent(

"bitrix:menu",

"top",

array(

"ROOT_MENU_TYPE" => "top",

"MENU_CACHE_TYPE" => "N", // ΠžΡ‚ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌ кэш для динамичСского мСню

"MENU_CACHE_TIME" => "3600",

"MENU_CACHE_USE_GROUPS" => "Y",

"MENU_CACHE_GET_VARS" => array(),

"MAX_LEVEL" => "3",

"CHILD_MENU_TYPE" => "left",

"USE_EXT" => "Y",

"DELAY" => "N",

"ALLOW_MULTI_SELECT" => "N",

"ADDITIONAL_MENU" => $arMenu // ДобавляСм наш ΠΏΡƒΠ½ΠΊΡ‚

)

);?>

ИзмСнСниС мСню Ρ‡Π΅Ρ€Π΅Π· события:

Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ Ρ„Π°ΠΉΠ» /local/php_interface/init.php ΠΈ Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ:

<?php

AddEventHandler("main", "OnBuildGlobalMenu", "ChangeMainMenu");

function ChangeMainMenu(&$arGlobalMenu, &$arModuleMenu) {

// УдаляСм ΠΏΡƒΠ½ΠΊΡ‚ "ΠœΠ°Ρ€ΠΊΠ΅Ρ‚ΠΏΠ»Π΅ΠΉΡ" ΠΈΠ· Π³Π»Π°Π²Π½ΠΎΠ³ΠΎ мСню Π°Π΄ΠΌΠΈΠ½ΠΊΠΈ

unset($arGlobalMenu["global_menu_marketplace"]);

// ДобавляСм свой Ρ€Π°Π·Π΄Π΅Π»

$arGlobalMenu["global_menu_custom"] = array(

"menu_id" => "custom",

"text" => "Мой Ρ€Π°Π·Π΄Π΅Π»",

"title" => "ΠšΠ°ΡΡ‚ΠΎΠΌΠ½Ρ‹Π΅ настройки",

"sort" => 50,

"items_id" => "menu_custom",

"items" => array()

);

}

?>

⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: ΠŸΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с API мСню Π² 1Π‘-Битрикс Π»Π΅Π³ΠΊΠΎ Π½Π°Ρ€ΡƒΡˆΠΈΡ‚ΡŒ Ρ†Π΅Π»ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒ структуры. ВсСгда провСряйтС Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π½Π° тСстовом ΠΏΠΎΠ΄Π΄ΠΎΠΌΠ΅Π½Π΅ ΠΏΠ΅Ρ€Π΅Π΄ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ Π½Π° ΠΏΡ€ΠΎΠ΄Π°ΠΊΡˆΠ΅Π½Π΅. ОсобСнно остороТно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ unset() β€” ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ критичСскиС систСмныС ΠΏΡƒΠ½ΠΊΡ‚Ρ‹.

6. Π’ΠΈΠΏΠΈΡ‡Π½Ρ‹Π΅ ошибки ΠΈ ΠΈΡ… исправлСниС

Π”Π°ΠΆΠ΅ ΠΎΠΏΡ‹Ρ‚Π½Ρ‹Π΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ ΡΡ‚Π°Π»ΠΊΠΈΠ²Π°ΡŽΡ‚ΡΡ с ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°ΠΌΠΈ ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с мСню Π² 1Π‘-Битрикс. Π’ΠΎΡ‚ самыС распространСнныС:

ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ° ΠŸΡ€ΠΈΡ‡ΠΈΠ½Π° РСшСниС
МСню Π½Π΅ отобраТаСтся НС ΡƒΠΊΠ°Π·Π°Π½ Ρ‚ΠΈΠΏ мСню Π² ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π΅ ΠΈΠ»ΠΈ Π½Π΅Ρ‚ ΠΏΡ€Π°Π² ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ ROOT_MENU_TYPE ΠΈ ΠΏΡ€Π°Π²Π° доступа ΠΊ мСню Π² Π°Π΄ΠΌΠΈΠ½ΠΊΠ΅
ΠŸΡƒΠ½ΠΊΡ‚Ρ‹ Π΄ΡƒΠ±Π»ΠΈΡ€ΡƒΡŽΡ‚ΡΡ ΠšΡΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° ΠΈΠ»ΠΈ ошибка Π² result_modifier.php ΠžΡ‡ΠΈΡΡ‚ΠΈΡ‚Π΅ кэш ΠΈΠ»ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ Π»ΠΎΠ³ΠΈΠΊΡƒ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π΄Π°Π½Π½Ρ‹Ρ…
НС Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ Π²Ρ‹ΠΏΠ°Π΄Π°ΡŽΡ‰ΠΈΠ΅ подмСню ΠžΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΡƒΠ΅Ρ‚ JavaScript ΠΈΠ»ΠΈ ошибки Π² CSS ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅ jquery ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ стили для .menu-submenu
МСню Π½Π΅ обновляСтся Блишком Π΄ΠΎΠ»Π³ΠΎΠ΅ ΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π£ΠΌΠ΅Π½ΡŒΡˆΠΈΡ‚Π΅ MENU_CACHE_TIME ΠΈΠ»ΠΈ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅ кэш ("N")

Если послС ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ мСню «сломалось» Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½ΠΎ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ инструмСнты Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅ (F12), Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π°ΠΉΡ‚ΠΈ:

  • πŸ”΄ Ошибки консоли (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Uncaught TypeError: $ is not a function β€” Π·Π½Π°Ρ‡ΠΈΡ‚ Π½Π΅ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ jQuery).
  • 🟑 ΠŸΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΡ CSS (Π½Π΅Π²Π΅Ρ€Π½Ρ‹Π΅ сСлСкторы ΠΈΠ»ΠΈ ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ стили).
  • 🟒 ΠΠ΅ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΡƒΡŽ HTML-структуру (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, лишниС Π·Π°ΠΊΡ€Ρ‹Π²Π°ΡŽΡ‰ΠΈΠ΅ Ρ‚Π΅Π³ΠΈ </ul>).
πŸ’‘

ΠŸΠ΅Ρ€Π΅Π΄ Π»ΡŽΠ±Ρ‹ΠΌΠΈ измСнСниями Π² мСню Π΄Π΅Π»Π°ΠΉΡ‚Π΅ Ρ€Π΅Π·Π΅Ρ€Π²Π½ΡƒΡŽ копию Ρ„Π°ΠΉΠ»ΠΎΠ² шаблона ΠΈ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…. ОсобСнно Ссли Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚Π΅ с API ΠΈΠ»ΠΈ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΡƒΠ΅Ρ‚Π΅ систСмныС мСню (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, admin ΠΈΠ»ΠΈ catalog).

FAQ: ΠžΡ‚Π²Π΅Ρ‚Ρ‹ Π½Π° частыС вопросы

Как ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΌΠ½ΠΎΠ³ΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²ΠΎΠ΅ мСню с Π½Π΅ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½ΠΎΠΉ Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΡΡ‚ΡŒΡŽ?

Π’ стандартном ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π΅ bitrix:menu ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ влоТСнности рСгулируСтся ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ MAX_LEVEL. По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΎΠ½ Ρ€Π°Π²Π΅Π½ 1. Π§Ρ‚ΠΎΠ±Ρ‹ Ρ€Π°Π·Ρ€Π΅ΡˆΠΈΡ‚ΡŒ Π½Π΅ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½ΡƒΡŽ Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΡΡ‚ΡŒ:

  1. Π’ Π²Ρ‹Π·ΠΎΠ²Π΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° установитС "MAX_LEVEL" => "0".
  2. Π£Π±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ Π² шаблонС мСню (template.php) Π΅ΡΡ‚ΡŒ рСкурсивный Π²Ρ‹Π²ΠΎΠ΄ подмСню (ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ рСализуСтся Ρ‡Π΅Ρ€Π΅Π· Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ShowSubMenu()).
  3. ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ CSS-стили для Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… ΡƒΡ€ΠΎΠ²Π½Π΅ΠΉ (классы Ρ‚ΠΈΠΏΠ° .menu-submenu-level-2).

Для ΠΎΡ‡Π΅Π½ΡŒ Π³Π»ΡƒΠ±ΠΎΠΊΠΈΡ… структур (Π±ΠΎΠ»Π΅Π΅ 5 ΡƒΡ€ΠΎΠ²Π½Π΅ΠΉ) рСкомСндуСтся ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ Мega Menu ΠΈΠ· ΠœΠ°Ρ€ΠΊΠ΅Ρ‚ΠΏΠ»Π΅ΠΉΡΠ° β€” ΠΎΠ½ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½ для Ρ‚Π°ΠΊΠΈΡ… случаСв.

МоТно Π»ΠΈ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Ρ€Π°Π·Π½ΠΎΠ΅ мСню для Ρ€Π°Π·Π½Ρ‹Ρ… Π³Ρ€ΡƒΠΏΠΏ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ?

Π”Π°, Π² 1Π‘-Битрикс Π΅ΡΡ‚ΡŒ Π΄Π²Π° способа:

Бпособ 1: Π§Π΅Ρ€Π΅Π· ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°

Π’ Π²Ρ‹Π·ΠΎΠ²Π΅ bitrix:menu Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅:

"MENU_CACHE_USE_GROUPS" => "Y",

"MENU_CACHE_GET_VARS" => array("LOGIN", "GROUPS")

Π—Π°Ρ‚Π΅ΠΌ Π² Π°Π΄ΠΌΠΈΠ½ΠΊΠ΅ ΠΏΡ€ΠΈ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ ΠΏΡƒΠ½ΠΊΡ‚ΠΎΠ² мСню ΡƒΠΊΠ°ΠΆΠΈΡ‚Π΅, для ΠΊΠ°ΠΊΠΈΡ… Π³Ρ€ΡƒΠΏΠΏ ΠΎΠ½ΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΡŒΡΡ (Π²ΠΊΠ»Π°Π΄ΠΊΠ° Доступ).

Бпособ 2: Π§Π΅Ρ€Π΅Π· PHP-ΠΊΠΎΠ΄

Π’ Ρ„Π°ΠΉΠ»Π΅ result_modifier.php шаблона мСню Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΡŽ:

<?php

foreach ($arResult as $key => $arItem) {

if (!in_array(5, $USER->GetUserGroupArray()) && $arItem["PARAMS"]["ONLY_FOR_ADMIN"] == "Y") {

unset($arResult[$key]);

}

}

?>

Π“Π΄Π΅ 5 β€” ID Π³Ρ€ΡƒΠΏΠΏΡ‹ администраторов (ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ Π² Настройки β†’ ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ β†’ Π“Ρ€ΡƒΠΏΠΏΡ‹ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ).

Как ΡΠΊΡΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ/ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ мСню ΠΌΠ΅ΠΆΠ΄Ρƒ сайтами?

Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½Ρ‹Ρ… инструмСнтов для экспорта мСню Π² 1Π‘-Битрикс Π½Π΅Ρ‚, Π½ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ±Ρ…ΠΎΠ΄Π½Ρ‹Π΅ ΠΏΡƒΡ‚ΠΈ:

ΠœΠ΅Ρ‚ΠΎΠ΄ 1: Π§Π΅Ρ€Π΅Π· Π±Π°Π·Ρƒ Π΄Π°Π½Π½Ρ‹Ρ…

МСню хранятся Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ b_menu. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅:

  1. Π‘Π΄Π΅Π»Π°Ρ‚ΡŒ Π΄Π°ΠΌΠΏ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Π½Π° исходном сайтС (phpMyAdmin β†’ Экспорт).
  2. На Ρ†Π΅Π»Π΅Π²ΠΎΠΌ сайтС ΠΎΡ‡ΠΈΡΡ‚ΠΈΡ‚ΡŒ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ b_menu ΠΈ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΄Π°ΠΌΠΏ.
  3. ΠžΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ кэш мСню Π² Π°Π΄ΠΌΠΈΠ½ΠΊΠ΅ (Настройки β†’ ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ β†’ ΠžΡ‡ΠΈΡΡ‚ΠΈΡ‚ΡŒ кэш).

⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: ΠŸΡ€ΠΈ Ρ‚Π°ΠΊΠΎΠΌ способС слСтят всС привязки ΠΊ ΠΈΠ½Ρ„ΠΎΠ±Π»ΠΎΠΊΠ°ΠΌ ΠΈ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°ΠΌ! ПослС ΠΈΠΌΠΏΠΎΡ€Ρ‚Π° Π½ΡƒΠΆΠ½ΠΎ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΏΡƒΠ½ΠΊΡ‚.

ΠœΠ΅Ρ‚ΠΎΠ΄ 2: Π§Π΅Ρ€Π΅Π· ΠΌΠΎΠ΄ΡƒΠ»ΡŒ Β«1Π‘-Битрикс: ΠœΠΈΠ³Ρ€Π°Ρ†ΠΈΡΒ»

Если Ρƒ вас установлСн ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ΠœΠΈΠ³Ρ€Π°Ρ†ΠΈΡ (доступСн Π² рСдакциях «БизнСс» ΠΈ Β«Π­Π½Ρ‚Π΅Ρ€ΠΏΡ€Π°ΠΉΠ·Β»), ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹ΠΉ сцСнарий для пСрСноса мСню. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΠ΄Π° для Ρ„Π°ΠΉΠ»Π° ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠΈ:

<?php

namespace Sprint\Migration;

class MenuMigration extends Version {

protected $description = "ΠŸΠ΅Ρ€Π΅Π½ΠΎΡ Π³Π»Π°Π²Π½ΠΎΠ³ΠΎ мСню";

protected $moduleVersion = "3.25.6";

public function up() {

$this->getMenuManager()->insertMenuItem(

array(

'TYPE' => 'top',

'NAME' => 'О компании',

'LINK' => '/about/',

'SORT' => 100,

'DEPTH_LEVEL' => 1,

)

);

}

public function down() {

// Π›ΠΎΠ³ΠΈΠΊΠ° ΠΎΡ‚ΠΊΠ°Ρ‚Π°

}

}

ΠŸΠΎΡ‡Π΅ΠΌΡƒ мСню Ρ‚ΠΎΡ€ΠΌΠΎΠ·ΠΈΡ‚ ΠΏΡ€ΠΈ большом количСствС ΠΏΡƒΠ½ΠΊΡ‚ΠΎΠ²?

Если Ρƒ вас Π±ΠΎΠ»Π΅Π΅ 100 ΠΏΡƒΠ½ΠΊΡ‚ΠΎΠ² мСню (ΠΈΠ»ΠΈ 20+ ΡƒΡ€ΠΎΠ²Π½Π΅ΠΉ влоТСнности), ΠΌΠΎΠ³ΡƒΡ‚ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Ρ‚ΡŒ Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠΈ ΠΏΡ€ΠΈ Ρ€Π΅Π½Π΄Π΅Ρ€ΠΈΠ½Π³Π΅. РСшСния:

  • πŸš€ ΠžΡ‚ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅ ΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ для динамичСских мСню ("CACHE_TYPE" => "N").
  • 🧹 ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΡƒΠΉΡ‚Π΅ SQL-запросы Π² result_modifier.php (ΠΈΠ·Π±Π΅Π³Π°ΠΉΡ‚Π΅ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… Ρ†ΠΈΠΊΠ»ΠΎΠ²).
  • πŸ“¦ Π Π°Π·Π±Π΅ΠΉΡ‚Π΅ мСню Π½Π° части: Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π²Π΅Ρ€Ρ…Π½Π΅Π΅ мСню β€” Ρ‚ΠΎΠ»ΡŒΠΊΠΎ 1 ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ, ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ β€” Ρ‡Π΅Ρ€Π΅Π· Π²Ρ‹ΠΏΠ°Π΄Π°ΡŽΡ‰ΠΈΠ΅ Π±Π»ΠΎΠΊΠΈ ΠΏΠΎ ΠΊΠ»ΠΈΠΊΡƒ.
  • πŸ”„ Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Π»Π΅Π½ΠΈΠ²ΡƒΡŽ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ для подмСню (Π·Π°Π³Ρ€ΡƒΠΆΠ°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€ΠΈ Π½Π°Π²Π΅Π΄Π΅Π½ΠΈΠΈ).

Для ΡΠΊΡΡ‚Ρ€Π΅ΠΌΠ°Π»ΡŒΠ½Ρ‹Ρ… случаСв (500+ ΠΏΡƒΠ½ΠΊΡ‚ΠΎΠ²) рассмотритС Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ хранСния мСню Π² memcached ΠΈΠ»ΠΈ redis вмСсто стандартного кэша Битрикса.

Как Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π² мСню счСтчик (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, количСство Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² Π² ΠΊΠΎΡ€Π·ΠΈΠ½Π΅)?

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΎΡ‚ΠΎΠ±Ρ€Π°Π·ΠΈΡ‚ΡŒ динамичСскиС Π΄Π°Π½Π½Ρ‹Π΅ рядом с ΠΏΡƒΠ½ΠΊΡ‚ΠΎΠΌ мСню (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, количСство элСмСнтов Π² ΠΊΠΎΡ€Π·ΠΈΠ½Π΅ ΠΈΠ»ΠΈ Π½ΠΎΠ²Ρ‹Ρ… сообщСний), Π½ΡƒΠΆΠ½ΠΎ:

  1. Π’ Ρ„Π°ΠΉΠ»Π΅ template.php шаблона мСню Π½Π°ΠΉΡ‚ΠΈ Π²Ρ‹Π²ΠΎΠ΄ тСкста ΠΏΡƒΠ½ΠΊΡ‚Π° (ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ <?=$arItem["TEXT"]?>).
  2. Π—Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π΅Π³ΠΎ Π½Π°:
<?=$arItem["TEXT"]?>

<?if ($arItem["PARAMS"]["SHOW_COUNTER"] == "Y"):?>

<span>

<?=\Bitrix\Main\Page\Frame::getInstance()->startDynamicArea('cart-counter');?>

<?=Bitrix\Sale\Basket::loadItemsForFUser(

Bitrix\Sale\Fuser::getId(),

Bitrix\Main\Context::getCurrent()->getSite()

)->getQuantity();?>

<?\Bitrix\Main\Page\Frame::getInstance()->finishDynamicArea();?>

</span>

<?endif;?>

Π—Π°Ρ‚Π΅ΠΌ Π² Π°Π΄ΠΌΠΈΠ½ΠΊΠ΅ ΠΏΡ€ΠΈ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ ΠΏΡƒΠ½ΠΊΡ‚Π° мСню Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ SHOW_COUNTER со Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ Y.

Для Π΄Ρ€ΡƒΠ³ΠΈΡ… Ρ‚ΠΈΠΏΠΎΠ² счСтчиков (сообщСния, увСдомлСния) Π·Π°ΠΌΠ΅Π½ΠΈΡ‚Π΅ ΠΊΠΎΠ΄ Π²Π½ΡƒΡ‚Ρ€ΠΈ startDynamicArea Π½Π° ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ API-запрос.