форум vBSupport.ru > vBulletin > Вопрос — Ответ
  • »
VBsupport перешел с домена .ORG на родной .RU Ура! Пожалуйста, обновите свои закладки - VBsupport.ru
 
 
 
 
Лео
В Черном списке
 
Лео's Avatar
Default [FAQ] vBulletin Продукты своими руками
8

Уважаемые Гуру и другие члены форума, хотелось бы понять как пишутся плагины (хаки, продукты). С подробным описанием если не сложно... что, как и почему...
Рассматривал на примере welcome_panel modified by kerk.
Вот что мне удалось сообразить:
Code:
<?xml version="1.0" encoding="ISO-8859-1"?>
XML
encoding
Code:
<product productid="welcome_panel" title="Welcome Panel" description="modified by kerk." version="1.0.0" active="1">
product - говорит форуму что данный файл является продуктом
productid="название продуктана буржуйском" - Идентификатор продукта (системная необходимость)
title="название продукта" - в установленных продуктах отображается
/admincp/plugin.php?do=product

description="описание продукта" - в установленных продуктах отображается version="1.0.0" - версия продукта
active="1" - продукт активен (включен)

Лео добавил 05.07.2008 в 06:18
Code:
<url />
    <versioncheckurl />
    <dependencies>
    </dependencies>
    <codes>
    </codes>
Ничего не знаю... прошу разжевать.. я поправлю пост....

Code:
<templates>
        <template name="forumhome_welcomepanel" templatetype="template" date="1127431399" username="kerk" version="3.5.0 Gold"><![CDATA[<if condition="$bbuserinfo[userid]">      
   КОД ШАБЛОНА      
   </if>]]></template>
</templates>
<templates>смотрите ниже пример шаблона</templates> - "тег" отделяющий шаблоны от плагинов (об этом ниже) Изменяет шаблоны форума при импорте продукта.
<template>Код внутри шаблона</template> - тег шаблона
Применяются следующие параметры для тега <template>:
name="forumhome_welcomepanel" - имя шаблона
templatetype="template" - тип шаблона насколько я понял (хотелось бы уточнить на какие виды они делятся)
date="1127431399" - дата создания/редактирования шаблона (не понимаю, если не сложно расшифруйте как переводить в нормальный формат)
username="kerk" - Имя юзверя создавшего шаблон (при изменении редактируемого шаблона меняется на это *поседний раз редактировалось*)
version="3.5.0 Gold" - версия форума для которой написан шаблон (при импорте есть галочка *игнорировать версию форума*)
![CDATA - сокращение от character data что в переводе с английского обозначает «символьные данные.» Используется для разных, но связных между собой целей в языках разметки SGML и XML. CDATA показывает, что определённая часть документа представляет собой символьные данные, в отличие от несимвольных или символьных, но особым образом структурированных данных. подробнее...
<if condition="$bbuserinfo[userid]"></if> - if (если) condition (условие) $bbuserinfo[userid] (загадка для меня) - тег выполняющий условие
пример "if else"
пример шаблона

по поводу ниже приведенного тоже ничего сказать не могу
<plugins>
</plugins>
<phrases>
</phrases>
<options>
</options>
<helptopics>
</helptopics>
<cronentries>
</cronentries>
<faqentries>
</faqentries>

Пример шаблона zCarot]

Last edited by Лео : 07-05-2008 at 06:43 AM. Reason: Добавлено сообщение
Bot
Yandex Bot Yandex Bot is online now
 
Join Date: 05.05.2005
Реклама на форуме А что у нас тут интересного? =)
 
 
kerk
k0t
 
kerk's Avatar
Default
6

не по порядку, а по мере составления ответа на вопрос:
вопрос:
Quote:
Originally Posted by Лео View Post
как пишутся плагины (хаки, продукты)
я уже где то описывал очень подробно, но нужно поискать, давно было...
ответ:
1. в менеджере продуктов добавить новый продукт
2. там в полях прописать переменную (идентификатор продукта), описание, ссылку на тему продукта (если есть) и т.д.... добавить...
3. создаешь новую группу настроек в основных настройках (если в хаке используются свои настройки), произвольная переменная, но лучше делать, что бы было все на своих местах, открой любой один из недавних моих продуктов (не переделку), там везде стоит префикс - "kr_" + "product_id" + "free_var"
4. когда добавляешь новую настройку к хаку, то указываешь идентификатор продукта (хак)
5. когда добавляешь новый шаблон (если в хаке используются шаблоны), то указываешь идентификатор продукта (хак)
6. когда добавляешь новый плагин (если в хаке используются плагины), то указываешь идентификатор продукта (хак), указываешь хук (hook), которым этот плагин будешь цеплять, активен/нет, добавить....
вопрос:
Quote:
Originally Posted by Лео View Post
date="1127431399" - дата создания/редактирования шаблона
ответ:
UNIX Timestamp - юникс время от 01.01.1970 г
PHP Code:
// запрос в БД в табл. table_name
$result $vbulletin->db->query_read("
                                  SELECT table_name.*,
                                  FROM " 
TABLE_PREFIX "table_name AS table_name
                            WHERE table_name.userid = " 
intval($vbulletin->userinfo['userid']) . "
                            ORDER BY table_name.date ASC
                      "
);
$var $vbulletin->db->fetch_array($result); // массив данных из табл table_name, где date == 1127431399

$var['date'] = vbdate("H:i d.m.Y"$var['date'], false);

print 
$var['date']; // результат: 00:23 23.09.2005
print $var['userid']; // результат: 1 (к примеру)
print $var['username']; // результат: kerk (к примеру) 
вопрос:
Quote:
Originally Posted by Лео View Post
<plugins>
</plugins>
<phrases>
</phrases>
<options>
</options>
<helptopics>
</helptopics>
<cronentries>
</cronentries>
<faqentries>
</faqentries>
ответ:
плагины,
фразы,
настройки,
помощь, если есть (не обязательно),
выполнение кода по расписанию, если есть в хаке (не обязательно),
текст FAQ если есть (не обязательно)

так же в продукте может быть код установки/удаления, может быть разным, например создание/удаление своих таблиц в БД и/или добавление/удаление новых полей в уже существующие таблицы

когда продукт готов - экспорт продукта из менеджера
===
вот собсно как то так, если коротко, а если все подробно, то это не одна страница текста будет и не один день работы
 
 
Лео
В Черном списке
 
Лео's Avatar
Default
1

Quote:
Originally Posted by kerk View Post
3. создаешь новую группу настроек в основных настройках (если в хаке используются свои настройки), произвольная переменная, но лучше делать, что бы было все на своих местах, открой любой один из недавних моих продуктов (не переделку), там везде стоит префикс - "kr_" + "product_id" + "free_var"
не совсем понятно...как добавлять новую группу настроек? Продукт создал... а где остальное заполнять? и что за "kr_" + "product_id" + "free_var"?

при нажатии Добавить новый модуль 2 строку Местоположение модуля существует возможность выбора только от хака БЛАГОДАРНОСТИ ЗА СООБЩЕНИЕ

Что касается времени, нашел удобную вещ по твоей ссылке Unix time конвертор

Как дописывать код в шаблоны при помощи хака?
Например в шаблон headinclud мне нужно добавить JS

Last edited by Лео : 07-05-2008 at 10:25 AM. Reason: Добавлено сообщение
 
 
kerk
k0t
 
kerk's Avatar
Default
8

Quote:
Originally Posted by Лео View Post
Например в шаблон headinclud мне нужно добавить JS
можно добавить прямо в шаблон, если это ссылка на файл скрипта, либо подключить код скрипта как шаблон плагином, например:
1 вариант - у тебя уже есть шаблон с именем tamplate_name, нужно в шаблоне воблы найти код, который от версии к версии не меняется, например в версии 3.7.2 в шаблоне headinclude есть такая строка <!-- / CSS Stylesheet -->, мы можем использовать ее для нужных нам целей, без правки шаблона вручную, добавляем плагин с кодом:

PHP Code:
$search '<!-- / CSS Stylesheet -->';
$vbulletin->templatecache['headinclude'] = str_replace($search$search.fetch_template('tamplate_name'), $vbulletin->templatecache['headinclude']); 
и подключаем этот плагин хуком global_start
сам код нашего шаблона может выглядеть так:
HTML Code:
<script type="text/javascript" src="clientscript/your_js.js"></script>
или если это не ссылка на файл, а сам код яваскрипта, то и в шаблоне соотв. код JS

Quote:
Originally Posted by Лео View Post
"kr_" + "product_id" + "free_var"?
как пример, хак vBGarage:
<product productid="kr_vbgarage" active="1">
где kr_ - префикс и vbgarage - идентификатор продукта, по этому префиксу я быстро нахожу свои продукты/плагины/шаблоны
и далее на примере шаблона:
<template name="vbgarage_addgarage" templatetype="template" date="1211514258" username="kerk" version="3.8.1">
где vbgarage - идентификатор продукта и addgarage - что бы самому понятней было, за что отвечает шаблон, в данном случае, это добавление авто в гараж

Quote:
Originally Posted by Лео View Post
не совсем понятно...как добавлять новую группу настроек?
это можно сделать только в отладочном режиме (debug mode)



 
 
андэд
Продвинутый
 
андэд's Avatar
Default
0

kerk, а как можно добавить группу настроек в форму создания/редактирования разделов?
Attached Thumbnails
screen_2008.07.29_13-08-49.jpg  
 
 
kerk
k0t
 
kerk's Avatar
Default
1

это можно сделать только редактированием файла forum.php в админке
смотри структуру файла
 
 
Лео
В Черном списке
 
Лео's Avatar
Default
0

1. Возможна ли вставка ссылок в RSS ленту без правки файлов?
2. Как расписать правильно условия для следующего меню в коде модуля?
Code:
<select name=\"setting[$setting[varname]]\" tabindex=\"1\" class=\"bginput\">
<option value=\"0\" " . iif($setting['value']=='0','selected="selected"') . ">cp1251</option>
<option value=\"1\" " . iif($setting['value']=='1','selected="selected"') . ">utf8</option>
</select>
код взят как пример из хака "кто скачивал"

3. Где лучше прописывать "ВЫКЛЮЧЕНИЕ" в шаблонах или модулях?
Code:
<if condition="$vboptions[xxx]==1">
бла бла бла
</if>

Last edited by Лео : 07-27-2009 at 05:19 AM.
 
 
GiveMeABreak
Эксперт
 
GiveMeABreak's Avatar
Default
2

Quote:
Originally Posted by Лео View Post
. Где лучше прописывать "ВЫКЛЮЧЕНИЕ" в шаблонах или модулях?
если хах без плагинов - в шаблонах
если хак с плагинами - в плагинах

Quote:
Originally Posted by Лео View Post
Как расписать правильно условия для следующего меню в коде модуля? Код: cp1251 utf8
В вобле 3.7 и выше, сделали, чтобы не прописывать эти селекты вот такого рода код:

HTML Code:
select:piped
0|no
1|yes
2|yes_but_disable_moderators
появляется вот такой выбор
Click image for larger version

Name:	Безымянный.JPG
Views:	112
Size:	5.7 KB
ID:	17877
они пишутся так:
HTML Code:
select:piped
значение|фраза, или обычный текст
 
 
Лео
В Черном списке
 
Лео's Avatar
Default
0

Quote:
Originally Posted by GiveMeABreak View Post
В вобле 3.7 и выше, сделали, чтобы не прописывать эти селекты вот такого рода код:
Меня интересует не то что внедрили, а как мне привязать мой код в настройках к плагину для выбора пользователем кодировки его скрипта.

Лео добавил 28.07.2009 в 06:03
Где можно в админке добавить данные для этой строки?
<phrasetype name="Название группы фраз" fieldname="Префикс фразы">

Last edited by Лео : 07-28-2009 at 06:03 AM. Reason: Добавлено сообщение
 
 
Лео
В Черном списке
 
Лео's Avatar
Question
0

Очередное "КАК?"))
Задача:

Велосипед
Прошу помощи в более компактной и правильной реализации
 

Tags
faq, utf-8, xml, кодировка, продукт


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 02:03 AM.


Powered by vBulletin® Version 3.6.5
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Loading...