phpBB и Drupal - почти все готово, проблема с кодировкой блока
Прислано: Zlata
пт, 10/08/2007 - 15:09
Интегрировала phpBB в Drupal, не скажу, что все гладко прошло, были проблемы, но теперь все работает хорошо.
Кроме блока "новое на форуме", который будет отображаться сбоку на всех страницах Drupal-сайта. В нем иероглифы пока. Пыталась поменять в модуле phpbb настройки, но не получилось. На drupal.org с такой проблемой безполезно видимо идти - они юзают английский и у них конечно все ОК :)
вот и вопрос :)
- Zlata's blog
- Для комментирования войдите или зарегистрируйтесь
да, забыла добавить ссылку на тестовый хостинг: http://umamonta.u1730.netangels.ru/
там внизу блок "новое на форуме"
- Для комментирования войдите или зарегистрируйтесь
А регистрация единая на форуме и сайте?
- Для комментирования войдите или зарегистрируйтесь
А регистрация единая на форуме и сайте?
да, можете сами протестировать по ссылке - это все рабочее :)
- Для комментирования войдите или зарегистрируйтесь
Да, я уже попробовала. Хорошо получилось, а я поставила на свой сайт SMFforum.
- Для комментирования войдите или зарегистрируйтесь
Насколько я понимаю - желательнее(а может и единственный вариант) - чтобы phpBB работал c utf-8-ой кодировкой.
Есть на этот счет разьяснения (как приучить). Либо - в блоке делать смену кодировки, посредством php.
С точки зрения производителности - наверное второй вариант будет быстрее.
ЗЫ - у phpbb у Вас 1251, у drupal - как водится utf-8
ЗЗЫ - регистрация сквозная не работает, русские имена пользователей не пролазят в phpBB.
- Для комментирования войдите или зарегистрируйтесь
не помню как, но я это одолел, в _phpbb_encode и _phpbb_decode приходилось отключать перекодировку, и все работало, но зависило от версии пхп - иногда отключать не требовалось... блок тоже работал, но обрезались длинные названия некорректно, поэтому забил на него
ЗЫ. а еще блоку пофиг на права, показывает все последние посты, это не есть хорошо
- Для комментирования войдите или зарегистрируйтесь
У меня все оказалось очень просто: в phpBB settings ставим в поле character encoding значение utf8 и для phpbb, и для Drupal. И с русскими именами все в порядке, и русские топики в блоке выводятся корректно
- Для комментирования войдите или зарегистрируйтесь
А можете кинуть ссылку? - очень хочу посмотреть, как это работает.
- Для комментирования войдите или зарегистрируйтесь
Я понял, что это не перенос форума, а интеграция phpBB в Drupal. Т.е. движки разные?
Если так есть МОД для phpBB "recivtopic" кажется называется. У меня работает и отображает все правильно. Смотрите gorodlgov.ru блок "Люди пишут"
В догонку: Я уже поднимал эту тему. Смотри пост http://drupal.ru/node/5263 там и файлик пропатченный есть для мода. Мод скачаешь тут Удачи.
- Для комментирования войдите или зарегистрируйтесь
в итоге отказались от этой идеи. все работает по отдельности.
поищите поиском, были уже более успешные опыты по этой проблеме!
- Для комментирования войдите или зарегистрируйтесь
Интеграция русских phpbb2 и drupal 5.5 без проблем с кодировками:
1. Берем модуль phpbb 5.x-1.x-dev (http://drupal.org/node/32818/release)
2. Устанавливаем все по инструкции http://kepp.net/drupal-5.1/ (ENG)
3. Когда все заработает:
а) переводим таблицу форума phpbb в кодировку utf-8 (тут уж кто на что горазд, я дла этого использую phpmyadmin). По окончании этой процедуры все русские буквы на форуме отображаются в виде вопросиков
б) вносим изменения в файл "forum/db/mysql4.php" (для сервера, использующего БД mysql версии 4+ - таких большинство):
находим строки:
54: $this->dbname = $database;
55: $dbselect = mysql_select_db($this->dbname);
добавляем после них еще одну:
54: $this->dbname = $database;
55: $dbselect = mysql_select_db($this->dbname);
56: mysql_query("set names 'cp1251';");
Обновляем страницу форума - видим, что все снова на русском.
в) Теперь решаем вопрос взаимоинтеграции - модуль phpbb осуществляет перекодирование всей информации "на лету" с помощью функций (файл /modules/phpbb/phpbb.module):
388: function _phpbb_encode($astring) { ...
402: function _phpbb_decode($astring) { ...
Они нам больше не нужны (обе базы у нас в одинаковой кодировке - utf-8), так что смело заменяем их такими функциями:
388: function _phpbb_encode($astring) {
389: return addslashes($astring);
390: }
391: function _phpbb_decode($astring) {
392: return $astring;
393: }
Далее находим функцию _phpbb_db(), а в ней строку:
315: $phpbb_dbc = mysql_connect($dbhost, $dbuser, $dbpasswd);
316: mysql_select_db($dbname, $phpbb_dbc);
Добавляем послее неё еще одну строку:
315: $phpbb_dbc = mysql_connect($dbhost, $dbuser, $dbpasswd);
316: mysql_select_db($dbname, $phpbb_dbc);
317: mysql_query("set names 'utf8';", $phpbb_dbc);
Это необходимо для корректной вставки русских имен пользователей в таблицу пользователей форума.
4. Проверяем =)
У меня все работает, имена с иероглифами, кириллицей - выглядят одинаково на портале и форуме. Блок "последние сообщения форума" также отображает корректную информацию.
Удачи ;)
С уважением, ritsuka[at]otaku[dot]cc.
- Для комментирования войдите или зарегистрируйтесь
касательно
> igdrasil@drupal.org, пт, 10/08/2007 - 20:24
> ...блок тоже работал, но обрезались длинные названия некорректно, поэтому забил на него..
Открываем файл /modules/phpbb/phpbb.module на правку, находим строку:
484: if (strlen($descstr) > 31 )
485: $descstr = substr($descstr,0,29) . "...";
Ужасаемся некорректности и бездарности этого решения, далее знакомимся с API Drupal'a, а конкретно, с функцией truncate_utf8 (http://api.drupal.org/api/function/truncate_utf8/5).
Применяем её на практике, заменив вышеуказанные строки на:
484: if (strlen($descstr) > 120)
485: $descstr = truncate_utf8( $descstr, 120, true, true);
120 букв - это на мой вкус, вы можете выставить любое свое значение. В качестве результата полчаем корректное обрезание с учетом слов.
С уважением, ritsuka[at]otaku[dot]cc.
- Для комментирования войдите или зарегистрируйтесь







Комментарии