Новости Joomla

👩‍💻 Вместе мы развиваем Joomla: станьте Joomfluencer!

👩‍💻 Вместе мы развиваем Joomla: станьте Joomfluencer!

Вы уверенно чувствуете себя перед камерой, динамичны, обаятельны и всегда улыбаетесь? Чувствуете себя искателем приключений, готовым поделиться своими исследованиями CMS Joomla!, взять интервью у видных деятелей сообщества, пообщаться лично или по видеосвязи с волонтерами Joomla или отправиться на поиски новых идей?

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

Возможны самые разные форматы и темы: шортсы, интервью, аналитика и разборы в режиме реального времени, быстрые советы и рекомендации, знакомство с миром Joomla, изучение открытого исходного кода... Нет никаких ограничений!

Joomla! уже активно представлена ​​во многих социальных сетях:
- 155K подписчиков на Facebook,
- 55K подписчиков на X (ранее Twitter),
- 16K подписчиков на YouTube,
- 14K подписчиков на LinkedIn,
- 5,7K подписчиков в Instagram
а так же другие площадки ждут вас. Аккаунты Threads и Bluesky относительно новые, но их популярность только растёт!

А если хватит энергии, можно рассмотреть и TikTok!

❓ Итак, вы готовы?
👉 Свяжитесь с отделом маркетинга по адресу: marketing@community.joomla.org

Подробности в статье в Joomla Community Magazine.

@joomlafeed

0 Пользователей и 1 Гость просматривают эту тему.
  • 9 Ответов
  • 3599 Просмотров
*

orsy

  • Захожу иногда
  • 400
  • 23 / 1
  • Web-Factor Ukraine
Доброе время суток. Есть вопрос по CB User List, в частности по фильтру. Проблема в том что он не работает по полю с типом Check Box (Multiple). Другие поля не пробовал, да и не подходят они мне.

Дело было так:
Создаю в CВ Fild Manager новое поле, допустим "Увлечения" с типом Check Box (Multiple);
Задаю несколько десятков значений.
Регистрируюсь на сайте и отмечаю несколько значений.
Создаю новый UserList, в CB List Management.
В поле Filter в первом выпадающем списке выбираю созданное мной выше поле.
Во втором выпадающем списке выбираю Like. Как мне кажется этот параметр указывает на то что выбираться будут те записи поле "Увлечения" которых содержит искомое слово, указанное в третьем поле.

В общем при выборе любого типа фильтрации кроме Great Then список пуст(запись не находится)
При выборе Great Then и наличии нескольких пользователей, выводятся все, у которых отмечено несколько позиций в поле "Увлечения", причем независимо от того что отмечено.

Заглянул в базу данных, там в поле где хранится информация о критериях фильтрации информация записана не словами а двухзначными числами через знак процента что-то вида s(%2%57%57Like%87%45%56). Пытался подправить в базе критерий отбора вручную выбираю LIKE. Сохраняю. Но в листе по прежнему пусто.

Мои параметры Joomla 1.5.17 + CB 1.2.2 Кодировка базы данных UTF 8
--------------------------------------------------

Ну ближе к делу.

Как оказалось CB-фильтр не дружит с кирилицей. Искал решение на многих форумах но ничего толкового не нашел. Все попытки исправить данную ситуацию или решить в лоб или обойти не давали результата.

Моя идея может оказаться очередной идеей обойти проблему и я надеюсь удачной, насколько она реализуема решать профессионалам, я в этом ламер.

А теперь сама ИДЕЯ.

Я подумал раз CB фильтр не понимает кирилицы, ну так и не нада, ему можно подсунуть для фильтрации его любимую латиницу и пусть фильтрует себе на здровье.

Привязываться я буду к Check Box (Multiple), ибо именно фильтр типа LIKE по полю данного типа мне очень нужен.
Так вот идея заключается в том чтобы в промежуток после получения данных из формы типа Check Box (Multiple) заполняемой пользователем и перед занесением их в БД MySQL вставить процедуру транслитерации этих данных в латиницу. Данные будут представлять из себя массив из одного и более слов в кирилице, которые и должны быть транслитированы.

Код функции транслитерации, найденый мной в просторах гугла:
Код
function UpLow(&$string,$registr='up'){
$upper = 'АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯABCDEFGHIJKLMNOPQRSTUVWXYZ';

$lower = 'абвгдеёжзийклмнопрстуфхцчшщъыьэюяabcdefghijklmnopqrstuvwxyz';

if($registr == 'up') $string = strtr($string,$lower,$upper);
else $string = strtr($string,$upper,$lower);

} //function UpLow(&$string,$registr='up') может и не пригодится, но на всякий случай выложил.

 

function rus2lat($s) { // Функция обратимой перекодировки кириллицы в транслит.
// Сначала всё переводим в верхний регистр, причём не с помощью глючной strtoupper
UpLow($s);
//а потом только кириллицу в нижний

$s=str_replace('ЫА','yha',$s);
$s=str_replace('ЫО','yho',$s);
$s=str_replace('ЫУ','yhu',$s);
$s=str_replace('Ё','yo',$s);
$s=str_replace('Ж','zh',$s);
$rus = 'АБВГДЕЗИЙКЛМНОПРСТУФХЦ';
$lat = 'abvgdezijklmnoprstufxc';
$s = strtr($s, $rus, $lat);
$s=str_replace('Ч','ch',$s);
$s=str_replace('Ш','sh',$s);
$s=str_replace('Щ','shh',$s);
$s=str_replace('Ъ','qh',$s);
$s=str_replace('Ы','y',$s);
$s=str_replace('Ь','q',$s);
$s=str_replace('Э','eh',$s);
$s=str_replace('Ю','yu',$s);
$s=str_replace('Я','ya',$s);
$s=str_replace(' ','_',$s); // сохраняем пробел от перехода в %20
$s=str_replace(',','.h',$s); // сохраняем запятую
$s=str_replace('"','"',$s); // сохраняем кавычки
$s=rawurlencode($s); // Разрешённые символы URL - латинские буквы, точка, минус и подчёркивание
return $s;
} // function rus2lat($s)

Что мы результате получаем. В базе данных теперь у нас латиница, и по ней можно фильтровать наши поля в CB USER List. Чтобы латиница была только в нужном нам столбце можно организовать проверку по имени поля, а в админке добавить возможность выбора в виде чекбокса адаптировать или нет данное поле для фильтра. Так же нужно чтобы в админке была возможность посмотреть вариант данных в латинице(будет нужно для того чтобы создавать фильтры, хотя с другой стороны можно будет в MySQL глянуть).

Но если данные будут транслитированы то и отображаться в профиле они будут тоже латиницей. Для того чтобы такого не происходило перед выводом этих данных, их нужно будет транслитировать обратно. Код обратной транслитерации приведен ниже:
Код

function lat2rus($s) { // Функция обратной перекодировки транслита в кириллицу
$s=rawurldecode($s);
$s=str_replace('.h',',',$s);// возвращаем запятую
$s=str_replace('_',' ',$s);// возвращаем пробел
$s=str_replace('yh','Ы',$s);
$s=str_replace('yu','Ю',$s);
$s=str_replace('ya','Я',$s);
$s=str_replace('yo','Ё',$s);
$s=str_replace('shh','Щ',$s);
$s=str_replace('eh','Э',$s);
$s=str_replace('sh','Ш',$s);
$s=str_replace('ch','Ч',$s);
$s=str_replace('qh','Ъ',$s);
$s=str_replace('zh','Ж',$s);
$lat = 'abvgdezijklmnoprstufxcyq';
$rus = 'АБВГДЕЗИЙКЛМНОПРСТУФХЦЫЬ';
$s = strtr($s, $lat, $rus);
return $s;
} // function lat2rus($s)


Прямая и обратная транслитерации полностью обратимы на 100% - проверено!

Вот и все.
Только вот осуществить идею мне пока не по силам, не достаточно знаний (((
« Последнее редактирование: 16.05.2010, 00:06:36 от orsy »
*

orsy

  • Захожу иногда
  • 400
  • 23 / 1
  • Web-Factor Ukraine
Re: CB User List почему не работает фильтр?
« Ответ #1 : 14.05.2010, 19:49:47 »
Скажите хоть на сколько это реально и стоит ли выделка овчинки?
« Последнее редактирование: 16.05.2010, 00:08:04 от orsy »
*

SSStylish

  • Захожу иногда
  • 197
  • 10 / 0
Слишком сложно все, проще способ есть.

После создания самого значения Field Manager'e, в базу заносятся кракозябры.
Вот то, что занеслось, заменяем на нормальный текст в кодировке UTF-8.

Все фильтры юзерлистов будут работать.
*

orsy

  • Захожу иногда
  • 400
  • 23 / 1
  • Web-Factor Ukraine
Слишком сложно все, проще способ есть.

После создания самого значения Field Manager'e, в базу заносятся кракозябры.
Вот то, что занеслось, заменяем на нормальный текст в кодировке UTF-8.

Все фильтры юзерлистов будут работать.


у меня значения вариантов мультичекбокса в базе не крякозябрами, а нормальным тектом...
*

SSStylish

  • Захожу иногда
  • 197
  • 10 / 0
UTF-8?
У меня аналогично - все работает
*

orsy

  • Захожу иногда
  • 400
  • 23 / 1
  • Web-Factor Ukraine
UTF-8?
У меня аналогично - все работает

у меня в базу крякозябры заносятся только в ячейку с данными для фильтра
*

SSStylish

  • Захожу иногда
  • 197
  • 10 / 0
Все верно, а когда меняешь кракозябры на валидные значения не меняя синтаксис, что происходит?
*

orsy

  • Захожу иногда
  • 400
  • 23 / 1
  • Web-Factor Ukraine
Данных вариант решения есть на данном форуме, но он у меня почему-то не работает ((( и еще прикол такой фильтр LIKE так же не хочет у меня работать с числами и с численно буквенными значениями(имеется ввиду латиница). Работает только с чистой латиницей (((
*

SSStylish

  • Захожу иногда
  • 197
  • 10 / 0
Если не работает, копай синтаксис
Вот пример с моей базы:
s(`cb_searched` ='1' AND `cb_xcity` LIKE'Астрахань')
*

orsy

  • Захожу иногда
  • 400
  • 23 / 1
  • Web-Factor Ukraine
Если не работает, копай синтаксис
Вот пример с моей базы:
s(`cb_searched` ='1' AND `cb_xcity` LIKE'Астрахань')

уверен проблема действительно в синтаксисе, только вот куда копать не пойму, при прямом запросе к базе данных метод фильтрации типа LIKE работает на ура, видимо CB неверно строит запрос, только вот где он строит этот запрос я не могу найти...
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Ищу фильтр, выбор Область-Город и звуковой сигнал на новые объявления - кто знает?

Автор nick71

Ответов: 0
Просмотров: 1384
Последний ответ 24.03.2015, 13:11:17
от nick71
Заголовок списка (List) в теге h1 - как сделать?

Автор andre46

Ответов: 1
Просмотров: 1543
Последний ответ 14.02.2015, 17:05:17
от andre46
Нет доступа в User Manager

Автор Tier_WerWolf

Ответов: 0
Просмотров: 1527
Последний ответ 03.11.2013, 11:30:19
от Tier_WerWolf
Не работают вкладки Configuration и User Management

Автор Babyaka

Ответов: 2
Просмотров: 2178
Последний ответ 08.07.2013, 15:47:17
от Babyaka
Фильтр по полу в поиске и user листе

Автор rbarom

Ответов: 1
Просмотров: 1804
Последний ответ 02.08.2012, 06:56:58
от AlexSmirnov