LiveInternetMail.ru
Форум русской поддержки Joomla!® CMS
26.05.2013, 04:35:40 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
   
   Начало   Поиск Joomla 2.5 FAQ Joomla 1.5 FAQ Joomla 1.0 FAQ Правила форума Новости Joomla Войти Регистрация Помощь  
Страниц: [1]   Вниз
  Добавить закладку  |  Печать  
Автор Тема: Есть ли ограничение на количество категорий?  (Прочитано 963 раз)
0 Пользователей и 1 Гость смотрят эту тему.
ABTOP
JComments Tester
*

Репутация: +32/-4
Offline Offline

Пол: Мужской
Сообщений: 565



« : 24.10.2012, 07:03:58 »

Дано: сайт с огромным количеством категорий, сотни и сотни.

Проблема: При сотнях категорий доступных для комментирования, дойдя до определённого момента, становится невозможно добавить ещё категорий - настройки просто не сохраняются. Гипотеза - превышение максимального допустимого кол-ва инфы в значении для enable_categories.

Вопрос: сколько данных можно теоретически хранить в поле для enable_categories и в какое практическое число категорий это переводится?
« Последнее редактирование: 24.10.2012, 11:26:18 от smart » Записан
smart
Администратор
*******

Репутация: +1206/-14
Offline Offline

Пол: Мужской
Сообщений: 7469


снова дома...


« Ответ #1 : 24.10.2012, 11:25:43 »

Тип поля для хранения значения - TEXT, а значит в него поместится 65535 символов. Это очень много. Ну к примеру - 9 однозначных, 99 двузначных, 999 трехзначных это 3024 символа + 1106 запятых (как разделитель), итого, для хранения информации о 1107 категориях нужно всего 4131 символа. А в поле можно впихнуть раз в 10 больше.

Другой вопрос - а зачем так много категорий? И может быть стоит предусмотреть настройку - Все категории?
Записан
ABTOP
JComments Tester
*

Репутация: +32/-4
Offline Offline

Пол: Мужской
Сообщений: 565



« Ответ #2 : 24.10.2012, 12:01:07 »

Значит, моя гипотеза неправильна. Это хорошо. Просто когда человек включал все категории тем скриптом, который вы мне давеча написали, то у него первые по списку категории включились, а последние - нет. При попытке добавить ещё категорий в настройках - настройки не сохраняются.

Другой вопрос - а зачем так много категорий?
Я, конечно, посоветовал этот список реорганизовать на предмет сокращения, но не знаю на сколько это возможно - сайт живой.

И может быть стоит предусмотреть настройку - Все категории?
Все, кроме "Uncategorized". Думаю, что это хорошая идея. Для определённого контингента это вполне уместно, плюс не надо будет бегать в настройки для включения новых категорий.
Записан
ABTOP
JComments Tester
*

Репутация: +32/-4
Offline Offline

Пол: Мужской
Сообщений: 565



« Ответ #3 : 27.10.2012, 11:40:58 »

А как насчёт такой идеи: значение для jtxf=JCommentsSaveSettingsAjax&jtx64=
становится слишком большим и не передаётся полностью через POST?
Я так подумал потому, что у меня посередине этого значения вылазит такое предупреждение:
... FireBug request size limit has been reached by FireBug. ...

Для справки, на сайте 530 секций и свыше 5300 категорий.
Через админку удаётся включить примерно одну пятую списка категорий, а дальше начинается Invalid Token.
Записан
smart
Администратор
*******

Репутация: +1206/-14
Offline Offline

Пол: Мужской
Сообщений: 7469


снова дома...


« Ответ #4 : 29.10.2012, 11:23:53 »

А как насчёт такой идеи: значение для jtxf=JCommentsSaveSettingsAjax&jtx64=
становится слишком большим и не передаётся полностью через POST?
Вообще изначально я и объединил параметры и завернул их в base64, так как количество параметров было просто запредельное. Чтобы они не уместились в POST, данных должно быть больше тех же 65кб. С другой стороны, а вот если на том сайте в каком либо модуле выбрать ВСЕ категории - сохранятся параметры или нет?

Слушай, есть простое решение:
Код
UPDATE `jos_jcomments_settings` SET `value` = '*' WHERE `name` = 'enable_categories';

Я что-то об этом забыл... Меня давно просил о подобном beliyadm и я это реализовал, а вот почему-то в настройки не вынес. Но в коде точно поддерживается:
Код
	/**
* Checks if comments are enabled for specified category
*
* @param  int $id Category ID
* @return boolean
*/

public static function checkCategory( $id )
{
$config = JCommentsFactory::getConfig();
$categories = $config->get('enable_categories', '');
$ids = explode(',', $categories);
 
return ($categories == '*' || ($categories != '' && in_array($id, $ids)));
}
Записан
ABTOP
JComments Tester
*

Репутация: +32/-4
Offline Offline

Пол: Мужской
Сообщений: 565



« Ответ #5 : 29.10.2012, 11:37:23 »

Спасибо, буду пробовать.
Записан
ABTOP
JComments Tester
*

Репутация: +32/-4
Offline Offline

Пол: Мужской
Сообщений: 565



« Ответ #6 : 02.11.2012, 11:39:51 »

Звёздочка работает прекрасно, надо бы только сделать для неё пользовательское взаимовоздействие.
Проблема ещё в том, что со звёздочкой ни одна из категорий не высвечивается, что обманчиво.
Предлагаю нечто такое:
Записан
Physicist
Support Team
*****

Репутация: +182/-0
Offline Offline

Пол: Мужской
Сообщений: 1010


Рябов Денис


« Ответ #7 : 02.11.2012, 12:38:43 »

Сергей, а ты сжимай параметры. Примерно так (это кусок из класса):
Код:
/**
* @var int gzip compression level (1-9, 1 is faster, 9 is smaller)
*/
public static $gzLevel = 9;

/**
* Compress and convert $str into url-safe format
* @static
* @param string $str
* @return string
*/
public static function encode($str)
{
$str = gzdeflate($str, self::$gzLevel);
$str = base64_encode($str);
$str = rtrim($str, '=');
$str = strtr($str, '+/', '-_'); // RFC 4648 'base64url' encoding
return $str;
}

/**
* Decode data encoded by encode method
* @static
* @param string $str
* @return string (or false on error)
*/
public static function decode($str)
{
$str = strtr($str, '-_', '+/');
$pad = strlen($str) % 4;
if($pad)
$str .= str_repeat('=', 4 - $pad);
$str = @base64_decode($str);
$str = @gzinflate($str);
return $str;
}
Записан
smart
Администратор
*******

Репутация: +1206/-14
Offline Offline

Пол: Мужской
Сообщений: 7469


снова дома...


« Ответ #8 : 02.11.2012, 12:43:04 »

Сергей, а ты сжимай параметры
А как их сжать на JavaScript? Изначальная проблема в чем - на форме много элементов, я собираю их значения, пакую и заворачиваю в base64. Как завернуть в base64 на JS я знаю, а вот паковать не думал.

Но вопрос прежний - а в параметрах публикации модулей можно выбрать все 5000 категорий и все сохраняется без проблем?

p.s. По поводу выноса пункта Все категории в настройки - обязательно вынесу, нужно только решить вопрос с языковой константой для этого.
Записан
Physicist
Support Team
*****

Репутация: +182/-0
Offline Offline

Пол: Мужской
Сообщений: 1010


Рябов Денис


« Ответ #9 : 02.11.2012, 12:52:17 »

Можно использовать https://github.com/dankogai/js-deflate , но я не уверен насчет бинарной совместимости с php'шным gzdeflate.
Записан
ABTOP
JComments Tester
*

Репутация: +32/-4
Offline Offline

Пол: Мужской
Сообщений: 565



« Ответ #10 : 02.11.2012, 20:40:07 »

p.s. По поводу выноса пункта Все категории в настройки - обязательно вынесу, нужно только решить вопрос с языковой константой для этого.
Чтобы этот момент облегчить, можно сделать-подругому.
Сейчас нарисую.

Вот, например, можно так.
Идея в том, что при выборе "Все категории", селектор затуманивается.
« Последнее редактирование: 02.11.2012, 21:29:35 от ABTOP » Записан
smart
Администратор
*******

Репутация: +1206/-14
Offline Offline

Пол: Мужской
Сообщений: 7469


снова дома...


« Ответ #11 : 02.11.2012, 21:55:37 »

Предложенный вариант наоборот усложняет - сейчас я просто воспользовался глобальной константой JOPTION_ALL_CATEGORIES и все, можно ничего не выдумывать, а для нарисованного варианта придется добавлять свою константу или автоматом корректировать JOPTION_ALL_CATEGORIES (просто во многих языках она имеет вид  "- Все категории -" и придется удалять "- ". А это не очень хорошо, точнее не очень предсказуемо).
Записан
ABTOP
JComments Tester
*

Репутация: +32/-4
Offline Offline

Пол: Мужской
Сообщений: 565



« Ответ #12 : 02.11.2012, 22:03:57 »

не ну это просто вариант оформления, чо.
Я же не в курсах про технические детали....
Кстати, про константу, ползёт уведомление:

Notice: Use of undefined constant JOPTION_ALL_CATEGORIES - assumed 'JOPTION_ALL_CATEGORIES' in D:\xampp\htdocs\j16\administrator\components\com_jcomments\admin.jcomments.php on line 1067
Записан
smart
Администратор
*******

Репутация: +1206/-14
Offline Offline

Пол: Мужской
Сообщений: 7469


снова дома...


« Ответ #13 : 03.11.2012, 13:19:02 »

Версия Joomla? Я проверял на 2.5, никаких ошибок нет.
Записан
ABTOP
JComments Tester
*

Репутация: +32/-4
Offline Offline

Пол: Мужской
Сообщений: 565



« Ответ #14 : 03.11.2012, 14:08:59 »

Версия Joomla? Я проверял на 2.5, никаких ошибок нет.
Ошибка как на J1.7.5, так и на J2.5.7
Присутствует только в "Settings".

Записан
smart
Администратор
*******

Репутация: +1206/-14
Offline Offline

Пол: Мужской
Сообщений: 7469


снова дома...


« Ответ #15 : 03.11.2012, 14:16:49 »

Судя по всему какие-то проблемы с языковыми файлами Joomla, ибо эта константа есть довольно давно и в 2.5.7 точно присутствует:

Языковая константа (/administrator/language/en-GB/en-GB.ini):
Код:
JOPTION_ALL_CATEGORIES="- All Categories -"

Языковая константа (/administrator/language/ru-RU/ru-RU.ini):
Код:
JOPTION_ALL_CATEGORIES="- Все категории -"

Скриншот (сделан в административной панели demo-j17.joomlatune.com):


Записан
ABTOP
JComments Tester
*

Репутация: +32/-4
Offline Offline

Пол: Мужской
Сообщений: 565



« Ответ #16 : 03.11.2012, 14:46:39 »

$option->text = JText::_('JOPTION_ALL_CATEGORIES');

С одинарными кавычками работает безошибочно.
Записан
smart
Администратор
*******

Репутация: +1206/-14
Offline Offline

Пол: Мужской
Сообщений: 7469


снова дома...


« Ответ #17 : 03.11.2012, 15:16:01 »

Блин, а я там без кавычек написал? Сорри, исправлю. Моя вина...
Записан
ABTOP
JComments Tester
*

Репутация: +32/-4
Offline Offline

Пол: Мужской
Сообщений: 565



« Ответ #18 : 03.11.2012, 15:27:08 »

Мелочи жизни.
Что же делать с поддержкой для J15? Там же этой константы нетути.
Записан
smart
Администратор
*******

Репутация: +1206/-14
Offline Offline

Пол: Мужской
Сообщений: 7469


снова дома...


« Ответ #19 : 03.11.2012, 15:31:41 »

Что же делать с поддержкой для J15? Там же этой константы нетути.
Нет, точно так же как и в 1.0... Но мы же не можем бесконечно таскать за собой поддержку их? Не, эта небольшая доработка будет доступна только в 2.5. Плюс я планирую выпустить текущее обновление + еще возможно пару в линейке 2.3.х и на этом эту ветку завершить. В следующей ветке никакой поддержки 1.0 и 1.5 уже не будет, а все силы будут брошены на развитие поддержки 2.5 и 3.0.
Записан
Страниц: [1]   Вверх
  Добавить закладку  |  Печать  
 
Перейти в:  

Рейтинг@Mail.ru Rambler Top100 Powered by SMF 1.1.18 | SMF © 2006, Simple Machines

Joomlaforum.ru is not affiliated with or endorsed by the Joomla! Project or Open Source Matters.
The Joomla! name and logo is used under a limited license granted by Open Source Matters
the trademark holder in the United States and other countries.

LiveInternet