Задать вопрос
@Belib0v
Осторожно, новичок

Категории не подгружаются при первой загрузке страницы, как исправить?

66868d014d581405708746.png
Меню категорий сделано виджетом, при первой загрузке страницы с категориями они не залетают в навбар.
66868d26dbd7b534733005.png
После обновления страницы всё отображается и работает. Ошибка возникает если страницу не трогать в течении часа где-то, а потом снова обновить, то категории пропадут. Помогите понять как это исправить и почему так происходит.

Код экшна:
public function renderCategories($categories, $is_parent, $is_sub_sub_category, $inner_counter, $prev_parent_id)
    {
        if ($inner_counter >= 3) {
            return;
        }
        //If current category is not parent category
        if (!$is_parent) {
            $parent_id = $categories[0]['parent_id'];

            //If current category is a neighbour to a prev category
            if ($parent_id !== $prev_parent_id) {
                $inner_counter++;
            }
            if ($is_sub_sub_category) {
                $output .= '<ul class="dropdown-block sub-sub-category">';
            } else {
                $output .= '<ul class="dropdown-block">';
            }
            foreach ($categories as $category) {
                $is_children_empty = empty($category['subcategories']);
                $output .= '<li class="dropdown-block__item">';
                $output .= '<a class="dropdown-block__item-link" href="' . $category['further_url'] . '" title="' . $category['title'] . '">';
                $output .= $category['title'];
                if (!$is_children_empty && $inner_counter < 3) {
                    $output .= '<i class="ti ti-chevron-right"></i>';
                }
                $output .= '</a>';
                if (!$is_children_empty) {
                    $output .= $this->renderCategories($category['subcategories'], false, true, $inner_counter, $category['parent_id']);
                }
                $output .= '</li>';
            }
            $output .= '</ul>';
        }
        //If a current category is a one of main category
        if ($is_parent) {
            $output = '<ul class="dropdown-flex">';
            foreach ($categories as $category) {
                $output .= '<li class="dropdown-flex__item">';
                $output .= '<a class="dropdown-flex__item-link" href="' . $category['further_url'] . '" title="' . $category['title'] . '">';
                $output .= $category['title'];
                $output .= '</a>';
                if (!empty($category['subcategories'])) {
                    $output .= $this->renderCategories($category['subcategories'], false, false, 0, $category['parent_id']);
                }
                $output .= '</li>';
            }
            $output .= '</ul>';
        }
        return $output;
    }


JQuery:

$(document).ready(function () {
  const blockItems = $(".dropdown__container .dropdown-flex__item");
  $(blockItems).on("mouseenter", function (e) {
    const dropdownBlock = $(this).find("ul.dropdown-block")[0];
    if (dropdownBlock) {
      const itemRect = dropdownBlock.getBoundingClientRect();
      const blockRight = window.innerWidth - itemRect.right;
      const blockWidth = itemRect.width;
      const isSmallRightSpace = blockRight <= (blockWidth * 2);

      if (isSmallRightSpace) {
        const itemLinks = $(dropdownBlock).find(".dropdown-block__item-link");
        $(itemLinks).addClass("reverse");
        $(itemLinks).find("i.ti.ti-chevron-right").removeClass("ti-chevron-right").addClass("ti-chevron-left");
        $(dropdownBlock).find(".dropdown-block.sub-sub-category").addClass("left");
        $(dropdownBlock).addClass("left");

      }
    }
  });
});
  • Вопрос задан
  • 94 просмотра
Подписаться 1 Простой 4 комментария
Пригласить эксперта
Ответы на вопрос 1
ThunderCat
@ThunderCat Куратор тега PHP
{PHP, MySql, HTML, JS, CSS} developer
Судя по описанию, проблема в кэше.
Система скорее всего вордпресс?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы