форум vBSupport.ru > vBSupport.ru > How-Tos, Hints & Tips > Статьи, обзоры, каталоги
Register Меню vBsupport Изображения Files Manager О рекламе Today's Posts Search
  • Родная гавань
  • Блок РКН снят
  • Premoderation
  • For English speaking users
  • Каталог Фрилансеров
  • If you want to buy some product or script
  • Администраторам
VBsupport перешел с домена .ORG на родной .RU Ура! Пожалуйста, обновите свои закладки - VBsupport.ru
Блок РКН снят, форум доступен на всей территории России, включая новые терртории, без VPN
На форуме введена премодерация ВСЕХ новых пользователей

Почта с временных сервисов, типа mailinator.com, gawab.com и/или прочих, которые предоставляют временный почтовый ящик без регистрации и/или почтовый ящик для рассылки спама, отслеживается и блокируется, а так же заносится в спам-блок форума, аккаунты удаляются
for English speaking users:
You may be surprised with restriction of access to the attachments of the forum. The reason is the recent change in vbsupport.org strategy:

- users with reputation < 10 belong to "simple_users" users' group
- if your reputation > 10 then administrator (kerk, Luvilla) can decide to move you into an "improved" group, but only manually

Main idea is to increase motivation of community members to share their ideas and willingness to support to each other. You may write an article for the subject where you are good enough, you may answer questions, you may share vbulletin.com/org content with vbsupport.org users, receiving "thanks" equal your reputation points. We should not only consume, we should produce something.

- you may:
* increase your reputation (doing something useful for another members of community) and being improved
* purchase temporary access to the improved category:
10 $ for 3 months. - this group can download attachments, reputation/posts do not matter.
20 $ for 3 months. - this group can download attachments, reputation/posts do not matter + adds eliminated + Inbox capacity increased + files manager increased permissions.

Please contact kerk or Luvilla regarding payments.

Important!:
- if your reputation will become less then 0, you will be moved into "simple_users" users' group automatically.*
*for temporary groups (pre-paid for 3 months) reputation/posts do not matter.
Уважаемые пользователи!

На форуме открыт новый раздел "Каталог фрилансеров"

и отдельный раздел для платных заказов "Куплю/Закажу"

Если вы хотите приобрести какой то скрипт/продукт/хак из каталогов перечисленных ниже:
Каталог модулей/хаков
Ещё раз обращаем Ваше внимание: всё, что Вы скачиваете и устанавливаете на свой форум, Вы устанавливаете исключительно на свой страх и риск.
Сообщество vBSupport'а физически не в состоянии проверять все стили, хаки и нули, выкладываемые пользователями.
Помните: безопасность Вашего проекта - Ваша забота.
Убедительная просьба: при обнаружении уязвимостей или сомнительных кодов обязательно отписывайтесь в теме хака/стиля
Спасибо за понимание
 
 
 
 
Luvilla
Гость
Default Не добавляется кнопка/ссылка - для чайников

Статья написана эксклюзивно для vBSupport.org

Общие положения:

Если с налёту не получилось - перечитайте РидМи
Если что-то "не показывается" в установленном стиле - переключитесь на стиль дефолт
Удалили или безвозвратно переделали стиль дефолт?
|____|____|____|____|__
___|____|_бицца_|____|____|
|____|____|_башкой_|____|__
___|____|_здеся_|_____|
|____|____|____|____|__

Если хак должен автоматически добавить кнопку в постбит, или строку в мемберинфо под аватар, или ссылку в навбар; но после установки этого не произошло, причина, по большому счёту, одна: Ваш стиль какой-то деталью принципиально отличается от дефолта.
Все хаки пишутся под стиль дефолт, тестируются на дефолте и отнюдь не обязаны одинаково работать на всех кастомных стилях.

- Ну, хорошо, я это понимаю. Чё делать-то?
- Что делать? Вникать...

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

Но начнём издалека
Вольный пересказ разговора с одного форума:
Quote:
ххх: у меня кнопка "Спасибо" добавилась после всех кнопок, как поставить её первой?
ууу: открой postbit_legacy, найди $template_hook[postbit_controls] и удали, а потом код кнопки поставь, куда хочешь
ххх: спасибо, всё получилось!
Диалог с клиентом:
Quote:
я: куда делись все шаблонные хуки? Стиль стандартный, они должны быть на месте
клиент: что такое шаблонный хук?
я: то, что начинается с $template_hook...
клиент: а, это я убрал, код какой-то непонятный. Но ничего же не поменялось?
$template_hook[какие-то_буквы_нерусские] - нЕ украшение, и совсем нЕ лишний код в шаблоне. И если для Вас он непонятен - задайте вопрос, либо своему техадмину, либо здесь, на форуме

template - шаблон
hook - http://translate.google.com/?hl=ru&tab=mT#en|ru|hook
крюк, крючок, зацепка, зацеплять

Так вот, $template_hook[какие-то_буквы_нерусские] - это тот самый "крючок", на который вешается вывод кнопки/ссылки/чего-то-ещё в разных шаблонах.


Вот теперь мы можем переходить к конкретным примерам

Начнём с самого простого. Если не добавляется кнопка "Фуу" - отлично, вы уже сами догадались, если читали внимательно - нужно открыть postbit/postbit_legacy и посмотреть, а $template_hook[postbit_controls] присутствует? или его удалили, когда ставили "Спасибо"?
Ни сейчас, ни далее, я не буду рассказывать, что-конкретно-куда добавить
у каждого из вас всегда под рукой основной стиль, или так называемый мастер-стиль
Подсказка: чтобы иметь доступ к мастер-стилю, установите Debug Mode From AdminCP [vB 3.5.x - 3.8.x]
Если Вы уже пользуетесь дебагом и внесли кучу изменений в мастер... ну...
|____|____|____|____|__
___|____|_бицца_|____|____|
|____|____|_башкой_|____|__
___|____|_здеся_|_____|
|____|____|____|____|__

Как узнать, к какому хуку цепляется продукт для вывода своей информации?
открываем xml продукта блокнотом, вбиваем в поиск $template_hook и внимательно читаем, что к чему.

Пример: всем известный Cyb-Advanced Forum Rules
поиск $template_hook даст одну строку:
Code:
$template_hook[navbar_buttons_left] .= $cyb_frules_link;
нам останется только сравнить код навбара нашего стиля с дефолтным, если он присутствует, или с основным(мастером), если с дефолтом уже проблемы, и вернуть хук на место.

Отдельно следует сказать пару слов про стили, где навбар сильно переписан, а навигация вынесена в хедер. Именно в таких стилях почему-то частенько отсутствуют хуки навбара
Решение: сравнивайте навбар дефолта с хедером своего стиля
глазами сравнивайте... сидите и читайте, универсальных ответов тут нет, ибо неизвестно, что автор стиля имел в виду
Найдёте соответствия - поймёте, куда ставить хуки

Я открыл xml продукта, но поиск $template_hook не дал результатов.
Это второй распространённый случай. Если в нужном месте шаблона отсутствует штатный хук, разработчикам продукта приходится идти в обход.
И варианты могут быть разные.
РидМи изучили? Там не предлагается ручная правка шаблонов? Ручная правка шаблонов может включать в себя либо добавление своего хука, либо своей переменной (это что-то коротенькое, начинается с $), либо добавление нужного кода целиком.
Так вот, точно прочитали РидМи и там точно ничего такого нет?

Хорошо...
На примере vBFavorites, этот хак установлен здесь и все видят, что где он выводит

1. Не добавилась ссылка в посте
идём продукты и модули - управление модулями
видим список модулей:



очевидно, нам нужен модуль vBFavorites: Inject Into Post ('showthread')
открываем и читаем
Спокойно! Без паники! Букв не много и они не страшные, не китайский и не клингонский
если с кодингом - никак, а с инглишем совсем туго, Гугл-переводчик в помощь, попереводите комментарии
комментарии - это то, что начинается с двух наклонных чёрточек (или с диеза #, или с наклонной чёрточки со звёздочкой)
например,
// switch link type
или
// inject into postbit templates
о, уже теплее, тут что-то про шаблон и про постбит
или
// process replacements
кстати, это как раз то место, которое мы ищем, replacements = замены
смотрим, что там написано дальше
читаем и вникаем
if ($vbulletin->options['legacypostbit'])
если в опциях - постбит_легаси
правда, не сложно?
мы прекрасно понимаем, о чём речь!
дальше:
Code:
$find_string = compile_template('<if condition="$show[\'postcount\']">#<a href="showpost.php?$session[sessionurl]p=$post[postid]&amp;postcount=$post[postcount]" target="new" rel="nofollow" id="postcount$post[postid]" name="$post[postcount]"><strong>$post[postcount]</strong></a></if>');
        $add_string = fetch_template('vbfavorites_postbit');
спокойствие, мы почти у цели! Разберём это место и можно будет писать мемуары в теме Моя первая победа над воблой
так что тут написано?
найти строку в откомпилированном шаблоне - далее идёт, что искать, '<if condition="$show[\'postcount\']">тра-ля-ля...</if>'
и добавить строку fetch_template('vbfavorites_postbit')
О!!!
мы увидели, что именно ищет хак для того, чтобы добавить свой кусок
далее нам потребуется блокнот и терпение
берём этот кусок
Code:
<if condition="$show[\'postcount\']">#<a href="showpost.php?$session[sessionurl]p=$post[postid]&amp;postcount=$post[postcount]" target="new" rel="nofollow" id="postcount$post[postid]" name="$post[postcount]"><strong>$post[postcount]</strong></a></if>
копируем его в блокнот
поскольку ранее мы прочитали, что упоминается постбит_легаси - туда и идём
Но искать строку целиком - бессмысленно, правда? хак её не нашёл, значит, она в шаблоне не такая
Кроме того - Внимание! - в модуле экранированы кавычки - "$show[\'postcount\'], в шаблоне этих экранов (косых чёрточек) не будет
поищем кусочек, который точно присутствует, допустим, id="postcount$post[postid]"
ой, что-то нашлось...
берём всю строку, от иф до иф, копируем и отправляем в блокнотик, под тот текст, который ищет хак
например, стиль mwa08 (восточная экзотика, жесть)) эту строку имеет в таком варианте:
Code:
<if condition="$show['postcount']"># : <a href="showpost.php?$session[sessionurl]p=$post[postid]&amp;postcount=$post[postcount]" target="new" rel="nofollow" id="postcount$post[postid]" name="$post[postcount]">
даже при беглом взгляде видно, что отличий - много
ещё пример, один из моих любимый стилей, Палетт, та же строка:
Code:
<if condition="$show['postcount']"><a href="showpost.php?$session[sessionurl]p=$post[postid]&amp;postcount=$post[postcount]" target="new" rel="nofollow" id="postcount$post[postid]" name="$post[postcount]">post <strong>#$post[postcount]</strong></a></if>
увидели отличия? Для Палетт это наличие/отсутствие # и слова post
но достаточно несовпадения всего одного-единственного символа, чтобы узнавания не произошло

ОК, мы разобрались, почему конкретно этот продукт не смог в этих двух стилях добавить свою ссылку в постбит_легаси
что делать?
два варианта:
- поставить всё вручную
- привести этот кусок постбита в соответствие с дефолтом
второй вариант предпочтительнее по ряду причин
если стиль используется всего один и других стилей не планируется, есть ещё вариант: отредактировать не шаблон, а модуль, скормить ему тот текст, который реально в шаблоне присутствует. Про экранирование не забудьте)

2. На примере того же vBFavorites: не добавилась ссылка в навбар.
Мы посмотрели список модулей, мы видим что-то про inject into пост, тред, мембер профиль... но ни слова про навбар
Читаем список модулей. Кеш темплейтс - это кеширование шаблонов, всевозможные Delete нас тоже не интересуют.. о! vBFavorites: Initialize - давайте посмотрим, что тут
открываем модуль на редактирование и вбиваем в поиск в браузере слово navbar - по-простому.
Что мы видим? комментарий
// inject into the navbar
очень хорошо!
теперь мы знаем, куда смотреть дальше
$find_string = compile_template - да-да-да, что продукт ищет?
Code:
<td class="vbmenu_control"><a href="usercp.php$session[sessionurl_q]">$vbphrase[user_cp]</a></td>
а у нас установлен GreenSmooth, и никакого $vbphrase[user_cp] в навбаре не наблюдается... зато в хедере поиском по $vbphrase[user_cp] находится вот такое:
Code:
<td class="navbarmenu"><a href="usercp.php$session[sessionurl_q]">$vbphrase[user_cp]</a></td>
Ситуация понятна? варианты, что делать, уже описаны для первого примера.
Добавлю только, что если Вы решили скормить продукту текст из своего шаблона, не поленитесь опустить глаза и прочесть в модуле буквально следующую строку:
Code:
$add_string = compile_template('<td class="vbmenu_control" id="vbfavorites"><a href="usercp...
обратите внимание на класс, td class="vbmenu_control" - и не забудьте заменить его на свой, в моём примере это td class="navbarmenu"

Здесь уместно будет ещё раз обратить внимание начинающих администраторов на следующий важный момент. Если вам говорят
Quote:
Originally Posted by Luvilla View Post
если вы не понимаете, что это за кусок кода в шаблоне - ну не трогайте вы его!!!!
Не трогайте лишний раз даже комментарии в шаблонах, ибо есть хаки, которые цепляются именно к комментариям. Это не говоря уж о том, что комменты написаны там не от балды, а для облегчения понимания...
значит, нужно прислушиваться!

потому что вот он, живой пример, здесь, в этом модуле vBFavorites: Initialize мы видим:
$find_string = '<!-- / NAVBAR POPUP MENUS -->';
продукт ищет шаблонный комментарий и к нему добавляет свой блок

= = =
Если Вы дочитали до этого места и у Вас испуг в глазах - ну что ж... выпейте водочки и знайте: на этом форуме Вам всегда с удовольствием помогут, если Вы грамотно сформулируете вопрос.
Убедительная просьба: все вопросы из серии "что-то не добавилось" задавать только в этой теме. Обязательны: ссылка на стиль и ссылка на хак.
Bot
Yandex Bot Yandex Bot is online now
 
Join Date: 05.05.2005
Реклама на форуме А что у нас тут интересного? =)
 
 
kerk
k0t
 
kerk's Avatar
Default
0

wow
супер =)
 
 
Luvilla
Гость
Default

Quote:
Originally Posted by kerk View Post
супер =)
спасибо
весь вечер сочиняла, а вот сейчас перечитала, и вижу, что много моментов остались малопонятны; что по некоторым постулатам можно было бы дать более развёрнутое объяснение
для меня это всегда большая проблема: до какой степени детализации нужно разжёвывать?
и нужно ли вообще разжёвывать?
статья ориентирована на тех, кто хочет понять и научиться, но не представляет, с какой стороны подойти к проблеме
но чем больше букв в каком-нить мануале, тем больше испуг в глазах у новичка
найти бы золотую середину...
 
 
kerk
k0t
 
kerk's Avatar
Default
3

это уже многократно обсуждалось на разных форумах, здесь в том числе =)
есть новички, которые в принципе могут чему то научиться, при желании, а есть те, которым все должны
поэтому, если узер хочет именно научиться, этот мануал - самое то
если же вторая категория, то никакой мануал не поможет, такие люди не в состоянии прочитать и осмыслить двух строк...
 
 
SMak044
Эксперт
 
SMak044's Avatar
Default
1

Luvilla, Прекрасная статья.
Поддержу kerkа, если человек не желает понимать и не желает учится, то размер и содержание значения не имеет.
Лично для меня, статья достаточно информативна и объединяет информацию из множества тем с полезными советами, которые в свое время я искал, что бы понять как это работает.
Но думаю полезно бы добавить кросс линки на тему kerk про создание своего продукта и модуля, чтобы было совсем красиво
 


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off




All times are GMT +4. The time now is 03:25 PM.


Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.