Veppa - решение проблем с категориями

PHP
PHP: Veppa - решение проблем с категориями
В Veppa есть проблемы с категориями, а именно, если категории написаны с заглавной русской буквы, то при редактировании картинки в админской части скрипты, вы не можете определить к какому разделу определена данная картинка.
Устранить данную проблему очень просто, нужно всего лишь понять почему и из за чего не отображаются разделы.

Давайте начнем с самого начала

И так при редактировании картинки, мы не видим раздел, что это может означать, либо с кодировкой проблемы, либо что то мешает, а может быть и то и другое.
Чтобы найти откуда растут данные проблемы, я глянул в файлик которой отвечает вывод категорий при редактировании и нашел функцию
<?php echo Category::checkboxes($categories,$wallpaper)?>


И так, у нас есть класс и самом функция, открываем файл /models/Category.php
и ищем функцию checkboxes

Посмотрев как там все устроено, я заметил что в данной функции, есть строка в которой есть php функция переводящая символы в нижний регистр, тут то все и проблемы. Проблема в том что русские символы двухбайтовые в отличие от латиницы и при изменении регистра у нас получается однобайтовый символ, в нем то и проблема.

Делаем следующее, находим строчку
if(in_array(($c->name),$arr_tags))


и меняем ее на
if(in_array(mb_strtolower($c->name, 'UTF-8'),$arr_tags))


Самое главное не убирайте кодировку UTF-8 иначе будут такие же проблемы.

1 комментарий

avatar
Комментарий от akudjee
Таким образом не совсем правильно получается. У меня к примеру при таком раскладе категории выбираются, но с глюками, то есть я жму edit и выбираю категорию Животные жму OK, затем захожу по новой в edit и выбираю другую категорию, но снимаю с категории Животные галочку, жму ОК, заходу по новой и вижу, что выбралочь уже две категории.Иногда выбирается не та категория, которая мне нужна, а на сайте категория не меняется при этом.
Я это поборол таким образом, правда только на локалке, на хостинге еще не пробовал.
Идем в sys\app\models\Category.php и находим строку:
if (in_array(strtolower($c->name), $arr_tags))

меняем его на
if (in_array(/*strtolower(*/$c->name/*)*/, $arr_tags))

Затем идем в sys\app\models\Tag.php ищем код:
$c_name = strtolower($c->name);

и меняем его на
$c_name = /*strtolower(*/$c->name/*)*/;

Таким образом у меня получилось с выбором категорий.
  • admin
  • 0
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.