Не работает слайдер баннеров на главной

Правила раздела: faq.php?mode=okay
Модератор: Модераторы

trainracing M
Аватара
trainracing M
Возраст: 29
Репутация: 12
Сообщения: 121
Зарегистрирован: 07.10.2016
С нами: 5 лет
Сайт

Сообщение #1 trainracing » 29.07.2021, 07:39

Добрый день, подскажите, почему может не работать слайдер на главной даже если установить чистую систему на хостинг, то есть сам код не выполняется вывода изображений баннера, все остальные изображения выводятся, а только слайдер или просто баннеры без перелистывания не выводится.

версия окай 2.3.4 и на 2.4.0 так же
версия php 7.0, может ли не хватать каких=то модулей php или из-за чего может не отрабатывать этот код?
директории к ресайзам и фото баннеров все дефолтное, шаблоны тоже дефолтные

Если добавить новый баннер и разместить тупо перед </body> то тоже не отображается, в исходном коде в браузере в этом месте пустота вместо куска кода (не ошибка картинки)

пример кода, который не выполняется:

Код: Выделить всё

 {get_banner var=banner_group1 group='group1'}
        {if $banner_group1->items}
            <div class="fn_banner_group1 banners container">
                {foreach $banner_group1->items as $bi}
                    <div>
                        {if $bi->url}
                        <a href="{$bi->url}" target="_blank">
                            {/if}
                            {if $bi->image}
                                <img src="{$bi->image|resize:1170:390:false:$config->resized_banners_images_dir}" alt="{$bi->alt}" title="{$bi->title}"/>
                            {/if}
                            {if $bi->url}
                        </a>
                        {/if}
                    </div>
                {/foreach}
            </div>
        {/if}


Добавлено спустя 52 минуты 41 секунду:
в логах такая ошибка:

Код: Выделить всё

29.07.2021 11:21:59
Error (3685) Illegal argument to a regular expression.
SELECT * FROM ok_banners WHERE 1 AND group_id='group1'  AND visible=1 AND (pages regexp '[[:<:]](1)[[:>:]]' OR show_all_pages=1) LIMIT 1


напомню, система чистая дефолтная.Версия mysql - 8

makki M
makki M
Репутация: 192
Сообщения: 658
Зарегистрирован: 12.08.2016
С нами: 5 лет 2 месяца
Откуда: Киев
Сайт

Сообщение #2 makki » 29.07.2021, 11:47

Версия MySQL у вас не 8, а >= 8.0.4 в которой поменялась логика работы с regexp, поэтому в логах такая ошибка. Выход - понизить версию MySQL

Или попробуйте в api/Banners.php вместо

Код: Выделить всё

$show_filter_array[$k] = $this->db->placehold($k." regexp '[[:<:]](?)[[:>:]]'", intval($show_filter_array[$k]));

написать

Код: Выделить всё

$show_filter_array[$k] = $this->db->placehold($k." regexp '\\b(?)\\b'", intval($show_filter_array[$k]));
Cоздание и расширение функционала интернет-магазина на платформе OkayCMS 2 (с 3-й и 4-й версией не работаю)

trainracing M
Аватара
trainracing M
Возраст: 29
Репутация: 12
Сообщения: 121
Зарегистрирован: 07.10.2016
С нами: 5 лет
Сайт

Сообщение #3 trainracing » 29.07.2021, 18:51

большое спасибо, это помогло

user23
user23
Репутация: 0
Сообщения: 38
Зарегистрирован: 01.11.2019
С нами: 1 год 11 месяцев

Сообщение #4 user23 » 07.08.2021, 11:38

makki писал(а):Версия MySQL у вас не 8, а >= 8.0.4 в которой поменялась логика работы с regexp, поэтому в логах такая ошибка. Выход - понизить версию MySQL

Или попробуйте в api/Banners.php вместо

Код: Выделить всё

$show_filter_array[$k] = $this->db->placehold($k." regexp '[[:<:]](?)[[:>:]]'", intval($show_filter_array[$k]));

написать

Код: Выделить всё

$show_filter_array[$k] = $this->db->placehold($k." regexp '\\b(?)\\b'", intval($show_filter_array[$k]));


К сожалению мне данный вариант не помог. MYSQL 8.0.26 , может сталкивались с этой проблемой?

trainracing M
Аватара
trainracing M
Возраст: 29
Репутация: 12
Сообщения: 121
Зарегистрирован: 07.10.2016
С нами: 5 лет
Сайт

Сообщение #5 trainracing » 16.08.2021, 10:42

user23 писал(а):
makki писал(а):Версия MySQL у вас не 8, а >= 8.0.4 в которой поменялась логика работы с regexp, поэтому в логах такая ошибка. Выход - понизить версию MySQL

Или попробуйте в api/Banners.php вместо

Код: Выделить всё

$show_filter_array[$k] = $this->db->placehold($k." regexp '[[:<:]](?)[[:>:]]'", intval($show_filter_array[$k]));

написать

Код: Выделить всё

$show_filter_array[$k] = $this->db->placehold($k." regexp '\\b(?)\\b'", intval($show_filter_array[$k]));


К сожалению мне данный вариант не помог. MYSQL 8.0.26 , может сталкивались с этой проблемой?

Выводит баннер только если выбрать "показывать на всех страницах"


Название раздела: Вопросы по работе с OkayCMS
Правила раздела: faq.php?mode=okay

Быстрый ответ


Введите код в точности так, как вы его видите. Регистр символов не имеет значения.
Код подтверждения

   

Вернуться в «Вопросы по работе с OkayCMS»

Кто сейчас на форуме (по активности за 5 минут)

Сейчас этот раздел просматривают: 2 гостя