Русское сообщество fluxbb

Быстрый лёгкий надёжный форумный движок

Вы не вошли.

Объявление

Вы можете внести свой вклад в содержание сайта. Жертвователи попадут в почетную группу "Спонсоры". Поддержать сайт.

#1 2011-06-11 14:46:29

artoodetoo
Admin by chance
Зарегистрирован: 2008-09-09
Сообщений: 887
Сайт

Дополнительные пункты меню. Многоязычность.

Самые продвинутые админы знают, что в Админке / Опции есть пункт "Доп. пункты меню", где можно добавить свои ссылки в главное меню. Всё прекрасно, но при смене языка эти пункты не меняются.

Я предлагаю такое решение (действительно для версии 1.4.5):

Предположим мы добавили пункт с текстом "Pages".

1. Файлы локализации:
В lang/English/common.php добавляем строку 'Nav Pages' => 'Pages',
В lang/Russian/common.php добавляем строку 'Nav Pages' => 'Страницы',
Обратите внимание, я добавил префикс 'Nav ' чтобы избежать случайных совпадений с существующими переводами.

2. Используем локализацию, если есть:
В header.php находим подстроку o_additional_navlinks - это место откуда берутся доп. пункты. Весь блок if где эта подстрока заменяем на такой:

// Are there any additional navlinks we should insert into the array before imploding it?
if ($pun_user['g_read_board'] == '1' && $pun_config['o_additional_navlinks'] != '')
{
    if (preg_match_all('#([0-9]+)\s*=\s*(<.*>)(.*?)(</.*>)\n#s', $pun_config['o_additional_navlinks']."\n", $extra_links))
    {
        // Insert any additional links into the $links array (at the correct index)
        $num_links = count($extra_links[1]);
        for ($i = 0; $i < $num_links; ++$i) {
            $text = $extra_links[3][$i];
            if (isset($lang_common['Nav ' . $text])) {
                $text = $lang_common['Nav ' . $text];
            }    
            array_splice($links, $extra_links[1][$i], 0, array('<li id="navextra'.($i + 1).'">'.$extra_links[2][$i].$text.$extra_links[4][$i].'</li>'));
        }
    }
}

There are two hard things in computer science: cache invalidation, naming things, and off-by-one errors.

Offline

Подвал доски

Под управлением FluxBB. Хостинг Hostens