Помощь Модификации шаблонов

Изменяем внешний вид опроса
poll_options.png poll_results.png
Для начала загружаем картинку poll.png из вложения в папку /widgets/ Вашего стиля.

В шаблон EXTRA.css добавляем:
Код:
#PollContainer .secondaryContent    {
border: 1px solid #d0b15e !important;
background-color: #f6e8c3 !important;
border-radius: 5px !important;
}
.pollBlock .question .questionText {
    color: #a56101 !important;
    float: left;
    font-size: 16pt;
}
.pollBlock .pollOptions, .pollBlock .pollResults {
    border-bottom: 1px solid #dbc17c !important;
    border-top: 1px solid #dbc17c !important;
    margin: 5px 0;
    padding: 5px 0;
    width: 100%;
}
.pollBlock .questionMark {
    -moz-border-radius: 5px 5px 5px 5px;
    background: url("@imagePath/xenforo/widgets/poll.png") no-repeat scroll 0 0 !important;
    color: none !important;
    font-family: none !important;
    font-size: 0 !important;
    height: 40px;
    left: 0;
    line-height: 40px;
position: absolute;
text-align: center;
top: 0;
width: 40px;
}
.pollBlock .pollOption label:hover{
background: none repeat scroll 0 0 #eed593 !important;
}
 

Вложения

  • poll.png
    poll.png
    2,4 KB · Просмотры: 89
Эффект снега на боковых панелях
6DFhQ.png

В шаблон EXTRA.CSS добавляем:
Код:
.sidebar .section:before {
    content: "";
    display: block;
    height: 25px;
    margin-top: 5px;
    background: url("@imagePath/xenforo/overlay/sidebar_xmas.png") no-repeat scroll left transparent;
}
Изображение sidebar_xmas.png из вложения кладём в папку /overlay/ Вашего стиля.
 

Вложения

  • sidebar_xmas.png
    sidebar_xmas.png
    4,3 KB · Просмотры: 49
Изменяем внешний вид для вложений
77ITw.png
Картинку attach-gradient.png из вложения ниже кладём в папку /gradients/ Вашего стиля, а изображение download.png кладём в папку /icons/.

В шаблон Extra.css добавляем:
Код:
.attachedFiles {
    border: 1px solid #b0d780 !important;
    margin: 1em 0px 1em 0 !important;
}
 
.attachedFiles .attachedFilesHeader {
 
    background: none repeat-x scroll center top #dff4c6 !important;
    border-bottom: 0px solid #A5CAE4 !important;
    color: #3f5426 !important;
    font-family: 'Trebuchet MS',Helvetica,Arial,sans-serif;
    font-size: 11px;
}
 
.attachedFiles .attachmentList {
    background: none repeat-x scroll center top #dff4c6 !important;
    border-radius: 0px 0px 5px 5px !important;
    overflow: hidden;
    padding: 5px 10px 0 !important;
}
 
.attachment .boxModelFixer {
    background-color: none !important;
    background:url("@imagePath/xenforo/gradients/attach-gradient.png") repeat-x scroll center bottom #83b842 !important;
    border: 1px solid #468000 !important;
    box-shadow: 0 1px 0 rgba(255, 255, 255, 0.4) inset, 0 0 0 1px rgba(255, 255, 255, 0.2) inset, 0 1px 0 rgba(255, 255, 255, 0.5);
    border-radius: 5px 5px 5px 5px;
    color: white;
    font: bold 12px/12px Arial,sans-serif !important;
    text-shadow: 0 -1px 0 #2e5103 !important;
    padding: 5px;
}
 
.attachment .thumbnail {
    border-right: 1px solid #507d19 !important;
    box-shadow: 1px 0px 0px 0px #91be59;
}
 
.attachment .attachmentInfo .filename a {
    text-shadow:  0 -1px 0 #c4dda4;
    font: bold 12px/16px Arial,sans-serif;
    color: #314a0f !important;
}
 
.attachment .boxModelFixer .pairsJustified dt {
    color: white !important;
}
 
.attachment .thumbnail .genericAttachment {
    background: url("@imagePath/xenforo/icons/download.png") no-repeat scroll 0 0 transparent !important;
}
 

Вложения

  • attach-gradient.png
    attach-gradient.png
    153 байт · Просмотры: 21
  • download.png
    download.png
    915 байт · Просмотры: 18
Делаем "Запомнить меня" при авторизации по-умолчанию включённой

348.jpg

В шаблоне login_bar_form находим:
Код:
<label for="ctrl_remember" class="rememberPassword"><input type="checkbox" name="remember" value="1" id="ctrl_remember" tabindex="104" /> {xen:phrase stay_logged_in}</label>
И заменяем на:
Код:
<label for="ctrl_remember" class="rememberPassword"><input type="checkbox" name="remember" value="1" checked="checked" id="ctrl_remember" tabindex="104" /> {xen:phrase stay_logged_in}</label>

В шаблоне helper_login_form находим:
Код:
<div><label for="ctrl_pageLogin_remember" class="rememberPassword"><input type="checkbox" name="remember" value="1" id="ctrl_pageLogin_remember" /> {xen:phrase stay_logged_in}</label></div>
И заменяем на:
Код:
<div><label for="ctrl_pageLogin_remember" class="rememberPassword"><input type="checkbox" name="remember" value="1" checked="checked" id="ctrl_pageLogin_remember" /> {xen:phrase stay_logged_in}</label></div>
 
Add AddThis button to "Share This Page" section 1.0 (добавляем кнопку от сервиса AddThis в темы форума)
Для просмотра ссылки Войди или Зарегистрируйся

addthis.png

Открываем шаблон share_page и находим в нём:
Код:
<xen:hook name="share_page_options">
И ниже добавляем:
Код:
<div class="shareControl" style="width:107px">
<div class="addthis_toolbox addthis_default_style ">
    <a class="addthis_counter addthis_pill_style" addthis:url="{$url}" {xen:if {$thread.title}, 'addthis:title="{xen:helper threadPrefix, $thread, escaped}{$thread.title}"'}></a>
</div>
<script type="text/javascript" src="http://s7.addthis.com/js/250/addthis_widget.js#pubid=yourid"></script>
</div>
 
Display a Message to Guests 1.0 (красивое сообщение для гостей)
Для просмотра ссылки Войди или Зарегистрируйся

GuestMessage.png

В самый низ шаблона footer добавляем:
Код:
<xen:if is="!{$visitor.user_id}">
<div id='stickymsg'>
<p class='bbc_center'>Здравствуйте, гость!</p>
<p class='bbc_center'>Если у Вас уже есть учётная запись на нашем форуме, то Вы можете <a href='http://site.ru/index.php?login/'>войти</a>. Если же учётной записи у Вас ещё нет, то зарегистрироваться можно <a href='http://site.ru/index.php?register/'>здесь</a>.</p>
</div>
 
</xen:if>
В шаблон footer.css добавляем:
Код:
 #stickymsg{
position: fixed;
bottom: 10px;
line-height: 16px;
right: 10px;
z-index: 30000;
opacity: 0.8;
width: 260px;
height: auto;
background: #cf3737;
color: #fff;
text-shadow: rgba(0,0,0,0.3) 0px -1px 0px;
padding: 10px;
text-decoration: none;
font-size: 11px;
font-family: Tahoma;
border: 1px solid #771b1b;
box-shadow: rgba(0,0,0,0.3) 0px 1px 4px, inset #f66c6c 0px 1px 0px;
border-radius: 3px;
}
#stickymsg a{ color: #fff; font-weight:bold; text-decoration: none; }
#stickymsg:hover{ opacity: 1; }

Не забудьте поменять ссылки http://site.ru/ на свои ;)
 
User Edit Menu in postbit 1.0 (добавляет меню для редактирования пользователей при просмотре тем форума)
Для просмотра ссылки Войди или Зарегистрируйся

Untitled123.png

В шаблоне message_user_info находим:
Код:
<xen:username user="$user" itemprop="name" rich="true" />
И заменяем на:
Код:
<xen:if is="{$visitor.is_admin}">
    <div class="Popup">
        <span style="display:inline" rel="Menu"><xen:username user="$user" itemprop="name" rich="true" style="display:inline" /></span>
        <div class="Menu JsOnly formPopup">
            <ul class="secondaryContent blockLinksList">
                <li><a style ="cursor: pointer" onClick="window.open('admin.php?users/{$user.user_id}/edit','edit','width=1000,height=850')"><b>Изменить</b></a></li>
                <li><a style ="cursor: pointer" onClick="window.open('admin.php?users/{$user.user_id}/avatar','edit','width=1000,height=650')"><b>Аватар</b></a></li>
                <li><a style ="cursor: pointer" onClick="window.open('admin.php?banning/users/{$user.user_id}/add','ban','width=1000,height=650')"><b>Забанить</b></a></li>
            </ul>
        </div>
    </div>
<xen:else />
    <xen:username user="$user" itemprop="name" rich="true" />
</xen:if>
 
Переименовываем и защищаем admin.php
  1. Ограничение доступа к файлу admin.php по IP через .htaccess.
  2. Ограничение доступа к файлу admin.php по паролю через .htaccess и .htpasswd.
  3. Переименовывание файла admin.php.
Недостатки каждого из методов будут описаны в конце.

1. Ограничение доступа к файлу admin.php по IP через .htaccess

Здесь все просто. Узнаем свой IP (например на сайте Для просмотра ссылки Войди или Зарегистрируйся) и дописываем к файлу .htaccess (в корне форума) следующее:
Код:
<Files admin.php>
  Order deny,allow
  Deny from all
  Allow from 111.222.33.44
</Files>
ErrorDocument 403 http://свой сайт.ру

Вместо IP 111.222.33.44 указываем, естественно, свой.
Если нужно пускать в админку и другие IP, то дописываем следующие через пробел:
Код:
<Files admin.php>
  Order deny,allow
  Deny from all
  Allow from 111.222.33.44 112.223.34.45 113.224.35.46
</Files>

Также можно указывать маски диапазона (может быть полезно, если у вас динамический IP). Ниже указаны примеры маски.
Код:
100.99.88.x = 100.99.88.0/24
100.99.x.x = 100.99.0.0/16
100.x.x.x = 100.0.0.0/8

То есть, указав 100.99.88.x мы будем пускать IP с 100.99.88.0 по 100.99.88.255.
Кстати, вот тут неплохой IP-калькулятор:
Код:
http://ip-calculator.ru

Для тех же, у кого не прописан IP, будет выдаваться страница с ошибкой 403:
Код:
    Forbidden
 
    You don't have permission to access /forum/admin.php on this server.

2. Ограничение доступа к файлу admin.php по паролю через .htaccess и .htpasswd.

Генерируем файл .htpasswd, задав логин и пароль. Можно воспользоваться следующим сервисом:
Код:
http://www.htaccesstools.com/htpasswd-generator/
Вводим желаемый логин и пароль и получаем что-то типа: login:$apr1$sOXY....$C4/V8oJK89nf3D3OEIs5Q/
Сохраняем полученную строчку в файл .htpasswd и загружаем его на сервер. Желательно расположить его выше корня сайта, т.е. там, куда посетители не могут добраться.
Дальше нужно поправить .htaccess, который в корне форума, дописав туда следующее:
Код:
<Files admin.php>
  AuthUserFile /путь/относительно/корня/веб-сервера/до/файла/.htpasswd
  AuthType Basic
  AuthName "Какой-нибудь заголовок для диалогового окна авторизации"
  Require valid-user
</Files>

Теперь при запросе admin.php нужно будет сначала ввести наш новый логин и пароль, и уже только после этого можно будет вводить логин и пароль администратора XenForo.

3. Переименовывание файла admin.php.

Ну тут все просто.

Меняем в корне форума имя у файла admin.php на что-то свое, например, adminka.php.
Но это еще не все. Многие ссылки в админке не будут теперь работать. Поэтому необходимо открыть library/XenForo/Link.php и найдя:
Код:
    $outputLink = 'admin.php' . ($append !== '' ? '?' : '') . $append;

заменить admin.php на наше новое имя:
Код:
    $outputLink = 'adminka.php' . ($append !== '' ? '?' : '') . $append;

В шаблоне moderator_bar находим строку:
Код:
    <a href="admin.php" class="acp adminLink"><span class="itemLabel">{xen:phrase admin_control_panel}</span></a>

и также меняем admin.php на наше новое имя файла.
И еще в шаблоне PAGE_CONTAINER находим:
Код:
    <a href="admin.php">{xen:phrase reopen_via_admin_control_panel}</a>

и меняем admin.php.

И не забываем проделывать эти 4 операции после каждого обновления еще раз!
=============================================================

Недостаток 1-го способа очевиден. Если у вас динамический IP или же к админке должны иметь несколько человек с разными IP, то этот вариант будет несколько затруднительным. Придется вписывать много IP.

Второй способ плох тем, что пароль в админку нужно вводить 2 раза, причем в каждом случае он должен быть разным. Ну и кроме того, у неопытных пользователей даже с инструкцией могут возникнуть вопросы, как правильно защититься дополнительным паролем.

Ну а третий способ плох тем, что необходимо править файл (пусть и один, но все же). Это значит, что при каждом обновлении форума нужно не забыть переименовать обновленный admin.php и заменить новое имя в файле Link.php.

Заметка:

В 1.1.3 в шаблоне PAGE_CONTAINER отсутствует код
Код:
<a href="admin.php">{xen:phrase reopen_via_admin_control_panel}</a>

Ищем шаблон notice_board_closed а в нем код
Код:
<a href="admin.php?options/list/boardActive">{xen:phrase reopen_via_admin_control_panel}</a>
Ищем шаблон navigation_visitor_tab, а в нем код
Код:
<a href="admin.php" class="acp navLink adminLink"><span class="itemLabel">{xen:phrase admin_cp}</span></a>
Меняем на своё название.
  • Защищаемся от залива шелл:
Достаточно часто заливают шелл в папку с аватарами. В XenForo к сожалению нет способа (покрайней мере я не нашел) хранить аватарки в БД, поэтому в папку Avatars и во все ее внутренние папки заливаем файл .htaccess с таким содержанием:
Код:
    RemoveHandler .phtml
    RemoveHandler .php
    RemoveHandler .php3
    RemoveHandler .php4
    RemoveHandler .php5
    RemoveHandler .cgi
    RemoveHandler .exe
    RemoveHandler .pl
    RemoveHandler .asp
    RemoveHandler .aspx
    RemoveHandler .shtml
 
    <Files ~ "\.php|\.phtml|\.cgi|\.exe|\.pl|\.asp|\.aspx|\.sht ml">
    Order allow,deny
    Deny from all
    </Files>
Теперь если кулл хацкер и сможет что то залить, то запустить скрипт ему не удастся.
  • Для nginx в конфиг сайта:
Код:
    location = /admin.php$ {
    auth_basic "Restricted Area";
    auth_basic_user_file htpasswd; # файл в директории конфигов nginx /etc/nginx/htpasswd
    }
в него прописывается пара логин:пароль. Пароль можно сгенерировать тут:
Код:
 http://www.htaccesstools.com/htpasswd-generator/

либо по IP
Код:
    location = /admin.php$ {
    allow 127.0.0.1; # список разрешённых IP
    deny all;
    }
можно оба варианта использовать
Код:
    location = /admin.php$ {
    allow 127.0.0.1; # список разрешённых IP
    deny all;
    auth_basic "Restricted Area";
    auth_basic_user_file htpasswd; # файл в директории конфигов nginx
    }
 
Редактирование сообщений по двойному клику

В шаблоне message находим:
Код:
<div class="messageContent"> 
            <article>
                <blockquote class="messageText ugc baseHtml{xen:if $message.isIgnored, ' ignored'}">
                    <xen:include template="ad_message_body" />
                    {xen:raw $message.messageHtml}
                </blockquote>
            </article>
     
            {xen:raw $messageContentAfterTemplate}
        </div>
И заменяем на:
Код:
<xen:if is="{$post.canEdit}"><span onDblClick="javascipt:window.location.href='{xen:link posts/edit, $post}'"></xen:if>
        <div class="messageContent">
 
            <article>
                <blockquote class="messageText ugc baseHtml{xen:if $message.isIgnored, ' ignored'}">
                    <xen:include template="ad_message_body" />
                    {xen:raw $message.messageHtml}
                </blockquote>
            </article>
 
            {xen:raw $messageContentAfterTemplate}
        </div>
<xen:if is="{$post.canEdit}"></span></xen:if>
 
Добавляем аватар пользователя в верхнюю панель

avatar-in-tab.png

В шаблоне navigation_visitor_tab находим:
Код:
<a href="{xen:link account}" class="navLink accountPopup" rel="Menu"><strong>{$visitor.username}</strong></a>
И заменяем на:
Код:
<a href="{xen:link account}" class="navLink accountPopup" rel="Menu"><img src="{xen:helper avatar, $visitor, s}" class="miniMe" alt="" /><strong>{$visitor.username}</strong></a>

В шаблон EXTRA.css добавляем:
Код:
.navTab .accountPopup img
{
    float: left;
    width: 20px;
    height: 20px;
    margin-right: 5px;
    margin-top: 3px;
    border-radius: 2px;
}
 
Назад
Сверху