Перейти к контенту

Структура и пути в IPB


Рекомендуемые сообщения

У многих наверняка возникал вопрос:

"Почему в IPB столько файлов? Ведь пути всегда идут к одному файлу index.php, а меняются лишь параметры."

 

Так вот эта краткая статья по файлам в IPB должна помочь вам лучше разбираться в IPB. Что где искать. Где что изменять.

 

Почти все страницы в IPB имеют в адресе параметр act . Так вот act - это сокращение от английского слова "action ", что означает "действие". (далее в тексте вместо act будет говориться action) Так вот эта основная состовляющая деления по файлам. Почти каждому значению action соответствует свой файл с функциями + свой файл с шаблонами + свой языковой файл. Почему почти? Потому что бывают мелкие действия, естесственно на разных значениях action , но они объединяются все в один файл с функциями + также объединенный языковой файл + также объединенный файл с шаблонами. Например есть крупные act=Online или act=UserCP. У них у каждого свои служебные файлы с функциями и т.д.

Итак как понять какой action относиться к каким файлам?

 

Для этого заходим в index.php. Там все расписано. Сразу сообщю, что index.php?act=idx является адресом главной странице форума где представлены все категории и форумы.

Сначала найдите такой код:

if (! isset($choice[ $ibforums->input['act'] ]) )
{
$ibforums->input['act'] = 'idx';
}

Это запись означает, что если параметр action не указан, то он по умолчанию равен idx. Так вот почему при запуске форума просто по адресу http://vash_sait.ru/forum/ открывается главная страница форума со списком форумов :D. Изменив здесь значение idx на portal (для форума где стоит IBF Portal 3.2 или 4.0) ИЛИ на home (если у вас 1.2 и стоит портал IPDynamic Lite), то вы получите, что у вас по умолчанию будет загружаться не форум а портал.

 

А теперь поднимитесь чуть выше и найдите примерно такой код:

$choice = array(
                "idx"      => "Boards",
                "SC"       => "Boards",
                "SF"       => "Forums",
                "SR"       => "Forums",
                "ST"       => "Topics",
                "Login"    => "Login",
                "Post"     => "Post",
                "Poll"     => "lib/add_poll",
                "Reg"      => "Register",
                "Online"   => "Online",
                "Members"  => "Memberlist",
                "Help"     => "Help",
                "Search"   => "Search",
                "Mod"      => "Moderate",
                "Print"    => "misc/print_page",
                "Forward"  => "misc/forward_page",
                "Mail"     => "misc/contact_member",
                "Invite"   => "misc/contact_member",
                "ICQ"      => "misc/contact_member",
                "AOL"      => "misc/contact_member",
                "YAHOO"    => "misc/contact_member",
                "MSN"      => "misc/contact_member",
                "report"   => "misc/contact_member",
                "chat"     => "misc/contact_member",
                "integ"    => "misc/contact_member",
                "Msg"      => "Messenger",
                "UserCP"   => "Usercp",
                "Profile"  => "Profile",
                "Track"    => "misc/tracker",
                "Stats"    => "misc/stats",
                "Attach"   => "misc/attach",
                'ib3'      => 'misc/ib3',
                'legends'  => 'misc/legends',
                'modcp'    => 'mod_cp',
                'calendar' => "calendar",
                'buddy'    => "browsebuddy",
                'boardrules' => "misc/contact_member",
                'mmod'     => "misc/multi_moderate",
                'warn'     => "misc/warn",
                'home'     => 'dynamiclite/csite',
                'module'   => 'modules',
              );

А вот и список всех значений action (слева) и список имен файлов (без расширения php) к чему они относятся (справа). Если строка такая - 'warn' => "misc/warn",, то это значит для act=warn служебный файл расположен по адресу http://vash_sait.ru/forum/sources/misc/warn.php

Почему в строке не указана директория sources, а я ее указал? Потому что все служебные файлы ( почти ;) ) находятся в папке sources (в переводе с английского - исходники).

Как узнать, где находятся языковые файлы и шаблоны данного файла?

Просто. Заходим в файл, например выбрали UserCP.php. Там ищем слова lang и skin. Находим соответственно:

   	 $ibforums->lang = $std->load_words($ibforums->lang, 'lang_post'  , $ibforums->lang_id );
$ibforums->lang = $std->load_words($ibforums->lang, 'lang_ucp'   , $ibforums->lang_id );

и

                $this->html = $std->load_template('skin_ucp');

Из чего не сложно понять, что языковые файлы используются 2 штуки lang_post.php и lang_ucp.php . А файл с шаблонами используется только один skin_ucp.php

 

А вот что с чем связано:

                "idx"    => index - Главная страница форума

                "SC"    => Show Category - Отображает список форумов выбранной категории

                "SF"    => Show Forum - Показывает список тем выбранного форума!

                "SR"    => Show Rules -  Показывает правила выбранного форума (их можно создавать для каждого форума свои)

                "ST"    => Show Topic - Показывает выбранную тему (список всех сообщений выбранной темы)

                "Login"    => Обслуживает авторизацию (вход в форум под своей учетной записью)

                "Post"  => Обслуживает публикацию сообщений, создание тем, опросов

                "Poll"  => Обслуживает добавление голосов к опросу

                "Reg"      => Регистрация, восстановление пароля...

                "Online" => Список активных пользователей (тех кто в онлайне)

                "Members"  => Список всех пользователей, различная сортировка...

                "Help"  => Обслуживание файлов помощи (FAQ, просмотр, сортировка)

                "Search" => Поиск по форуму. Расширенный поиск. Просмотр новых сообщений со времени последнего визита, активные темы.

                "Mod"      => Модерирование. Действия модератора. Перенос тем. Разделение и т.д.

                "Print"    => Вид темы для печати, сохранение темы в HTML, Ms Word...

                "Forward"  => Отсылка ссылки на тему другу на e-mail.

                "Mail"  => Написание и отправка письма пользователю на e-mail.

                "Invite" => Пока функции такой нет. Но разработчики заранее уже заготовки делают себе :)

                "ICQ"      => Отсылка сообщения на ICQ

                "AOL"      => Отсылка сообщения на AOL

                "YAHOO"    => Отсылка сообщения на YAHOO

                "MSN"      => Отсылка сообщения на MSN

                "report" => Сообщить модератору (обслуживание ссылки на доклад модератору на e-mail о сообщении)

                "chat"  => Модуль чата. Invision Power Chat платный чат. Поэтому его нету в наборе

                "integ"    => Отсылка сообщения на Integrity Messenger

                "Msg"      => Обслуживание Личного Ящика. Прием отсылка и другие действия с PM'ками (сообщениями в Приват)

                "UserCP" => Большой скрипт работы с "Профилем". Это и управление подпиской и настройки форума и т.д...

                "Profile"  => Просмотр профиля пользователя...

                "Track"    => Подписка на тему/форум

                "Stats"    => 10 лучших авторов, 10 лучших авторов сегодня и ссылка на состав Администрации

                "Attach" => Скачивание присоединенного файла к сообщению (аттача)

                'ib3'      => Модуль входа в форум для Ikonboard 3. Связано с конвертированием из IkonBoard3

                'legends'  => Смайлики, помощь по bbcode

                'modcp'    => Панель управления модератора. И все что с ней связано

                'calendar' => Календарь. публикация, изменение событий календаря...

                'buddy'    => Контакт-лист пользователя. Добавление пользователя в контакты и т.д.

                'boardrules' => Общие правила всего форума. Из просмотр.

                'mmod'  => Мультимодерация. Создание общих правил для модерирования форумов

                'warn'  => Система рэйтингов/предупреждений

                'home'  => Просмотр портала IPDynamic Lite. Вот по этой ссылке ясно почему act=home это портал

                'module' => Дополнительные модули синхронизации. Появились только в 1.2 :)

 

Так что если вы что-то хотите изменить загляните в адресную строку браузера, посмотрите, чему равен параметр act, и вы сразу будете знать где искать. А место, что вы ищете можете найти по какому-нибудь тексту, который не динамический (не изменяется). А раз текст статичный, значит он в языковых файлах наверняка есть. Значит найдя его через поиск в языковых файлах вы сможете увидеть какая переменная соответствует данной записи и уже искать нужное место по имени переменной, что как правило приведет вас в шаблоны с уже знакомым HTML языком :) Там-то имея базовые навыки английского (как правило переменные называются простыми понятными словами на английском языке) вы сможете там найти нужное и понять уже без языковых переводов что есть что.

 

У вас могут возникнуть вопрос, а что же такое:

                "idx"      => "Boards",
               "SC"       => "Boards",
               "SF"       => "Forums",
               "SR"       => "Forums",
               "ST"       => "Topics",

 

idx - index - главная страница форума

SC - Show Category - просмотр выбранной категории (список форумов выбранной категории)

SF - Show Forum - Просмотр форума (список тем выбранного форума)

SR - Show Rules - Просмотр правил форума (их можно добавлять к каждому форуму свои через AdminCP)

ST - Show Topic - Просмотр темы (список сообщений выбранной темы)

 

Также в последней версии 1.2 ввели несколько более сокращенных видов ссылок, которые имитирует эти обычные. Это

index.php?showforum=3 - эта запись идентична index.php?act=SF&f=3

index.php?showtopic=33234 - эта запись идентична index.php?act=ST&f=номер_форума&t=33234

index.php?showuser=343 - эта запись идентична index.php?act=Profile&CODE=03&MID=343

 

Эти три сокращения реализуются кодом, который записан в index.php:

if ( $ibforums->input['showforum'] != "" )
{
$ibforums->input['act'] = "SF";
$ibforums->input['f']   = intval($ibforums->input['showforum']);
}
else if ( $ibforums->input['showtopic'] != "")
{
$ibforums->input['act'] = "ST";
$ibforums->input['t']   = intval($ibforums->input['showtopic']);

// Grab and cache the topic now as we need the 'f' attr for
// the skins...

$DB->query("SELECT t.*, f.topic_mm_id, f.name as forum_name, f.quick_reply, f.id as forum_id, f.read_perms, f.reply_perms, f.parent_id, f.use_html,
                      f.start_perms, f.allow_poll, f.password, f.posts as forum_posts, f.topics as forum_topics, f.upload_perms,
                      f.show_rules, f.rules_text, f.rules_title,
                      c.name as cat_name, c.id as cat_id
                      FROM ibf_topics t, ibf_forums f , ibf_categories c
                      WHERE t.tid=".$ibforums->input['t']." and f.id = t.forum_id and f.category=c.id");
                      
   $ibforums->topic_cache = $DB->fetch_row();
   $ibforums->input['f']  = $ibforums->topic_cache['forum_id'];
}
else if ( $ibforums->input['showuser'] != "")
{
$ibforums->input['act'] = "Profile";
$ibforums->input['MID'] = intval($ibforums->input['showuser']);
}

 

 

 

А вообще все, что вы хотите изменить, можно найти поиском в файлах форума. Поэтому всегда держите копию всех файлов форума у себя на жестком диске. Ведь поиск в файлах на сервере через ftp попросту невозможен. Но это уже тема для другой статьи. Так что The End. Удачи

 

Все комментарии и вопросы по статье пожалуйста в Приват! Если будут изменения или какие-либо важные вопросы и ответы, я их добавлю тут в тему!

Ссылка на комментарий
Поделиться на других сайтах

Гость
Эта тема закрыта для публикации сообщений.
×
×
  • Создать...

Важная информация

Находясь на нашем сайте, вы соглашаетесь на использование файлов cookie, а также с нашим положением о конфиденциальности Политика конфиденциальности и пользовательским соглашением Условия использования.