Тезаурус

Обсуждение CMS Made Simple в России.

Moderators: iturbay, wdwp

Post Reply
User avatar
Jamaysky
Forum Members
Forum Members
Posts: 23
Joined: Thu Mar 27, 2008 7:35 pm

Тезаурус

Post by Jamaysky »

Подскажите, есть ли в CMSMS модуль, чтобы сделать алфавитный указатель для словаря типа вот такого:

http://www.slovarik.kiev.ua/ojegov/a.html
Sonya

Re: Тезаурус

Post by Sonya »

User avatar
Jamaysky
Forum Members
Forum Members
Posts: 23
Joined: Thu Mar 27, 2008 7:35 pm

Re: Тезаурус

Post by Jamaysky »

Sonya wrote: Есть, тут http://dev.cmsmadesimple.org/projects/glossary
Спасибо, смотрю. Пока не понял как его создать из готовой базы терминов (всего около 3000, вручную вводить долго)
Last edited by Jamaysky on Wed Jul 01, 2009 7:15 pm, edited 1 time in total.
ZYV
Language Partners
Language Partners
Posts: 868
Joined: Tue Nov 15, 2005 9:08 pm

Re: Тезаурус

Post by ZYV »

Написать скрипт...
unsigned double ZYV;
User avatar
Jamaysky
Forum Members
Forum Members
Posts: 23
Joined: Thu Mar 27, 2008 7:35 pm

Re: Тезаурус

Post by Jamaysky »

ZYV wrote: Написать скрипт...
Базу я в CMSMS импортировал - оказалось довольно просто - таблица cms_module_glossary_term
В ней 3 поля term_id(int) , term(text) и definition(text) практически один в один совпали с моими.
А вот дальше пошло хуже. Несмотря на то, что все в utf-8, в Firefox и Опере лезут всем хорошо известные ромбики �.
А вот в ИЕ, как ни странно - все хорошо.
А темплейты придется редактировать - такого алфавитного указателя, как мне надо (смотри ниже), нет.

А Б В Г Д Е...Я


P.S. Только что переехал на 1.6 - не помогло.
Last edited by Jamaysky on Thu Jul 02, 2009 5:02 pm, edited 1 time in total.
Sonya

Re: Тезаурус

Post by Sonya »

hogofogo wrote: А вот дальше пошло хуже. Несмотря на то, что все в utf-8, в Firefox и Опере лезут всем хорошо известные ромбики
Ромбики лезут, потому что там с *не* mb_ функциям все сделано, т.е вместо mb_strtolower стоит strtolower и так далее. Я где-то уже выкладывала в англоязычной ветке utf8 версию, но не могу найти (возможно, канадцу опять не понравилось). Прицепляю аттачмент сюда. Сравни с оригиналом.
Attachments

[The extension txt has been deactivated and can no longer be displayed.]

User avatar
Jamaysky
Forum Members
Forum Members
Posts: 23
Joined: Thu Mar 27, 2008 7:35 pm

Re: Тезаурус

Post by Jamaysky »

Sonya wrote: Ромбики лезут, потому что там с *не* mb_ функциям все сделано, т.е вместо mb_strtolower стоит strtolower и так далее. Я где-то уже выкладывала в англоязычной ветке utf8 версию, но не могу найти (возможно, канадцу опять не понравилось). Прицепляю аттачмент сюда. Сравни с оригиналом.
Ромбиков как не бывало! Сам бы кучу времени на это ухлопал... Канадцу - незачет.  :)
Спасибо большое, буду дальше копать. 
ZYV
Language Partners
Language Partners
Posts: 868
Joined: Tue Nov 15, 2005 9:08 pm

Re: Тезаурус

Post by ZYV »

Пока PHP6 не вышла надо это решать перегрузкой функций в php.ini, а не добавлением mb_ ... mb_ скоро вообще не будет.
unsigned double ZYV;
User avatar
Jamaysky
Forum Members
Forum Members
Posts: 23
Joined: Thu Mar 27, 2008 7:35 pm

Re: Тезаурус

Post by Jamaysky »

ZYV wrote: Пока PHP6 не вышла надо это решать перегрузкой функций в php.ini, а не добавлением mb_ ... mb_ скоро вообще не будет.
Да, тут не все просто... Тот патч, что прислала Sonya (еще раз спасибо!), работает, но он к более старой версии модуля - 0.5, и по сути заменяет новый модуль. А сейчас уже версия 0.6.6 и автор многое переделал, добавил полезную функциональность. Пробовал править по образцу и подобию новый модуль-пока не выходит.
Поставил в php.ini
mbstring.func_overload = 7 (или 2) - еще хуже,  одни ромбики.

P.S. Разобрался. У функции ucfirst(), используемой в модуле, по перегрузке просто нет mb_ версии.
Ее надо либо написать (уже есть в коде у Sonya), либо (в моем случае - мне больше понравилось когда всё в нижнем регистре), просто удалить и включить перегрузку
mbstring.func_overload = 2

P.P.S вот еще версия mb_ucfirst от друпалеров, для разнообразия.

Last edited by Jamaysky on Fri Jul 03, 2009 8:56 am, edited 1 time in total.
User avatar
Jamaysky
Forum Members
Forum Members
Posts: 23
Joined: Thu Mar 27, 2008 7:35 pm

Re: Тезаурус

Post by Jamaysky »

Поставил сегодня Glossary 0.6.8, уже почти все как надо (Sonya - good job!)
Только в админке внес небольшие поправки (опять ромбики, чтоб их!) из-за однобайтовой truncate
В listterms.tpl заменил 21-ю и 23-ю строчки:
21  namelink}">{$entry->name|mb_truncate:40:"...":'UTF-8'}
23  {$entry->definition|mb_truncate:80:"...":'UTF-8'}

В /lib/smarty/plugins положил вот такой modifier.mb_truncate.php


* Name:     mb_truncate
* Purpose:  Truncate a string to a certain length if necessary,
*           optionally splitting in the middle of a word, and
*           appending the $etc string or inserting $etc into the middle.
*           This version also supports multibyte strings.
* @link http://smarty.php.net/manual/en/languag ... uncate.php
*          truncate (Smarty online manual)
* @author   Guy Rutenberg based on the original
*           truncate by Monte Ohrt
* @param string
* @param integer
* @param string
* @param string
* @param boolean
* @param boolean
* @return string
*/
function smarty_modifier_mb_truncate($string, $length = 80, $etc = '...', $charset='UTF-8',
                                 $break_words = false, $middle = false)
{
   if ($length == 0)
       return '';

   if (strlen($string) > $length) {
       $length -= min($length, strlen($etc));
       if (!$break_words && !$middle) {
           $string = preg_replace('/\s+?(\S+)?$/', '', mb_substr($string, 0, $length+1, $charset));
       }
       if(!$middle) {
           return mb_substr($string, 0, $length, $charset) . $etc;
       } else {
           return mb_substr($string, 0, $length/2, $charset) . $etc . mb_substr($string, -$length/2, $charset);
       }
   } else {
       return $string;
   }
}

/* vim: set expandtab: */
?>

Post Reply

Return to “Russian - русский”