Файловый Архив

  • Неограниченное количество категорий и суб-категорий
  • Настройки прав доступа по группам
  • Настройки прав доступа по каждой категории
  • Предпросмотр медиа файлов: FLV, IFLV, F4A, F4V, MP4, MP3, MOV и других...
  • Мультизагрузка файлов - SWFUploader
  • Добавление файлов с сервера
Подробности и история обновлений продукта в этой теме
 
 
 
 

 
 
Здесь скоро опять что то будет...
 
 
 
 
 
 
Loading

Вернуться   форум vBSupport.org > vBulletin > vBulletin 4.x.x > Внешний вид 4.x.x

Объявления
  • Изменения в правах
  • Каталог Фрилансеров
  • Добро пожаловать!
  • Premoderation
  • Новичкам!
  • For English speaking users
Ответ
 
Опции темы Опции просмотра
Старый 26.03.2010, 13:41   #1
Специалист
 
Аватар для Hitsi
Руководство по редактированию шаблонов

Лицензии у меня нет, так что сапорт распаршивать не могу и официальной документации тоже нет, поэтому что сам наковырял, то и выкладываю

Написано для версии 4.0 и выше
Для понимания всего написаного нужны хотябы основные знания html

1) как найти нужный шаблон, чтобы его исправить

Пример: сместить группу кнопок "отправить сообщение", "расширенный режим", под блоком быстрого ответа

Решение:
Для начала нам надо определить где вообще это все находится. Открывам любую тему в браузере и заглядываем в код (все браузеры имеют опцию просмотра исходного кода страницы). Далее ищем в html названия кнопок "отправить сообщение" и "расширенный режим". Первое у нас попадается часто, а вот второе только в одном месте.

Код:
<div class="blockfoot actionbuttons">
        <div class="group">
            <input type="submit" class="button" value="Отправить сообщение" accesskey="s" title="(Alt + S)" name="sbutton" tabindex="1" id="qr_submit" onclick="clickedelm = this.value" />
            <input type="submit" class="button" value="Расширенный режим" accesskey="x" title="(Alt + X)" name="preview" tabindex="1" id="qr_preview" onclick="clickedelm = this.value" />
            <input type="reset" id="qr_cancelbutton" class="button" style="display:none;" value="Отмена" accesskey="c" title="(Alt + C)" name="cancel" tabindex="4" onclick="qr_reset();" />
        </div>
    </div>
Находим "предложение" которое для этого места может быть уникальным

Код:
name="sbutton" tabindex="1" id="qr_submit"
И производим поиск в шаблонах. В результате мы находим один (если повезет) или несколько шаблонов где это встречается. Из котоых выбираем нужный нам. Круг можно сузить сделав несколько разных запросов и сравнив полученные списки шаблонов.

Вариант второй это поиск по фразе. Заходим в Языки и фразы - поиск во фразах и ищем там "Расширенный режим". Так узнаем какой перемнной принадлежит данная фраза. В нашем случае это "go_advanced". Ищем в шаблонах "{vb:rawphrase go_advanced" и получаем список шаблонов который можно сократить сделав другие запросы.

Далее находим интересующий нас блок и меняем его пока не получим нужный результат... тут уже зависит от того что надо, в нашем случае это замена

Код:
<div class="blockfoot actionbuttons">
на
Код:
<div class="blockfoot" style="text-align:center">
2) принцип построения шаблонов
В 4-ой версии все сделали на div отказавшись от таблиц, я попытаюсь описать основные моменты и отличия данного типа верстки. Дизайнер из меня никудышный, так что как получится
Во первых после тегов <div> и <hr> по умолчанию идет перевод строки и поэтому в таблице стилей для всех этих тегов прописано float:left. В этом случае следующий див или другой элемент или текст будут обтекать этот блок справа. Если вам необходимо всеже перевести строку, то используйте <div class="clear"></div>
Ширина в процентном соотношении учитывается от "родительского блока" (от вышестоящего)
Например
Код:
<div style="width:100px;background-color:#CCCCCC;height:100px;float:left">
    <div style="width:10%;background-color:#777777;height:50px">text</div>
</div>
второй блок будет в ширину 10px, и текст не будет увеличивать блок, он будет поверх него. Если мы укажем ширину больше чем у родительского, то это не увеличит родительский блок, а просто наложит поверх него.
Следующий блок будет накладываться поверх имеющихся, если в "иерархии" он стоит выше
Код:
<div style="width:100px;background-color:#CCCCCC;height:100px;float:left">
    <div style="width:200px;background-color:#777777;height:50px">text</div>
</div>
<div style="width:100px;background-color:#555500;height:100px;float:left">
    text1
</div>
3) Синтаксис шаблонов
Переменные {vb:raw название}
Пример {vb:raw text}

Фразы {vb:rawphrase фраза, ключ1, ключ2}
ключи передавать не обязательно, во фразах это {1}, {2}
Пример
фраза klass="Классный движок {1}"
В шаблоне: {vb:rawphrase klass,'vBulletin'}

Массив {vb:raw массив.элемент} или {vb:raw массив[элемент]} (лучше первый вариант)
Пример {vb:raw post.postid}

Организация цикла
Код:
<vb:each from="массив" key="ключ" value="значение">
</vb:each>
ключ необязателен. Пример:
Фразы:
Код:
Title="Заголовок: <a href='{1}' target='_blank'>{2}</a><br>"
Date="Дата: {1}<br>"
Description="Текст: {1}<br>"
Шаблон:
Код:
<vb:each from="rss" key="rssid" value="rss_value">
{vb:rawphrase Title,{vb:raw rss_value.link},{vb:raw rss_value.title}}
{vb:rawphrase Date,{vb:raw rss_value.date}}
{vb:rawphrase Description,{vb:raw rss_value.description}}
</vb:each>
Условия
Код:
<vb:if condition="условие">
<vb:elseif condition="второе условие" />
<vb:else />
</vb:if>
В условии переменные имеют вид как в php скрипте, т.е. $post[postid], в условии можно пользоваться функциями пхп:in_array, is_array, is_numeric, isset, empty, defined, array
И функциями описанными в движке
boolean is_browser (string $browser, [float $version = 0]) проверяет браузер пользователя
string exec_switch_bg ([integer $alternate = 0]) возвращает имя класса CSS

Пример
Код:
<vb:if condition="!is_browser('ie',6) and is_array($post)">
у нас не IE6 и переменная $post - массив
<vb:elseif condition="!is_browser('ie',6)" />
У нас всеравно не IE
<vb:else />
Блин, у меня не браузер а ослик
</vb:if>
Основные "переменные"
stylevar - содержит массив переменных стиля (список можно посмотреть в таблице stylevar БД)
Может вызываться как {vb:stylevar переменная} или $stylevar[переменная] (последнее в усливях)

vboptions - массив опций форума (список можно посмотреть в таблице settings БД)
Может вызываться как {vb:raw vboptions.опция} или $vboptions[опция] (последнее в усливях)

bbuserinfo - массив с данными о пользователе который смотрит страницу

Генерация ссылок
{vb:link forum, аргумент1, аргумент2, аргумент3, аргумент4} - создает ссылку на страницы форума forumdisplay.php
аргумент1 должен содержать массив в котором есть поля forumid и title
аргумент2 содержит массив из опций передаваемых странице (его можно не указывать или написать null) такие как sort, order
аргумент3 указывает какое поле использовать вместо forumid (не обязателен)
аргумент4 указывает какое поле использовать вместо title (не обязателен)

{vb:link thread, аргумент1, аргумент2, аргумент3, аргумент4} - создает ссылку на страницы форума showthread.php
аргумент1 должен содержать массив в котором есть поля threadid и title
аргумент2 содержит массив из опций передаваемых странице (его можно не указывать или написать null) такие как p, viewfull
аргумент3 указывает какое поле использовать вместо threadid (не обязателен)
аргумент4 указывает какое поле использовать вместо title (не обязателен)

{vb:link member, аргумент1, аргумент2, аргумент3, аргумент4} - создает ссылку на страницe форума member.php
аргумент1 должен содержать массив в котором есть поля username и userid
аргумент2 содержит массив из опций передаваемых странице (его можно не указывать или написать null)
аргумент3 указывает какое поле использовать вместо userid (не обязателен)
аргумент4 указывает какое поле использовать вместо username (не обязателен)

Шаблон в шаблоне подгружается как переменная
Пример {vb:raw headinclude} - подгрузит шаблон headinclude, но если только эта переменная передавалась конкретно этому шаблону

4) переменные и шаблоны в php скриптах

$templater = vB_Template::create('polloption'); - создаем "запрос" к шаблону
$templater->register('option', $option); - регистрируем для этого шаблона переменную names и передаем ей значение
$pollbits = $templater->render(); обрабатываем шаблон
Если надо добавить свою переменную, то находим нужный пхп файл, находим в нем место где формируется нужный шаблон и добавляем туда строчку с регистрацией нужной переменной.
Тут думаю для тех кто знает php понятно что к чему, а кто не знает, то им в общем-то и не надо )

Последний раз редактировалось Hitsi; 12.06.2010 в 14:55..
  Ответить с цитированием
Сказали Спасибо:
Скрыть список поблагодаривших

Advance (18.07.2010), AkPeter (28.03.2010), Amorph (13.02.2011), bigcat (30.03.2012), CoValent (04.05.2010), darky (26.12.2010), darsitaros (14.06.2010), dmnangel (22.12.2010), FoM (12.06.2010), GooD (29.09.2010), JK777 (03.04.2010), KolobOKs (19.04.2010), krasadsl (26.03.2010), krotozer (20.02.2012), louso (26.03.2010), NeoSOV (27.03.2010), O'Neil (03.07.2010), omentos (19.04.2010), oriGN (08.07.2010), Pro (27.09.2010), rolexxx4k (27.03.2010), s00r (26.03.2010), SergeV (31.03.2010), SMak044 (10.04.2010), Sol (25.11.2010), svpuk (03.10.2010), VamKir (26.03.2010), weroroot (30.09.2010), Тиджик (25.06.2010)
Рекламка
Реклама на форуме
Старый 12.06.2010, 14:11   #2
ser
Продвинутый
Не понял как скрыть текст или переменную для определенной группы
  Ответить с цитированием
Старый 12.06.2010, 14:54   #3
Hitsi
Специалист
 
Аватар для Hitsi
скрываем текст для 6 группы
Код:
<vb:if condition="$bbuserinfo[usergroupid]!=6">текст</vb:if>
ЗЫ: переменная $bbuserinfo хранит информацию о пользователе который смотри страницу... сейчас добавлю в первый пост )
  Ответить с цитированием
Старый 27.09.2010, 16:28   #4
TSka
Простоузер
Цитата:
Сообщение от Hitsi Посмотреть сообщение
$templater = vB_Template::create('polloption'); - создаем "запрос" к шаблону
$templater->register('option', $option); - регистрируем для этого шаблона переменную names и передаем ей значение
$pollbits = $templater->render(); обрабатываем шаблон
Если надо добавить свою переменную, то находим нужный пхп файл, находим в нем место где формируется нужный шаблон и добавляем туда строчку с регистрацией нужной переменной.
А не подскажете, как добавить переменную в шаблон в 3.8.x ветке?

Upd:разобрался сам. Оказалось, что просто переменная пустая передавалась.

Последний раз редактировалось TSka; 27.09.2010 в 16:39..
  Ответить с цитированием
Старый 28.09.2010, 13:50   #5
a_n_d_y
Знаток
 
Аватар для a_n_d_y
TSka, а не судьба в соответствующей ветке об этом узнать? 3.8.х уже по мельчайшим частям разобрали...
  Ответить с цитированием
Старый 22.12.2010, 09:34   #6
dmnangel
Простоузер
У меня два вопроса:
1) Допустим я создаю отдельную html странцу, как мне подцепить базу что бы моя страница понимала данные перемены булки
2) Как мне написать условия что бы различный текст отображался в различных разделах С подразделами.
Пример: Я хочу отображать определенную инфу для определенных разделов (включая подразделы, если они еть) в шаблоне postbit_l


PS если вопрос не актуален в этой теме, прошу переместить куда следует :( Но тут меня интересуют именно переменные для условия
  Ответить с цитированием
Ответ

Закладки

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.



 
 

Текущее время: 19:50 25.05.2012. Часовой пояс GMT +4.


Powered by vBulletin® Version 3.6.5
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd. Перевод: zCarot