Весь контент Ciko
-
Как узнать подходит ли хостинг для форума IPB
Как узнать подходит ли хостинг для форума IPB? MySQL 5.x или выше (на сервере должен быть отключен режим STRICT_TRANS_TABLES)Apache 1.4 или вышеВерсия PHP интерпретатора 5.2 или вышеТакже в архиве с форумом вы найдете папку Tools, там находится файл check_requirements.php, залейте его на ФТП и запустите, он проверит подходит ли хостинг для форума.Какие права CHOMD нужно установить? /cache/ 0777/cache/lang_cache/ 0777/cache/lang_cache/1/ 0777/cache/skin_cache/ 0777/cache/tmp/ 0777/public/style_images/ 0777/public/style_css/ 0777/uploads 0777Для корректной работы форума нужно поставить на эти папки соответствующие права CHMOD[/quote]При обновлении форума возникает ошибка связанная с кодировкой Ваша БД должна быть в UTF-8 формате, чтобы перекодировать её, используйте этот скрипт: <?php// Database infoinclude("conf_global.php");$dbhost = $INFO['sql_host'];$dbuser = $INFO['sql_user'];$dbpass = $INFO['sql_pass'];$dbname = $INFO['sql_database'];//---------------header('Content-type: text/plain');$dbconn = mysql_connect($dbhost, $dbuser, $dbpass) or die( mysql_error() );$db = mysql_select_db($dbname) or die( mysql_error() );$sql = "ALTER DATABASE `".$dbname."` DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci";$result = mysql_query($sql) or die( mysql_error() );print "Database changed to UTF-8.\n";$sql = 'SHOW TABLES';$result = mysql_query($sql) or die( mysql_error() );while ( $row = mysql_fetch_row($result) ){$table = mysql_real_escape_string($row[0]);$sql = "ALTER TABLE $table DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci, CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci";mysql_query($sql) or die( mysql_error() );print "$table changed to UTF-8.\n";}mysql_close($dbconn);?>Сохраните его в формате convert.php и запустите по адресу site.com/convert.php При установке форума вылетает белый экран, как быть? В большинстве случаев проблема в требованиях к хостингу, проверьте еще раз соответствует ли хостинг требованиям IPB На 10,11 шаге установки возникает ошибка связанная с кодировкой. Вы создали БД в неправильной кодировке, нужно в utf8_general_ciПосле установки форума у меня появились крякозябры, что делать? В корне форума создайте файл .htaccess с таким содержимымAddDefaultCharset utf-8AddCharset utf-8 *<IfModule mod_charset.c>CharsetSourceEnc utf-8CharsetDefault utf-8</IfModule>Как отключить ЧПУ в IPB? Переходим в файл conf_global.php находим$INFO['use_friendly_urls'] = '1';Заменяем на$INFO['use_friendly_urls'] = '0';Как сменить ссылки на темы с русского на латиницу?Заходим в файл initdata.php и там ищемdefine( 'IPB_USE_SEO_TRANSLIT', FALSE );меняем наdefine( 'IPB_USE_SEO_TRANSLIT', TRUE );При попытке изменить фразу пишет "Невозможно перевести защищенный пакет языков" Чтобы решить данную проблему зайдите в phpMyAdmin и выполните запрос UPDATE core_sys_lang SET lang_protected = 0;
-
Защищаем форум IPB от ботов
“Управление” –> “Дополнительные поля профиля” –> “Добавление дополнительного поля”. 2. Прописываем название данного поля, например “Супер защита от ботов”. 3. Составляем описание данного поля: Скопируйте в данное поле цифры с дефисами и без кавычек - “3468-3897-54-913″. Цифры могут быть разными. 4. Ставим тип поля “Однострочное”. 5. Максимальная длина поля: 16. 6. Порядок сортировки: 0. 7. Прописываем формат поля: nnnn-nnnn-nn-nnn. 8. Далее надо поставить вариант “Да” на против двух вопросов: “Это поле обязательно к заполнению?” и “Добавить на страницу регистрации?” 9. Потом ставим отображение поля в сообщении следующим образом {title}: {content}
-
Голосовой поиск по форуму
Идём по пути: АЦ-Внешний вид-Ваш шаблон-глобальные-quickSearch. Там находим код, в моём случае: <input type='text' id='main_search' name='search_term' class='inactive' size='17' tabindex='6' />Ищите у себя что то подобное..Он там в начале шаблона почти. Перед /> добавляем следующие: x-webkit-speech="" speech="" onwebkitspeechchange="this.form.submit();"То есть в моём случае получилось так: <input type='text' id='main_search' name='search_term' class='inactive' size='17' tabindex='6' x-webkit-speech="" speech="" onwebkitspeechchange="this.form.submit();" />
-
Добавление текста при копировании информации с сайта
При копировании текста с сайта добавить в этот текст свою информацию. Другими словами, если кто-то скопирует с вашего сайта текст, скажем, Привет, то при вставке будет что-то вроде Привет Источник: ссылка Решение Нетривиальное. Простейший способ, который работает (что важно). Переходим в АЦ → Внешний вид → ваш стиль Открываем шаблон globalTemplate. Почти в самом начале ищем: //<![CDATA[jsDebug = {parse expression="intval($this->settings['_jsDebug'])"}; /* Must come before JS includes */USE_RTE = 1;DISABLE_AJAX = parseInt({$this->settings['disable_text_ajax']}); /* Disables ajax requests where text is sent to the DB; helpful for charset issues */inACP = false;var isRTL = false;var rtlIe = '';var rtlFull = '';//]]></script>Ниже вставляем: <script type="text/javascript">//<![CDATA[function addLink() {var eBody = document.getElementsByTagName('body')[0];var selection = window.getSelection();// Вы можете изменить текст в этой строчкеvar info = "Источник: <a href='"+document.location.href+"'>"+document.location.href+"</a>";var copytext = selection + info;var newdiv = document.createElement('div');newdiv.style.position = 'absolute';newdiv.style.left = '-99999px';eBody.appendChild(newdiv);newdiv.innerHTML = copytext;selection.selectAllChildren(newdiv);window.setTimeout( function() { eBody.removeChild(newdiv);}, 0);}document.oncopy = addLink;//]]></script>Сохраняем. В строчке var info = "Источник: <a href='"+document.location.href+"'>"+document.location.href+"</a>";можете написать любой свой текст. document.location.hrefзаменится на страницу, с которой текст был скопирован.
-
Смена фона по времени
Глобальные --> globalTemplate Находим: <body id='ipboard_body'>Ниже вставляем: <script type="text/javascript">theTime = new Date();theHour = theTime.getHours();theMinute = theTime.getMinutes();if(theHour>=9&&theHour<=17){document.body.style.cssText = "background: #59b0ee url('__ipb-board.com/public/style_images/ваш_стиль/_backgrounds/bg1.jpg') top center repeat-x";}else if(theHour>6&&theHour<9){document.body.style.cssText = "background: #26abf6 url('__ipb-board.com/public/style_images/ваш_стиль/_backgrounds/bg2.jpg') top center repeat-x";}else if(theHour>17&&theHour<21){document.body.style.cssText = "background: #26abf6 url('__ipb-board.com/public/style_images/ваш_стиль/_backgrounds/bg3.jpg') top center repeat-x";}else{document.body.style.cssText = "background: #155e87 url('__ipb-board.com/public/style_images/ваш_стиль/_backgrounds/bg4.jpg') top center repeat-x";}</script>если ваше время: - больше или равно 9 и меньше или равно 17 - устанавливается bg1.jpg из папки _backgrounds - больше 6 и меньше 9 - устанавливается bg2.jpg из папки _backgrounds - больше 17 и меньше 21 - устанавливается bg3.jpg из папки _backgrounds - в остальное время - устанавливается bg4.jpg из папки _backgrounds Не забудьте загрузить сами фоновые изображения в папку _backgrounds вашего стиля! А так же не забудьте поменять в коде http://ipb-board.com/на адрес Вашего сайта /ваш_стиль/
-
Смайлики в статусах пользователей
Описание: По стандарту, смайлики в статусах пользователей на главной странице запрещены. То есть, они вообще никак не обрабатываются. Чтобы задействовать их, необходимо открыть файл ./admin/sources/classes/member/status.php Найти: $statuses[ $row['status_id'] ] = $row;Добавить выше: $row['status_content'] = IPSText::getTextClass( 'bbcode' )->preDisplayParse( IPSText::getTextClass( 'bbcode' )->preDbParse( $row['status_content'] ) );
-
Добавляем ID пользователя в его профиль
Данная модификация позволит отображать ID (номер) пользователя в информации его профиля. Заходим в: Админцентр > Внешний вид > Ваш стиль > userInfoPane Находим: <li class='post_count desc lighter'> {parse expression="$this->registry->getClass('class_localization')->formatNumber( intval( $author['posts'] ) )"} {$this->lang->words['m_posts']} </li> </if> </ul>Вставляем перед </ul>: <span class="post_count desc lighter">Пользователь №{$author['member_id']}</span>
-
Ник или выделенный текст в форму быстрого ответа для 3.2.х
Заходим в: Админцентр > Внешний вид ˃ Ваш шаблон ˃ Темы ˃ post Находим: <li class='report'> <a href="{$this->settings['base_url']}app=core&module=reports§ion=reports&do=show_report&rid={$this->memberData['_cache']['report_temp']['post_marker']['post'][$post['post']['pid']]['info']['id']}" id='post-report-{$post['post']['pid']}' class='ipbmenu'> <span id="rstat-{$this->memberData['_cache']['report_temp']['post_marker']['post'][ $post['post']['pid'] ]['info']['id']}"><img src="{$this->settings['img_url']}/reports/post_alert_{$this->memberData['_cache']['report_temp']['post_marker']['post'][$post['post']['pid']]['gfx']}.png" alt="" /></span> </a> </li> </if> </if>Ниже добавляем: <if test="replyButton:|:$post['post']['_canReply']"> <li style='position:absolute;'><a class='ipsButton_secondary' onmouseover="copyQ('{$post['author']['members_display_name']}', '{$post['post']['pid']}');" href="javascript:ins('{$post['author']['members_display_name']}')">Вставить ник или выделенный текст</a></li> </if>Заходим в: Админцентр > Внешний вид ˃ Ваш шаблон ˃ Темы ˃ topicViewTemplate Находим: <script type='text/javascript'> ipb.topic.fastReplyId = '{$this->settings['_lastEditorId']}';Ниже добавляем: function copyQ( qinf, pid ) { txt=''; if (window.getSelection) { txt=window.getSelection(); } else if (document.selection) { txt=document.selection.createRange().text; } if (txt != "") { txt='[quote name="'+qinf+'" post="'+pid+'"]'+txt+'; } } function ins( name ) { editor = ipb.textEditor.getEditor( ipb.topic.fastReplyId ) if (txt!= "") { editor.insert( txt, true ); } else { editor.insert( "[member="+name+"],", true ); } }
-
Сокращение количества символов в блоке "Последние темы"
В боковой панеле форума IP.Board отображается дополнительный блок под названием Последние темы. Заголовки последних тем отображаются полность, если у темы длинный заголовок, строка перенесётся на следующую.. Если сократить количество отображаемых символов в заголовках тем в блоке Последние темы, вид блока будет выглядеть намного приятнее.. Для этого необходимо открыть шаблон hookRecentTopics в Список форумов. Находим строку: {$r['topic_title']}Заменяем на: {parse expression="IPSText::truncate( $r['topic_title'], XX)"}Где XX - количество знаков. В примере на скриншоте XX равно 35.
-
Убираем кнопку "Жалоба"
Заходим в: Админцентр > Внешний вид > Управление стилями и шаблонами > Управление шаблонами > Управление шаблонами и CSS > Темы > post Находим: <li class='report'><a href='{parse url="app=core&module=reports&rcom=post&tid={$this->request['t']}&pid={$post['post']['pid']}&st={$this->request['st']}" base="public"}'>{$this->lang->words['report']}</a></li>Заменяем на: <if test="noselfreport:|:$post['author']['member_id'] != $this->memberData['member_id']"><li class='report'><a href='{parse url="app=core&module=reports&rcom=post&tid={$this->request['t']}&pid={$post['post']['pid']}&st={$this->request['st']}" base="public"}'>{$this->lang->words['report']}</a></li></if>
-
Меняем кол-во последних изменений статусов
По-умолчанию в IP.Board 3.2.x на главной странице отображается только пять последних изменений статусов пользователей, благодаря этой статье, вы научитесь изменять их кол-во. Заходим в корневую директорию форума (ФТП): Открываем файл conf_global.php Находим: $INFO['status_sidebar_show_x'] = '5';Значение '5' изменяем на свое.
-
Избавляемся от дублированных вкладок навигации
При обновлении форума до версии 3.3.x, у многих в навигации стало по две вкладки Форумы и Пользователи. Для исправления этого нам потребуется изменить шаблона globalTemplate, находим: {parse variable="forumActive" default="" oncondition="IPS_APP_COMPONENT == 'forums'" value="active"}{parse variable="membersActive" default="" oncondition="IPS_APP_COMPONENT == 'members'" value="active"}{parse variable="helpActive" default="" oncondition="IPS_APP_COMPONENT == 'core' AND $this->request['module'] == 'help'" value="active"}<if test="!ipsRegistry::$applications['forums']['app_hide_tab'] && !count(ipsRegistry::$applications['forums']['app_tab_groups']) && !IPSMember::isInGroup( $this->memberData, ipsRegistry::$applications['forums']['app_tab_groups'] )"><li id='nav_discussion' class='left {parse variable="forumActive"}'><a href='{parse url="act=idx" seotitle="false" base="public"}' title='{$this->lang->words['go_to_discussion']}'>{IPSLib::getAppTitle( 'forums' )}</a></li></if><if test="!ipsRegistry::$applications['members']['app_hide_tab'] && !count(ipsRegistry::$applications['members']['app_tab_groups']) && !IPSMember::isInGroup( $this->memberData, ipsRegistry::$applications['members']['app_tab_groups'] )"><li id='nav_members' class='left {parse variable="membersActive"}'><a href='{parse url="app=members&module=list" base="public" template="members_list" seotitle="false"}' title='{$this->lang->words['go_to_memberlist']}'>{IPSLib::getAppTitle( 'members' )}</a></li></if><if test="applicationsloop:|:is_array($header_items['applications']) AND count($header_items['applications'])"> <foreach loop="applications:$header_items['applications'] as $data"> <if test="showingapp:|:$data['app_show']"> {parse variable="appActive" default="" oncondition="$data['app_active']" value="active"} <li id='nav_app_{$data['app_dir']}' class="left {parse variable="appActive"}"><a href='{parse url="{$data['app_link']}" seotitle="false" base="public"}' title='{parse expression="sprintf( $this->lang->words['go_to_prefix'], IPSLib::getAppTitle($data['app_dir']) )"}'>{IPSLib::getAppTitle($data['app_dir'])}</a></li> </if> </foreach></if>Заменить на: <if test="hasCustomPrimaryNavigation:|:!empty($header_items['primary_navigation_menu'])"> {$header_items['primary_navigation_menu']}<else /> <if test="applicationsloop:|:is_array($header_items['applications']) AND count($header_items['applications'])"> <foreach loop="applications:$header_items['applications'] as $data"> <if test="showingapp:|:$data['app_show']"> {parse variable="appActive" default="" oncondition="$data['app_active']" value="active"} <li id='nav_app_{$data['app_dir']}' class="left {parse variable="appActive"}"><a href='{parse url="{$data['app_link']}" seotitle="{$data['app_seotitle']}" template="{$data['app_template']}" base="{$data['app_base']}"}' title='{parse expression="sprintf( $this->lang->words['go_to_prefix'], IPSLib::getAppTitle($data['app_dir']) )"}'>{IPSLib::getAppTitle($data['app_dir'])}</a></li> </if> </foreach> </if></if>
-
Исправляем единичное отображение файлов в категориях IP.Downloads
Этот баг разработчики исправили в новой версии IP.Downloads, которая пока ещё не вышла.. Для исправления этого бага нужно отредактировать файлик category.php, который находится по пути: admin/applications_addon/ips/downloads/modules_public/displНайти Найти код: $this->DB->execute(); while( $row = $this->DB->fetch() )И заменить его на: $res = $this->DB->execute(); while( $row = $this->DB->fetch( $res ) )
-
Исправляем баг с загрузкой следующих тем
При просмотре определенного форума, если нажать на "Загрузить следующие темы", то зачастую следующие темы будут дублироваться с той страницы, на которой вы находитесь. Данная статья поможет вам исправить это. Заходим в: Админцентр > Внешний вид > Ваш стиль > Список тем форума > forumIndexTemplate Находим: <script type='text/javascript'>ipb.forums.fetchMore = {'f': parseInt("{$this->request['showforum']}") ,'st': parseInt("{$this->request['st']}"),'sort_by': "{$this->request['sort_by']}",'sort_key': "{$this->request['sort_key']}",'topicfilter': "{$this->request['topicfilter']}",'prune_day': "{$this->request['prune_day']}"};</script>Заменяем на: <script type='text/javascript'>ipb.forums.fetchMore = {'f': parseInt("{$this->request['showforum']}") ,'st': parseInt("{$this->request['st']}"),'sort_by': "{$this->request['sort_by']}",'sort_key': "{$this->request['sort_key']}",'topicfilter': "{$this->request['topicfilter']}",'prune_day': "{$this->request['prune_day']}",'max_topics': "{$this->settings['display_max_topics']}"};</script>
-
Исправляем вид в личных сообщениях
На многих стилях бывает случается так, что вид у быстрого просмотра сообщений, корявый. Сейчас мы это исправим. Заходим в: Админцентр > Внешний вид > Управление стилями и шаблонами > Управление шаблонами > Прочие > inboxList Найти: <ul class="ipsList_withminiphoto">Добавить перед: <br />
-
Восстанавливаем регистрационную форму
У многих после перехода на версию 3.2.3 и при обновлении шаблонов форума, возникает проблема с регистрационной формой. В этой статье мы исправим это. Заходим в: Админцентр > Внешний вид > Управление стилями и шаблонами > Управление шаблонами > Управление шаблонами и CSS > Регистрация > registerForm Заменяем весь код на этот: {parse js_module="register"}<script type='text/javascript'>//<![CDATA[ipb.register.inSection = "mainform";ipb.register.nameMaxLength = "{$this->settings['max_user_name_length']}";ipb.register.allowedChars = "{$this->settings['username_characters']}";ipb.templates['accept'] = " <span id='[id]_msg' class='reg_msg reg_accept' style='display: none'><img src='{$this->settings['img_url']}/accept.png' alt='' /> [msg]</span>";ipb.templates['error'] = " <span id='[id]_msg' class='reg_msg reg_error' style='display: none'><img src='{$this->settings['img_url']}/exclamation.png' alt='' /> [msg]</span>";//]]></script><div id='register_form'><!--<h1 class='ipsType_pagetitle'>{$this->lang->words['ready_register']}</h1>-->{parse template="registerStepBar" group="register" params="array('register_form' => 'ipsSteps_active', 'confirmation' => '')"}<if test="registerHasErrors:|:is_array( $general_errors ) && count( $general_errors )"><div class='message error'> {$this->lang->words['following_errors']} <ul> <foreach loop="general_errors:$general_errors as $r"> <li>{$r}</li> </foreach> </ul></div><br /></if><form action="{parse url="app=core&module=global§ion=register" base="public"}" method="post" name="REG" id='register'> <input type="hidden" name="termsread" value="1" /> <input type="hidden" name="agree_to_terms" value="1" /> <input type="hidden" name="do" value="process_form" /> <input type="hidden" name="coppa_user" value="{$data['coppa_user']}" /> <input type='hidden' name='nexus_pass' value='1' /> <input type='hidden' name='time_offset' id='auto_time_offset' value='0' /> <input type='hidden' name='dst' id='auto_dst' value='0' /> <h1 class='maintitle'> {$this->lang->words['ready_register']} </h1> <div class='ipsBox'> <div class='ipsBox_container ipsPad'> <if test="registerServices:|:IPSLib::fbc_enabled() || IPSLib::twitter_enabled() === true"> <div class='ipsBox_container ipsBox_notice ipsForm ipsForm_horizontal' id='external_services'> <strong class='ipsField_title' id='save_time'>{$this->lang->words['want_to_save_time']}</strong> <div class='ipsField_content'> <ul class='ipsList_inline'> <if test="registerUsingFb:|:IPSLib::fbc_enabled()"> <li><a href="{$this->settings['_original_base_url']}/interface/facebook/index.php?_reg=1"><img src="{$this->settings['img_url']}/facebook_login.png" alt="" /></a></li> </if> <if test="twitterBox:|:IPSLib::twitter_enabled() === true"> <li><a href="{$this->settings['_original_base_url']}/interface/twitter/index.php?_reg=1"><img src="{$this->settings['img_url']}/twitter_login.png" alt="" /></a></li> </if> </ul> </div> </div> </if> <if test="registerHasInlineErrors:|:is_array( $inline_errors ) && ( $inline_errors['username'] || $inline_errors['dname'] || $inline_errors['email'] || $inline_errors['password'] )"> <p class='message error'>{$this->lang->words['reg_errors_found']}</p> <br /> </if> <fieldset> <ul class='ipsForm ipsForm_horizontal'> <li class='ipsField'> <p class='ipsField_content'> <span class='ipsForm_required ipsType_smaller'>* {$this->lang->words['required_field']}</span> </p> </li> <li class='ipsField clear <if test="ieDnameClass:|:$inline_errors['dname']">error</if>'> <label for='display_name' class='ipsField_title'>{$this->lang->words['reg_choose_dname']} <span class='ipsForm_required'>*</span></label> <p class='ipsField_content'> <input type='text' class='input_text' id='display_name' size='45' maxlength='{$this->settings['max_user_name_length']}' value='{$this->request['members_display_name']}' name='members_display_name' /><br /> <span class='desc primary lighter'> <if test="ieDname:|:$inline_errors['dname']"><span class='error'>{$inline_errors['dname']}<br /></span></if> {parse expression="sprintf( $this->lang->words['dname_desc'], $this->settings['max_user_name_length'])"} </span> </p> </li> <li class='ipsField clear <if test="ieEmailClass:|:$inline_errors['email']">error</if>'> <label for='email_1' class='ipsField_title'>{$this->lang->words['reg_enter_email']} <span class='ipsForm_required'>*</span></label> <p class='ipsField_content'> <input type='text' id='email_1' class='input_text email' size='45' maxlength='150' name='EmailAddress' value='{$this->request['EmailAddress']}' /><br /> <if test="ieEmail:|:$inline_errors['email']"><span class='desc'><span class='error'>{$inline_errors['email']}</span></span></if> </p> </li> <li class='ipsField clear <if test="iePasswordClass:|:$inline_errors['password']">error</if>'> <label for='password_1' class='ipsField_title'>{$this->lang->words['reg_choose_password']} <span class='ipsForm_required'>*</span></label> <p class='ipsField_content'> <input type='password' id='password_1' class='input_text password' size='45' maxlength='32' value='{$this->request['PassWord']}' name='PassWord' /><br /> <span class='desc lighter'><if test="iePassword:|:$inline_errors['password']"><span class='error'>{$inline_errors['password']}<br /></span></if>{$this->lang->words['reg_choose_password_desc']}</span> </p> </li> <li class='ipsField clear'> <label for='password_2' class='ipsField_title'>{$this->lang->words['reg_reenter_password']} <span class='ipsForm_required'>*</span></label> <p class='ipsField_content'> <input type='password' id='password_2' class='input_text password' size='45' maxlength='32' value='{$this->request['PassWord_Check']}' name='PassWord_Check' /><br /> </p> </li> </ul> </fieldset> <if test="hasNexusFields:|:!empty( $nexusFields )"> <script type='text/javascript'> var _countriesWithStates = []; <foreach loop="statesJs:$nexusStates as $k => $v"> _countriesWithStates["{$k}"] = 1; </foreach> </script> <hr /> <fieldset> <ul class='ipsForm ipsForm_horizontal'> <foreach loop="fields:$nexusFields as $f"> <if test="isAddressOrPhone:|:in_array( $f['f_column'], array( 'cm_address_1', 'cm_phone' ) )"> <br /> </if> <if test="isText:|:$f['f_type'] == 'text'"> <li class='ipsField clear'> <label for='{$f['f_column']}' class='ipsField_title'><if test="isAddress1:|:$f['f_column'] == 'cm_address_1'">{$this->lang->words['cm_address']}<else /><if test="isAddress2:|:$f['f_column'] == 'cm_address_2'"> <else />{$f['f_name']}</if></if> <if test="textRequired:|:$f['f_reg_require']"><span class='ipsForm_required'>*</span></if></label> <p class='ipsField_content'> <input type='text' class='input_text' id='{$f['f_column']}' size='25' maxlength='255' value='{$this->request[ $f['f_column'] ]}' name='{$f['f_column']}' /> </p> <if test="textErrorMessage:|:$f['f_reg_require'] and $this->request['do'] == 'process_form' and !$this->request[ $f['f_column'] ]"> <span class='error'>{$this->lang->words['err_complete_form']}</span> </if> </li> </if> <if test="isDropdown:|:$f['f_type'] == 'dropdown'"> <li class='ipsField clear'> <label for='{$f['f_column']}' class='ipsField_title'>{$f['f_name']} <if test="dropdownRequired:|:$f['f_reg_require']"><span class='ipsForm_required'>*</span></if></label> <div class='ipsField_content'> <select name='{$f['f_column']}' id='{$f['f_column']}' <if test="isCountry:|:$f['f_column'] == 'cm_country'">onchange='states()'</if>> <foreach loop="options:explode( "n", $f['f_extra'] ) as $k => $v"> {parse variable="selected" default="" oncondition="$k == $this->request[ $f['f_column'] ] or $v == $this->request[ $f['f_column'] ]" value=" selected='selected'"} <option value='<if test="isCountrySelect:|:$f['f_column'] == 'cm_country'">{$v}<else />{$k}</if>'{parse variable="selected"}><if test="isCountryWords:|:$f['f_column'] == 'cm_country'">{$this->lang->words['nc_'.$v]}<else />{$v}</if></option> </foreach> </select> </div> <if test="dropdownErrorMessage:|:$f['f_reg_require'] and $this->request['do'] == 'process_form' and !$this->request[ $f['f_column'] ]"> <span class='error'>{$this->lang->words['err_complete_form']}</span> </if> </li> </if> <if test="isSpecial:|:$f['f_type'] == 'special'"> <li class='ipsField clear'> <label for='cm_state' class='ipsField_title'>{$this->lang->words['cm_state']} <if test="specialRequired:|:$f['f_reg_require']"><span class='ipsForm_required'>*</span></if></label> <div class='ipsField_content'> <input type='text' class='input_text' id='text-states' size='25' name='cm_state' value='{$this->request['cm_state']}' /> <foreach loop="statesCountries:$nexusStates as $country => $_states"> <select name='_cm_state' id='{$country}-states' class='input_select' style='display:none'> <foreach loop="states:$_states as $s"> {parse variable="selected" default="" oncondition="$s[0] == $this->request['cm_state']" value=" selected='selected'"} <option value='{$s[0]}'{parse variable="selected"}>{$s[1]}</option> </foreach> </select> </foreach> </div> <if test="specialErrorMessage:|:$f['f_reg_require'] and $this->request['do'] == 'process_form' and !$this->request[ $f['f_column'] ]"> <span class='error'>{$this->lang->words['err_complete_form']}</span> </if> </li> </if> </foreach> </ul> </fieldset> <script type='text/javascript'> function states() { var c = $('cm_country').value; if ( c in _countriesWithStates ) { $( _display ).style.display = 'none'; $( _display ).name = '_cm_state'; $( c + '-states' ).style.display = ''; $( c + '-states' ).name = 'cm_state'; _display = c + '-states'; } else { $( _display ).style.display = 'none'; $( _display ).name = '_cm_state'; $( 'text-states' ).style.display = ''; $( 'text-states' ).name = 'cm_state'; _display = 'text-states'; } } var _display = 'text-states'; states(); </script> </if> <if test="hasCfields:|<img src='__ipbmafia.ru/public/style_emoticons/<#EMO_DIR#>/7.gif' class='bbc_emoticon' alt=':)' /> is_array( $custom_fields['required'] ) && count( $custom_fields['required'] ) ) || ( is_array( $custom_fields['optional'] ) && count( $custom_fields['optional'] ) )"> <hr /> <fieldset> <ul class='ipsForm ipsForm_horizontal'> <if test="reqCfields:|:is_array( $custom_fields['required'] ) && count( $custom_fields['required'] )"> <foreach loop="custom_required:$custom_fields['required'] as $_field"> <li class='ipsField clear ipsField_{$_field['type']}'> <label for='cprofile_{$_field['id']}' class='ipsField_title'>{$_field['name']} <span class='ipsForm_required'>*</span></label> <div class='ipsField_content'> {$_field['field']} <if test="reqCfieldDescSpan:|:$_field['desc'] != ''"><br /><span class='desc'>{$_field['desc']}</span></if> </div> </li> </foreach> </if> <if test="optCfields:|:is_array( $custom_fields['optional'] ) && count( $custom_fields['optional'] )"> <foreach loop="custom_optional:$custom_fields['optional'] as $_field"> <li class='ipsField clear ipsField_{$_field['type']}'> <label for='cprofile_{$_field['id']}' class='ipsField_title'>{$_field['name']}</label> <div class='ipsField_content'> {$_field['field']} <if test="optCfieldDescSpan:|:$_field['desc'] != ''"><br /><span class='desc'>{$_field['desc']}</span></if> </div> </li> </foreach> </if> </fieldset> </if> <hr /> {$data['qandaHTML']} {$data['captchaHTML']} <hr /> <fieldset> <ul class='ipsForm ipsForm_horizontal'> <li class='ipsField clear ipsField_checkbox'> <input type="checkbox" name="allow_admin_mail" id="allow_admin_mail" value="1" class="input_check" <if test="defaultAAE:|:$this->request['allow_admin_mail'] || !isset( $this->request['allow_admin_mail'] )">checked='checked'</if> /> <p class='ipsField_content'> <label for='allow_admin_mail'>{$this->lang->words['receive_admin_emails']}</label> </p> </li> <li class='ipsField clear ipsField_checkbox'> <input type='checkbox' name='agree_tos' id='agree_tos' value='1' class='input_check' <if test="checkedTOS:|:$this->request['agree_tos']">checked="checked"</if> /> <p class='ipsField_content'> <label for='agree_tos' <if test="ieDnameClass:|:$inline_errors['dname']">error</if>> <strong>{$this->lang->words['agree_to_tos']} <a href='#' id='tou_link'>{$this->lang->words['terms_of_use']}</a></strong> <if test="ieTOS:|:$inline_errors['tos']"><br /><span class='error'>{$inline_errors['tos']}</span></if> </label> <textarea id='tou' class='input_text' style='width: 350px; height: 100px; display: block;'> {$this->settings['_termsAndConditions']} </textarea> </p> </li> </ul> <script type='text/javascript'> $('tou').hide(); </script> </fieldset> <br /> <fieldset> <input type='submit' class='ipsButton' id='register_submit' value='{$this->lang->words['register']}' /> </fieldset> </div> </div></form><script type='text/javascript'> ipb.templates['registration_terms'] = new Template("<h3>{$this->lang->words['reg_terms_popup_title']}</h3><div class='ipsPad' id='tou_popup'>#{content}</div>");</script>{parse template="registerCoppaStart" group="register" params=""}</div>
-
Скрываем статистику форума от гостей
Переходим в админцентр форума --> Внешний Вид --> Управление стилями --> Ваш стиль --> Список форумов --> boardIndexTemplate Найти: <div id='board_statistics' class='statistics clearfix'>Заменить на: <if test="$this->memberData['member_id']"><div id='board_statistics' class='statistics general_box clearfix'Далее в самом низу шаблона найдите последний закрывающийся оператор </if>, и добавьте рядом с ним такой же оператор..
-
Выравнивание текста
Доброго времени суток. Бывает случается так, что вся информация на каком-нибудь стиле смещена влево, в этой статье мы исправим этот небольшой "косяк" для ipb 3.2.x Заходим в: Админцентр > Внешний вид > Управление стилями и шаблонами > Ваш шаблон > CSS > ipb_common.css Находим следующий кусок кода: span.bbc_center, div.bbc_center { text-align: center; display: block; }span.bbc_left, div.bbc_left { text-align: left; display: block; }span.bbc_right , div.bbc_right { text-align: right; display: block; }Заменяем его на: span.bbc_center, div.bbc_center, p.bbc_center {text-align: center; display: block; }span.bbc_left, div.bbc_left, p.bbc_left {text-align: left; display: block; }span.bbc_right, div.bbc_right, p.bbc_right {text-align: right; display: block; }
-
Форма входа на главной странице форума
Открытая форма входа на главной странице форума Данная инструкция поможет вам вывести форму входа на главую страницу форума, как на рисунке. Для этого необходимо внести изменения в globalTemplate, а иенно вынести в него форму входа из showLogInForm. Находим в globalTemplate следующий код: <a href="{parse url="app=core&module=global§ion=login" base="public"}" title="{$this->lang->words[" sign_in']}'="" id="sign_in">Заменяем на: <input id="ips_username" type="text" class="input_text" name="ips_username" size="10"" onclick="this.value='';" onfocus="this.select()" onblur="this.value=!this.value?'':this.value;" value="Username"><input id="ips_password" type="password" class="input_text" name="ips_password" size="10" onclick="this.value='';" onfocus="this.select()" onblur="this.value=!this.value?'':this.value;" value="Password"><input type="submit" class="input_submit" value="{$this->lang->words['sign_in']}"><fieldset><input type="hidden" name="auth_key" value="{$this->member->form_hash}"><input type="checkbox" id="remember" checked="checked" name="rememberMe" value="1" class="input_check"></fieldset>
-
Дублирование вкладок форума
Некоторые обновив версию форума сталкиваются с этим Исправляем вот так! АЦ - Внешний вид - Ваш стиль - globalTemplate Увидеть {parse variable="forumActive" default="" oncondition="IPS_APP_COMPONENT == 'forums'" value="active"}{parse variable="membersActive" default="" oncondition="IPS_APP_COMPONENT == 'members'" value="active"}{parse variable="helpActive" default="" oncondition="IPS_APP_COMPONENT == 'core' AND $this->request['module'] == 'help'" value="active"}<if test="!ipsRegistry::$applications['forums']['app_hide_tab'] && !count(ipsRegistry::$applications['forums']['app_tab_groups']) && !IPSMember::isInGroup( $this->memberData, ipsRegistry::$applications['forums']['app_tab_groups'] )"><li id='nav_discussion' class='left {parse variable="forumActive"}'><a href='{parse url="act=idx" seotitle="false" base="public"}' title='{$this->lang->words['go_to_discussion']}'>{IPSLib::getAppTitle( 'forums' )}</a></li></if><if test="!ipsRegistry::$applications['members']['app_hide_tab'] && !count(ipsRegistry::$applications['members']['app_tab_groups']) && !IPSMember::isInGroup( $this->memberData, ipsRegistry::$applications['members']['app_tab_groups'] )"><li id='nav_members' class='left {parse variable="membersActive"}'><a href='{parse url="app=members&module=list" base="public" template="members_list" seotitle="false"}' title='{$this->lang->words['go_to_memberlist']}'>{IPSLib::getAppTitle( 'members' )}</a></li></if><if test="applicationsloop:|:is_array($header_items['applications']) AND count($header_items['applications'])"> <foreach loop="applications:$header_items['applications'] as $data"> <if test="showingapp:|:$data['app_show']"> {parse variable="appActive" default="" oncondition="$data['app_active']" value="active"} <li id='nav_app_{$data['app_dir']}' class="left {parse variable="appActive"}"><a href='{parse url="{$data['app_link']}" seotitle="false" base="public"}' title='{parse expression="sprintf( $this->lang->words['go_to_prefix'], IPSLib::getAppTitle($data['app_dir']) )"}'>{IPSLib::getAppTitle($data['app_dir'])}</a></li> </if> </foreach></if>Заменить : <if test="hasCustomPrimaryNavigation:|:!empty($header_items['primary_navigation_menu'])"> {$header_items['primary_navigation_menu']}<else /> <if test="applicationsloop:|:is_array($header_items['applications']) AND count($header_items['applications'])"> <foreach loop="applications:$header_items['applications'] as $data"> <if test="showingapp:|:$data['app_show']"> {parse variable="appActive" default="" oncondition="$data['app_active']" value="active"} <li id='nav_app_{$data['app_dir']}' class="left {parse variable="appActive"}"><a href='{parse url="{$data['app_link']}" seotitle="{$data['app_seotitle']}" template="{$data['app_template']}" base="{$data['app_base']}"}' title='{parse expression="sprintf( $this->lang->words['go_to_prefix'], IPSLib::getAppTitle($data['app_dir']) )"}'>{IPSLib::getAppTitle($data['app_dir'])}</a></li> </if> </foreach> </if></if>
-
Разделение при слиянии сообщений
При включенной функции слияния сообщений, можно разделить два сообщения картинкой или текстом. Делаем это так. Открыть: /admin/applications/forums/sources/classes/post/classPost.php Найти: $new_post = $last_post['post'].'<br /><br />'.$post['post'];Заменить на: $new_post = $last_post['post'].'<br /><br /><img src="http://ссылка на кртинку" /><br />'.$post['post'];
-
Ошибка при переходе по ссылке Администрация
При нажатии на кнопку Администрация на форуме ipb Может произойти такая ошибка Catchable fatal error: Object of class ipsRegistry could not be converted to string in /home/***/public_html/cache/skin_cache/cacheid_12/skin_stats.php on line 92 Или ошибка сервера 500 Для того чтобы исправить переходим в ACP - Внешний вид - Ваш стиль - Статистика - group_strip Найти: <li><a href="{parse url="showforum={$id}" base="public" template="showforum" seotitle="$this->registry->class_forums->forum_by_id[ $id ]['name_seo']"}">{$name}</a></li>Заменить на: <php>$seoName = $this->registry->class_forums->forum_by_id[$id]['name_seo'];</php>
-
Вставка цветных ников в Shoutbox чате
В данной статье, вы узнаете как сделать подсветку пользователей в чате Shoutbox. Переходим в Ваш шаблон > skin_shoutbox > shout_row и заменяем это: <a href="#" class="at_member" data-store="{$d['members_display_name']}" title="{$this->lang->words['insert_name']}">@</a>на это: <a href="#" class="at_member" data-store="[member={$d['members_display_name']}]" title="{$this->lang->words['insert_name']}">@</a>ББ-коды должны быть включены.
-
Спам форума
У многих, возникает проблема с хостинг компаниями, которые в свою очередь уведомляют пользователей о том, что с вашего сайта идет большой поток спама Email писем. Данная проблема уже известна разработчикам. Виной всему вот этот паразит из Сервисы публикации ссылок Что мы делаем? Проходим в ACP - Система - Сервисы публикации ссылок и нажимаем на карандашик И выключаем Потом пишем письмо хостинг провайдеру о решенной проблеме )
-
[Обновление до 3.3.x] Не работает смена стиля
После обновления бывает ситуация, не меняется стиль, исправляем следующим образом. Пройти в ACP - Внешний вид - Ваш стиль - globalTemplate Найти: <if test="skinchanger:|:count($footer_items['skin_chooser']) > 1"> <if test="uagentlocked:|:$this->memberData['userAgentLocked'] AND ! $this->memberData['userAgentBypass']"> <li id='useragent_msg'> {$this->lang->words['skin_browser_set']} <a href='{parse url="{$this->settings['query_string_formatted']}&unlockUserAgent=1" base="public"}'>{$this->lang->words['override_browser_theme']}</a> </li> <else /> <if test="isTouchDevice:|:$this->registry->output->isTouchDevice()"> <li> <a href='{parse url="{$this->settings['query_string_formatted']}&setAsMobile=1" base="public"}'>{$this->lang->words['set_mobile_theme']}</a> </li> </if> <li> <a rel="nofollow" id='new_skin' href='#'>{$this->lang->words['change_theme']}</a> <ul id='new_skin_menucontent' class='ipbmenu_content with_checks' style='display: none'> <foreach loop="$footer_items['skin_chooser'] as $skin"> <li <if test="$skin['selected']">class='selected'</if>> <a href='{parse url="{$this->settings['query_string_formatted']}&k={$this->member->form_hash}&settingNewSkin={$skin['id']}" base="public"}'>{$skin['title']}</a> </li> </foreach> </ul> </li> </if></if>Заменить на: <if test="skinchanger:|: ! $this->member->is_not_human && count($footer_items['skin_chooser']) > 1"> <if test="uagentlocked:|:$this->memberData['userAgentLocked'] AND ! $this->memberData['userAgentBypass']"> <li id='useragent_msg'> {$this->lang->words['skin_browser_set']} <a href='#' data-clicklaunch='changeSkin' data-skinid='unlockUserAgent'>{$this->lang->words['override_browser_theme']}</a> </li> <else /> <if test="isTouchDevice:|:$this->registry->output->isTouchDevice()"> <li> <a href='#' data-clicklaunch='changeSkin' data-skinid='setAsMobile'>{$this->lang->words['set_mobile_theme']}</a> </li> </if> <li> <a rel="nofollow" id='new_skin' href='#'>{$this->lang->words['change_theme']}</a> <ul id='new_skin_menucontent' class='ipbmenu_content with_checks' style='display: none'> <foreach loop="$footer_items['skin_chooser'] as $skin"> <li <if test="$skin['selected']">class='selected'</if>> <a href='#' data-clicklaunch='changeSkin' data-skinid='{$skin['id']}'>{$skin['title']}</a> </li> </foreach> </ul> </li> </if></if>