Task 6875 | Все меню передал с использованием twig (удалил Walkers и лишние данные для context)

pull/36/head
parent f157d03109
commit e266a8ece7
  1. 79
      wp-content/themes/cosmopet/temp-functions/menu-logic.php
  2. 2
      wp-content/themes/cosmopet/temp-functions/modules-logic.php
  3. 70
      wp-content/themes/cosmopet/templates/header.twig
  4. 12
      wp-content/themes/cosmopet/templates/menu/main-menu.twig
  5. 24
      wp-content/themes/cosmopet/templates/menu/mobile-menu.twig
  6. 15
      wp-content/themes/cosmopet/templates/menu/product-menu.twig

@ -6,65 +6,12 @@ function register_custom_menus() {
'main-menu' => 'Основное меню', 'main-menu' => 'Основное меню',
'cats-menu' => 'Меню для кошек', 'cats-menu' => 'Меню для кошек',
'dogs-menu' => 'Меню для собак', 'dogs-menu' => 'Меню для собак',
'mobile-menu' => 'Мобильное меню',
]); ]);
} }
add_action('after_setup_theme', 'register_custom_menus'); add_action('after_setup_theme', 'register_custom_menus');
class Custom_Walker_Nav_Menu extends Walker_Nav_Menu {
// Открытие уровня подменю
function start_lvl( &$output, $depth = 0, $args = null ) {
$output .= '<ul class="header-pc-menu__list">';
}
// Закрытие уровня подменю
function end_lvl( &$output, $depth = 0, $args = null ) {
$output .= '</ul>';
}
// Открытие элемента меню
function start_el( &$output, $item, $depth = 0, $args = null, $id = 0 ) {
// Для родительского элемента меню
if ($depth === 0) {
$output .= '<div class="header-pc-menu__item">';
$output .= '<a href="' . esc_url($item->url) . '" class="header-pc-menu__title">' . esc_html($item->title) . '</a>';
} else {
// Для дочерних элементов
$output .= '<li class="header-pc-menu__list-li">';
$output .= '<a href="' . esc_url($item->url) . '">' . esc_html($item->title) . '</a>';
}
}
// Закрытие элемента меню
function end_el( &$output, $item, $depth = 0, $args = null, $id = 0 ) {
// Закрытие для родительского элемента
if ($depth === 0) {
$output .= '</div>'; // Закрытие .header-pc-menu__item
} else {
// Закрытие для дочернего элемента
$output .= '</li>';
}
}
}
function get_custom_menu($location) {
// Используем wp_nav_menu с нужными параметрами
ob_start(); // Начинаем буферизацию вывода
wp_nav_menu(array(
'theme_location' => $location,
'menu_class' => '', // Не добавляем класс к ul
'container' => false, // Без контейнера
'depth' => 2, // Уровень вложенности
'walker' => new Custom_Walker_Nav_Menu(), // Используем кастомный walker
));
$menu_html = ob_get_clean(); // Получаем HTML меню
return $menu_html;
}
class Custom_Header_Phone_Menu_Walker extends Walker_Nav_Menu { class Custom_Header_Phone_Menu_Walker extends Walker_Nav_Menu {
// Открытие подменю (если есть) // Открытие подменю (если есть)
function start_lvl( &$output, $depth = 0, $args = null ) { function start_lvl( &$output, $depth = 0, $args = null ) {
@ -100,8 +47,6 @@ class Custom_Header_Phone_Menu_Walker extends Walker_Nav_Menu {
} }
} }
} }
// Функция для вызова меню и передачи HTML в Twig // Функция для вызова меню и передачи HTML в Twig
function get_custom_phone_menu($location = 'phone_menu') { function get_custom_phone_menu($location = 'phone_menu') {
ob_start(); // Начинаем буферизацию вывода ob_start(); // Начинаем буферизацию вывода
@ -116,3 +61,25 @@ function get_custom_phone_menu($location = 'phone_menu') {
return $menu_html; return $menu_html;
} }
add_filter('timber/context', 'add_to_context');
/**
* Global Timber context.
*
* @param array $context Global context variables.
*/
function add_to_context($context)
{
$context['main_menu'] = Timber::get_menu('main-menu');
$context['cat_menu'] = Timber::get_menu('cats-menu');
$context['dog_menu'] = Timber::get_menu('dogs-menu');
$context['mobile_menu'] = Timber::get_menu('mobile-menu');
return $context;
}

@ -336,7 +336,7 @@ include_module('layout');
add_action('wp', 'my_custom_checkout_code'); add_action('wp', 'my_custom_checkout_code');
function my_custom_checkout_code() { function my_custom_checkout_code() {
if (function_exists('is_checkout')) { if (function_exists('is_checkout') && is_checkout()) {
include_component('shop', 'checkout'); include_component('shop', 'checkout');
} }
} }

@ -8,63 +8,13 @@
<div class="header__pc-menu"> <div class="header__pc-menu">
<div class="header-pc-menu__content"> <div class="header-pc-menu__content">
{# Кошки #} {# Кошки #}
{% set cat_menu = fn('get_custom_menu', 'cats-menu') %} {% include 'menu/product-menu.twig' with {'child_menu': cat_menu} %}
{{ cat_menu|raw }}
{# Собаки #} {# Собаки #}
{% set dog_menu = fn('get_custom_menu', 'dogs-menu') %} {% include 'menu/product-menu.twig' with {'child_menu': dog_menu} %}
{{ dog_menu|raw }}
</div> </div>
</div> </div>
<div class="header__phone-menu"> {% include 'menu/mobile-menu.twig' %}
<div class="header-phone-menu__item">
<a href="{% if current_lang == 'ru' %}{{front_url}}{% elseif current_lang == 'en' %}{{front_url_en}}{% endif %}"
class="header-phone-menu__title header-phone-menu__title--gradient">{% if current_lang == 'ru' %}ГЛАВНАЯ{% elseif current_lang == 'en' %}MAIN{% endif %}</a>
</div>
{% if current_lang == 'ru' %}
<div class="header-phone-menu__item">
<a href="/shop/" class="header-phone-menu__title">
ПРОДУКЦИЯ
</a>
{% set cat_m_menu = fn('get_custom_phone_menu', 'cats-menu') %}
{{ cat_m_menu|raw }}
{% set dog_m_menu = fn('get_custom_phone_menu', 'dogs-menu') %}
{{ dog_m_menu|raw }}
</div>
{% elseif current_lang == 'en' %}
<div class="header-phone-menu__item">
<a href="/en/shop/" class="header-phone-menu__title">
BUY
</a>
{% set cat_m_menu = fn('get_custom_phone_menu', 'cats-menu') %}
{{ cat_m_menu|raw }}
{% set dog_m_menu = fn('get_custom_phone_menu', 'dogs-menu') %}
{{ dog_m_menu|raw }}
</div>
{% endif %}
<div class="header-phone-menu__item">
<a href="{% if current_lang == 'ru' %}{{about_url}}{% elseif current_lang == 'en' %}{{about_url_en}}{% endif %}"
class="header-phone-menu__title">{% if current_lang == 'ru' %}О
COSMOPET{% elseif current_lang == 'en' %}ABOUT COSMOPET{% endif %}</a>
</div>
<div class="header-phone-menu__item">
<a href=" {% if current_lang == 'ru' %}{{production_url}}{% elseif current_lang == 'en' %}{{production_url_en}}{% endif %}"
class="header-phone-menu__title">
{% if current_lang == 'ru' %}ПРОИЗВОДСТВО{% elseif current_lang == 'en' %}PRODUCTION{% endif %}
</a>
</div>
{% if CONSTANTS.DOMAIN != 'AE' %}
<div class="header-phone-menu__item">
<a href="{{fn ('get_post_type_archive_link', 'post' )}}"
class="header-phone-menu__title">{% if current_lang == 'ru' %}БЛОГ{% elseif current_lang == 'en' %}BLOG{% endif %}</a>
</div>
{% endif %}
</div>
</div> </div>
<div class="header__content wrapper"> <div class="header__content wrapper">
<button class="header__open-menu" id="phone-menu"> <button class="header__open-menu" id="phone-menu">
@ -92,19 +42,7 @@
</svg> </svg>
</a> </a>
<ul class="main-menu"> {% include 'menu/main-menu.twig' %}
{% for item in menu_items %}
<li class="main-menu__item">
<a href="{{ item.url }}" class="main-menu__link">{{ item.title }}</a>
</li>
{% endfor %}
<li class="main-menu__item">
<button class="main-menu__button" id="pc-menu">
{% if current_lang == 'ru' %}ПРОДУКЦИЯ{% elseif current_lang == 'en' %}BUY{% endif %}
</button>
</li>
</ul>
<div class="mini-profile"> <div class="mini-profile">
{% if site_region == 'ru' %} {% if site_region == 'ru' %}

@ -0,0 +1,12 @@
<ul class="main-menu">
{% for item in main_menu.items %}
<li class="main-menu__item">
<a class="main-menu__link" href="{{ item.link }}" {{ item.is_target_blank ? 'target="_blank"' }}>{{ item.title }}</a>
</li>
{% endfor %}
<li class="main-menu__item">
<button class="main-menu__button" id="pc-menu">
{% if current_lang == 'ru' %}ПРОДУКЦИЯ{% elseif current_lang == 'en' %}BUY{% endif %}
</button>
</li>
</ul>

@ -0,0 +1,24 @@
<div class="header__phone-menu">
{% for item in mobile_menu.items %}
<div class="header-phone-menu__item">
<a href="{{ item.link }}" {{ item.is_target_blank ? 'target="_blank"' }} class="header-phone-menu__title {{item.class}}">
{{ item.title }}
</a>
{% if item.children %}
{% for child in item.children %}
<a href="{{ child.link }}" class="header-phone-menu__category">{{ child.title }}</a>
{% if child.children %}
<ul class="header-phone-menu__list">
{% for sub_child in child.children %}
<li class="header-phone-menu__list-item">
<a href="{{sub_child.link}}">{{sub_child.title}}</a>
</li>
{% endfor %}
</ul>
{% endif %}
{% endfor %}
{% endif %}
</div>
{% endfor %}
</div>

@ -0,0 +1,15 @@
<div class="header-pc-menu__item">
{% for item in child_menu.items %}
<a class="header-pc-menu__title" href="{{ item.link }}" {{ item.is_target_blank ? 'target="_blank"' }}>{{ item.title }}</a>
{% if item.children %}
<ul class="header-pc-menu__list">
{% for child in item.children %}
<li class="header-pc-menu__list-li">
<a href="{{ child.link }}"{{ item.is_target_blank ? 'target="_blank"' }}>{{ child.title }}</a>
</li>
{% endfor %}
</ul>
{% endif %}
{% endfor %}
</div>
Loading…
Cancel
Save