Вопрос про красивый вывод текста.

Главные вкладки

Аватар пользователя Alex_R Alex_R 23 апреля 2010 в 13:37

Посмотрел много материалов по теме типографики на этом сайте и понял, что не все в этом деле хорошо (правда все материалы 1,5 и более летней давности - может что с той поры изменилось?)
В принципе правильные кавычки и длинное тире - это замечательно (если хорошо работает), но меня больше интересует, то, чего не видел ни на одном русскоязычном сайте, а именно грамотный перенос слов по слогам, если даже не на этапе вывода в столбец произвольной ширины, то и на этапе ввода текста в столбец, ширина которого в ЕМах задана фиксированно в некоторых случаях было бы очень полезно (типа колокольчика на печатной машинке).

Если ничего подобного до сих пор не реализовано, то не видел ли кто в инете русского словаря с делением слов по слогам?

Комментарии

Аватар пользователя Dan Dan 24 апреля 2010 в 16:34

Вроде никто не пытался. Но сделать это не сложно -- почитайте о фильтрах друпала. Даже если вы не знакомы с архитектурой друпала написание модуля займёт у Вас не более одного дня (знание PHP таки нужно).

Аватар пользователя Alex_R Alex_R 30 мая 2010 в 21:06

Dan wrote:
Вроде никто не пытался. Но сделать это не сложно -- почитайте о фильтрах друпала. Даже если вы не знакомы с архитектурой друпала написание модуля займёт у Вас не более одного дня (знание PHP таки нужно).

Спасибо за идею. Вроде с механизмом фильтров разобрался - ничего сложного в нем нет. Действительно подобное написать очень просто, однако, если я все правильно понял, то фильтр работает с текстом перед его помещением в базу данных, мне же кажется более логичным в данном случае обработку проводить после извлечения текста из базы данных,перед показом пользователю. А чтобы в базе он лежал как есть. Как это сделать прописав в соответствующие .tpl.php темы тоже понятно. Хочется услышать в чем плюсы и минусы подобного варианта, по сравнению с созданием фильтра?

Аватар пользователя Dan Dan 30 мая 2010 в 23:16

"Alex_R" wrote:
фильтр работает с текстом перед его помещением в базу данных

Нет, данные сохраняются в БД в том виде, в котором их ввёл пользователь. Текст, обработанный фильтрами попадает в кэш, откуда потом и отдаётся.

Аватар пользователя Alex_R Alex_R 31 мая 2010 в 13:48

Dan wrote:
"Alex_R" wrote:
фильтр работает с текстом перед его помещением в базу данных

Нет, данные сохраняются в БД в том виде, в котором их ввёл пользователь. Текст, обработанный фильтрами попадает в кэш, откуда потом и отдаётся.

Спасибо! с этим разобрался. Сделал фильтр - не заработало. Sad
Решил проверить как вообще работает функция, в папке темы сосздал папку 'perenos' и скопировал в нее файлы дистрибутива функции.
В папке темы создал файл test.php. Вставил в него 3 строчки

<?php require_once 'perenos/hypher.php';
$hy_ru = new phpHypher('perenos/hyph_ru_RU.conf');
print 
$hy_ru->hyphenate('В этой строке должны быть расставлены знаки переноса по правилам русского языка.''UTF-8') ; 
?>

Все работает нормально, и при запуске этого файла в строке расставляются переносы, следвательно функция работает.
Пытаюсь вставить эти же три строчки в page.tpl.php данной темы непосредственно перед выводом контента,
строчка на страницу выводится, но знаков переноса в ней уже нет. Похоже то же происходит и в сделанном мной фильтре. Но вот в чем моя ошибка моих знаний Друпала и PHP видимо недостаточно. Sad

Аватар пользователя Alex_R Alex_R 1 июня 2010 в 17:56

Разобрался, точнее "методом тыка" добился результата.
В page.tpl.php перед путями необходимо ставить обратный слэш, а в теле модуля у меня вообще получилось только написав полный путь 'sits/all/modules/...../perenos/hyph_ru_RU.conf'.
Следовательно возник вопрос, а как в теле модуля узнать в какой директории он установлен?

Аватар пользователя Alex_R Alex_R 1 июня 2010 в 14:31

И еще вопрос
Функция позволяет настраивать символ мягкого перевода и вместо стандартного "&shy" ставить другой.
Я плохо представляю зачем это может понадобиться. Имеет ли смысл давать возможность это настраивать в настройках фильтра? Кто нибудь может показать пример зачем это может быть нужно?

Аватар пользователя Alex_R Alex_R 2 июня 2010 в 0:58

Dan wrote:
Не понимаю, как связан фильтр с темизацией?

Никак не связан. Просто функцию можно подключить в разных местах. Сперва подключил в новом фильтре - не заработала. Начал разбираться, создал просто Php файл - заработала. Воткнул в тему, опять не работает, добавил в пути слэш - заработала.
Добавил слэш в фильтре - все равно не работает. прописал полный путь 'sites/all/.....' - заработало.

Удалил все лишнее из темы и сейчас модуль фильтра работает.

Осталось два вопроса, которые на работоспособность его лично у меня не влияют:
1. почему нужно прописывать полный путь?
2. как его (путь) узнать? Ведь модуль может быть установлен по разным путям...

Ну и совсем не важный вопрос я задал в предыдущем комменте.

Аватар пользователя Dan Dan 2 июня 2010 в 11:09

"Alex_R" wrote:
Функция позволяет настраивать символ мягкого перевода и вместо стандартного "&shy" ставить другой.

Не в курсе.

"Alex_R" wrote:
Просто функцию можно подключить в разных местах.

Вот в теме её точно не можно подключать. Это надо делать модулем и подключать в модуле, а не теме.

1. Потому что модули могут опрашиваться из разных мест.
2. [ru-api=drupal_get_path]drupal_get_path[/ru-api]

Аватар пользователя Alex_R Alex_R 2 июня 2010 в 15:54

Dan wrote:
[ru-api=drupal_get_path]drupal_get_path[/ru-api]

Спасибо! Все работает!
На днях выложу готовый фильтр (как доделаю страницу настроек). Вдруг кому-нибудь пригодится.

Аватар пользователя Alex_R Alex_R 3 июня 2010 в 20:26

Еще возник вопрос, а как поисковики относятся к наличию &shy внутри слов? Умеют они их игнорировать? не повлияет подобное форматирование текста на индексацию?