Next Generation CMS :: Форум поддержки

Заинтересовала наша система? Тогда этот форум для Вас!

Вы не зашли.

#1 2010-01-24 23:58:42

mittus
Участник
Зарегистрирован: 2010-01-24
Сообщений: 155
Рейтинг :   

Вопрос по кодировке UTF-8

Движка в целом на данный момент не может функционировать в кодировке UTF-8, это я читал.

Вопрос следующий:
Возможно ли отдавать пользователю сайта данные в кодировке utf-8?
То-есть грубо говоря в шаблоне выдаваемом пользователю сайта использовать нужную кодировку. Админку при этом можно не трогать.

Если да, то что нужно менять?

Из моих предположений:
1. кодировку в htaccess проставлять не нужно, т.е. со стороны сервера кодировку не задаем. Данные будут браться из charset в шапке сайта
2. установить в шаблоне main.tpl charset=utf-8
3. перезалить все шаблоны, сохранив с помощью нормального текстового редактора в юникоде
4. изменить кодировку в базе данных
5...?

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

Спасибо

Не в сети

#2 2010-01-25 01:54:52

vitaly
Администратор
Откуда Россия
Зарегистрирован: 2008-10-08
Сообщений: 2,823
Рейтинг :   118 

Re: Вопрос по кодировке UTF-8

mittus, никто не тестировал к сожалению.
Но точно могу сказать, что могут возникнуть проблемы во всех регулярных REGEX'ах, т.к. для unicode'а они другие.

Может тебе подойдёт такой вариант - сайт работает в win1251, но при отдаче контента пользователю WEB сервер будет делать на лету перекодировку в UTF8?

Не в сети

#3 2010-01-25 06:09:37

mittus
Участник
Зарегистрирован: 2010-01-24
Сообщений: 155
Рейтинг :   

Re: Вопрос по кодировке UTF-8

С кодировкой попробую потестить, о результатах обязательно отпишусь.

Интересует возможность использования php в шаблонах..
Поскольку я планирую использовать вашу cms, как новостную часть сайта, а весь остальной сайт написан на html+css+js, без движки, я включаю динамичные вещи на сайте методом "echo file_get_contents" во все странички, таким образом редактируя только шаблон.

Не в сети

#4 2010-01-25 09:57:53

vitaly
Администратор
Откуда Россия
Зарегистрирован: 2008-10-08
Сообщений: 2,823
Рейтинг :   118 

Re: Вопрос по кодировке UTF-8

mittus, использовать PHP в шаблонах нельзя. Но если очень хочется, то можно - достаточно изменить всего 1 строку кода.
Какую именно можно найти в поиске, если не сможешь найти - пиши, укажу что и где менять smile

Не в сети

#5 2010-01-25 23:54:43

mittus
Участник
Зарегистрирован: 2010-01-24
Сообщений: 155
Рейтинг :   

Re: Вопрос по кодировке UTF-8

vitaly, спасибо за наводку,
заменил в index.php
    echo $tpl -> show($mainTemplateName);
на
    eval (' ?' . '>' . $tpl -> show($mainTemplateName) . '<' . '?php ');
и в темплейте стал обрабатываться пых smile

Я немного ошибся с местом для второго вопроса: http://ngcms.ru/forum/viewtopic.php?id=818, вы не могли бы перенести в соответствующий раздел?

Не в сети

#6 2010-01-26 09:16:13

mittus
Участник
Зарегистрирован: 2010-01-24
Сообщений: 155
Рейтинг :   

Re: Вопрос по кодировке UTF-8

Никак не могу найти файлы, которые отвечают за следующие вещи:
1. {ip} в комментариях "кто это?" хочу поменять на вывод самого IP ввиде ссылки той же.
2. "Цитата" фраза заключается в теги <b>, мне нужно заменить на <strong>
3. тег [spoiler], хочу попытаться переделать заданное "Раскрыть" на "Показать", "Спрятать" в зависимости от состояния, show/hide.

В идеале конечно тег должен быть приблизительно таким: "[hide="спрятать" show="показать"]...[/hide]", где можно редактировать текст исходного и конечного состояния ссылки хайда.

Еще кажется тег <!--nextpage--> не работает (либо я не понял, как его правильно использовать)
И при использовании тега <!--more--> добавляется нежелательное "Раздел..."

+ в добавлении новости не хватает тега  (или я накосячил, хотя исходники админки не ковырял вообще, только темплейты сайта редактировал)

Изменено mittus (2010-01-26 09:31:20)

Не в сети

#7 2010-01-26 12:04:25

Wolverine
Модератор
Откуда Домодедово
Зарегистрирован: 2008-10-13
Сообщений: 3,538
Рейтинг :   160 
Сайт

Re: Вопрос по кодировке UTF-8

mittus пишет:

2. "Цитата" фраза заключается в теги <b>, мне нужно заменить на <strong>

\engine\includes\classes\parse.class.php
Править вот в этой строке

$content    =    preg_replace("#\[quote\]\s*(.*?)\s*\[/quote\]#is", "<blockquote><b>".$lang['bb_quote']."</b><br />$1</blockquote>",$content);

mittus пишет:

Еще кажется тег <!--nextpage--> не работает (либо я не понял, как его правильно использовать)

Тег <!--nextpage--> работает. Используется в  теле полной новости для создания страниц в новости типа /news/page1.html, /news/page2.html

mittus пишет:

И при использовании тега <!--more--> добавляется нежелательное "Раздел..."

Не очень понял, куда добавляется?

mittus пишет:

1. {ip} в комментариях "кто это?" хочу поменять на вывод самого IP ввиде ссылки той же.

engine\plugins\comments\inc\comments.show.php
шаманить со строчкой

$tvars['vars']['ip'] = "<a href=\"http://www.nic.ru/whois/?ip=$row[ip]\" title=\"".$lang['whois']."\">".$lang['whois']."</a>";

хотелось бы конечно, чтобы каждый коммент имел якорь для перехода сразу к этому комментарию. Сама фраза Кто это? находится в \engine\lang\russian\site\comments.ini

mittus пишет:

3. тег [spoiler], хочу попытаться переделать заданное "Раскрыть" на "Показать", "Спрятать" в зависимости от состояния, show/hide.

Сейчас тегу можно задать только один текст spoiler="Вкл/Выкл". Сам парсинг тега спойлера идет в \engine\includes\classes\parse.class.php

// Process spoilers
		while (preg_match("#\[spoiler\](.*?)\[/spoiler\]#is", $content, $null))
			$content	=	preg_replace("#\[spoiler\](.*?)\[/spoiler\]#is", '<div class="spoiler"><div class="sp-head" onclick="toggleSpoiler(this.parentNode, this);"><b></b>'.$lang['bb_spoiler'].'</div><div class="sp-body">$1</div></div>', $content);

		while (preg_match("#\[spoiler=\"(.+?)\"\](.*?)\[/spoiler\]#is", $content, $null))
			$content	=	preg_replace("#\[spoiler=\"(.+?)\"\](.*?)\[/spoiler\]#is", '<div class="spoiler"><div class="sp-head" onclick="toggleSpoiler(this.parentNode, this);"><b></b>$1</div><div class="sp-body">$2</div></div>', $content);

А  там уже в зависимости от знаний PHP))

Изменено Wolverine (2010-01-26 12:33:21)

Не в сети

#8 2010-01-26 13:14:20

mittus
Участник
Зарегистрирован: 2010-01-24
Сообщений: 155
Рейтинг :   

Re: Вопрос по кодировке UTF-8

Wolverine, Насчет тега <!--more-->, создал тестовую новость: http://legend.zxs.ru/news/2010/01/26/prevyu/
Ее код таков:

превью
<!--more-->
полная новость
:angry:

А на деле получается следующее:

превью
Раздел..
полная новость

По остальным вопросом большое спасибо за развёрнутую информацию, все необходимые фиксы внёс smile Кроме спойлера. С ним отдельно додумывать буду.

Не в сети

#9 2010-01-26 14:04:47

Wolverine
Модератор
Откуда Домодедово
Зарегистрирован: 2008-10-13
Сообщений: 3,538
Рейтинг :   160 
Сайт

Re: Вопрос по кодировке UTF-8

Дело скорее всего в шаблоне news.full.tpl. Покажи его код.

Изменено Wolverine (2010-01-26 14:05:09)

Не в сети

#10 2010-01-26 14:09:38

mittus
Участник
Зарегистрирован: 2010-01-24
Сообщений: 155
Рейтинг :   

Re: Вопрос по кодировке UTF-8

Wolverine, точно, странно только то, что это было в tpl по-умолчанию. Я менял только окружающую оболочку, а в сердцевине новости оставлял исходный код:

[icon]<img src="{icon}" alt="" border="0" />[/icon][update]<br />{l_updated}{update}<br /><br />[/update]{short-story} [more]Раздел..[/more] {full-story}<div style="padding: 10px; text-align:center;">{pagination}</div><br />[isplugin finance][finance]<br />Стоимость доступа составляет: ${fin_price} [fin_on] <b>(оплачено)</b>[/fin_on][fin_off](не оплачено)[/fin_off][/finance][/isplugin]<br />{plugin_similar_tags}[isplugin rating]{plugin_rating}[/isplugin][isplugin tags][tags]<div align="right"><img src="{tpl_url}/images/tag.png" width="13" height="13" alt="Мета-теги" /> {tags}</div>[/tags][/isplugin]

Удалил содержимое между тегами [more][/more] и всё встало на свои места. Еще раз спасибо smile

Не в сети

#11 2010-03-19 14:24:08

torg
Участник
Откуда Россия
Зарегистрирован: 2009-04-23
Сообщений: 130
Сайт

Re: Вопрос по кодировке UTF-8

vitaly пишет:

Может тебе подойдёт такой вариант - сайт работает в win1251, но при отдаче контента пользователю WEB сервер будет делать на лету перекодировку в UTF8?

Перекодировка на лету не есть хорошо. Сервак по сути нагружается больше. Лучше когда всё в одной кодировке.
По идее кодировка должна быть и там и там одна. То есть cms делаем только на 1251 или utf.
Вообще я за выбор версий cms люди качали бы на выбор сборку 1251 или utf. Так делают видел современные движки форумов. Удобно выбирать под свой хостинг, под свои задачи. Так как не везде можно состыковать кодировки в силу разных настроек хостеров и совместимости cms с ними.

Не в сети

Подвал раздела

Работает на FluxBB