Быстрый лёгкий надёжный форумный движок
Вы не вошли.
Страницы 1
Тема закрыта
Здравствуйте.
Кто-нибудь пытался прикрутить к форуму модуль GeSHi (Generic Syntax Highlighter) ?
Очень удобная штука, особенно для околопрограммистских форумов.
Расцвечивает код в зависмости от указанного языка, подсветка через css.
Спасибо заранее.
p.s. В PHP не силен, к сожалению.
p.p.s. Сайт модуля, на всякий случай - http://qbnz.com/highlighter/
Редактировался marazmus (2006-02-17 07:18:56)
Получилось!
Короче, эта штука ставится через сторонний мод Multy Syntax от zaher dirkey ([email protected]).
Скачиваешь мод http://www.parmaja.com/downloads/phpMul … -1.1.0.zip
Скачиваешь сам geshi - http://prdownloads.sourceforge.net/gesh … p?download
(или другую версию, эта последняя стабильная на сегодня).
В основной папке форума создаёшь папку syn. Туда запихиваешь целиком каталог geshi (как есть),
а также файлы syn.css и punbb_geshi.php из мода.
Затем читаешь readme.txt в моде и меняешь include/parser.php и header.php как там описано
(только никакие файлы можно больше не копировать, если тебе нужен только geshi -кстати, оригинальный мод у меня так и не заработал, но geshi поддерживает больше языков, правда работает чуть медленней).
Затем в include/parser.php находишь следующее:
//syn: include your favorite beautifiers
include(PUN_ROOT.'syn/punbb_msh.php');
//include(PUN_ROOT.'syn/punbb_geshi.php');
Меняешь на это:
//syn: include your favorite beautifiers
//include(PUN_ROOT.'syn/punbb_msh.php');
include(PUN_ROOT.'syn/punbb_geshi.php');
(то есть подключаем движок geshi вместо оригинального msh)
Теперь содержимое syn/punbb_geshi.php заменяешь на следующее:
<?
if (!defined('PUN_ROOT'))
exit('The constant PUN_ROOT must be defined and point to a valid PunBB installation root directory.');
//upload geshi to domain.com/forums/geshi
include_once(PUN_ROOT.'syn/geshi/geshi.php');
$geshi = new GeSHi($code, $codename, PUN_ROOT.'syn/geshi/geshi');
// $geshi->set_header_type(GESHI_HEADER_PRE);
// $geshi->enable_classes(true);
// $geshi->enable_line_numbers(GESHI_NORMAL_LINE_NUMBERS);
$code=$geshi->parse_code();
?>
Сохраняешься.
Всё. geshi работает. И это круто.
Если какие вопросы - спрашивай.
Тестировалось на punBB 1.2.10.
Замечание к вышуизложенному объяснению - похоже, файл syn.css в этом случае можно опустить, он нужен только для оригинального мода.
У меня заработал и стандартный скрипт, я все понял почему не работал, просто у меня стоял мод allow html
Редактировался uT)Dev1L (2006-03-27 21:07:10)
У меня заработал и стандартный скрипт, я все понял почему не работал, просто у меня стоял мод allow html
Если не трудно, скажи, что за мод (allow) и чем он мешал нормальной работе multisyn?
allow html- разрешает писать админам и модераторам html на форуме, а мешает он вот чем:
if ($cur_post['g_id'] == 1 || $cur_post['g_id'] == 2) { //Mod or admin
$cur_post['message'] = parse_admin_message($cur_post['message'], $cur_post['hide_smilies']);
}
else
{
$cur_post['message'] = parse_message($cur_post['message'], $cur_post['hide_smilies']);
}
остальные то пользователи могут писать multisyn а вот админ из-за этого кода обламывается т.к. на parse_admin_message написан свой парсер вот такой:
//Mod: parse_admin_message allows html and does not censor!
function parse_admin_message($text, $hide_smilies)
{
global $pun_config, $lang_common, $pun_user;
//CENSOR REMOVED
// Convert applicable characters to HTML entities:REMOVED
// If the message contains a code tag we have to split it up (text within
shouldn't be touched)
if (strpos($text, '
') !== false && strpos($text, '
') !== false)
{
list($inside, $outside) = split_text($text, '
', '
');
$outside = array_map('ltrim', $outside);
$text = implode('<">', $outside);
}
if ($pun_config['o_make_links'] == '1')
$text = do_clickable($text);
if ($pun_config['o_smilies'] == '1' && $pun_user['show_smilies'] == '1' && $hide_smilies == '0')
$text = do_smilies($text);
if ($pun_config['p_message_bbcode'] == '1' && strpos($text, '[') !== false && strpos($text, ']') !== false)
{
$text = do_bbcode($text);
if ($pun_config['p_message_img_tag'] == '1')
{
// $text = preg_replace('#\[img\]((ht|f)tps?://)([^\s<"]*?)\.(jpg|jpeg|png|gif)\[/img\]#e', 'handle_img_tag(\'$1$3.$4\')', $text);
$text = preg_replace('#\[img\]((ht|f)tps?://)([^\s<"]*?)\[/img\]#e', 'handle_img_tag(\'$1$3\')', $text);
}
}
// Deal with newlines, tabs and multiple spaces
$pattern = array("\n", "\t", ' ', ' ');
$replace = array('<br />', ' ', ' ', ' ');
$text = str_replace($pattern, $replace, $text);
// If we split up the message before we have to concatenate it together again (code tags)
if (isset($inside))
{
$outside = explode('<">', $text);
$text = '';
$num_tokens = count($outside);
for ($i = 0; $i < $num_tokens; ++$i)
{
$text .= $outside[$i];
if (isset($inside[$i]))
{
$num_lines = ((substr_count($inside[$i], "\n")) + 3) * 1.5;
$height_str = ($num_lines > 35) ? '35em' : $num_lines.'em';
$text .= '</p><div class="codebox"><div class="incqbox"><h4>'.$lang_common['Code'].':</h4><div class="scrollbox" style="height: '.$height_str.'"><pre>'.$inside[$i].'</pre></div></div></div><p>';
}
}
}
// Add paragraph tag around post, but make sure there are no empty paragraphs
$text = str_replace('<p></p>', '', '<p>'.$text.'</p>');
return $text;
}
По этому мне просто пришлось прибить его
Прошу показать на примере где установлен этот мод, после установки не вижу существенных изменений, только портится вид, я устанавливал оффлайн на денвере, может в нем что : ) Но в любом случае есть ли примененный на каком нибудь форуме
Скажите, как поменять шрифт подсветки кода?
Страницы 1
Тема закрыта