IBResource Опубликовано 25 Августа 2003 Жалоба Поделиться Опубликовано 25 Августа 2003 У многих наверняка возникал вопрос:"Почему в 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/ открывается главная страница форума со списком форумов . Изменив здесь значение 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=3index.php?showtopic=33234 - эта запись идентична index.php?act=ST&f=номер_форума&t=33234index.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. Удачи Все комментарии и вопросы по статье пожалуйста в Приват! Если будут изменения или какие-либо важные вопросы и ответы, я их добавлю тут в тему! Ссылка на комментарий Поделиться на других сайтах Прочее
Рекомендуемые сообщения