VBsupport перешел с домена .ORG на родной .RU
Ура!
Пожалуйста, обновите свои закладки - VBsupport.ru
Блок РКН снят, форум доступен на всей территории России, включая новые терртории, без VPN
На форуме введена премодерация ВСЕХ новых пользователей
Почта с временных сервисов, типа mailinator.com, gawab.com и/или прочих, которые предоставляют временный почтовый ящик без регистрации и/или почтовый ящик для рассылки спама, отслеживается и блокируется, а так же заносится в спам-блок форума, аккаунты удаляются
Если вы хотите приобрести какой то скрипт/продукт/хак из каталогов перечисленных ниже: Каталог модулей/хаков
Ещё раз обращаем Ваше внимание: всё, что Вы скачиваете и устанавливаете на свой форум, Вы устанавливаете исключительно на свой страх и риск.
Сообщество vBSupport'а физически не в состоянии проверять все стили, хаки и нули, выкладываемые пользователями.
Помните: безопасность Вашего проекта - Ваша забота. Убедительная просьба: при обнаружении уязвимостей или сомнительных кодов обязательно отписывайтесь в теме хака/стиля
Спасибо за понимание
Уважаемые Гуру и другие члены форума, хотелось бы понять как пишутся плагины (хаки, продукты). С подробным описанием если не сложно... что, как и почему...
Рассматривал на примере welcome_panel modified by kerk. Вот что мне удалось сообразить:
XML (англ.eXtensible Markup Language — расширяемый язык разметки; произносится [экс-эм-э?л]) — рекомендованный Консорциумом Всемирной паутиныязык разметки, фактически представляющий собой свод общих синтаксических правил. XML — текстовый формат, предназначенный для хранения структурированных данных (взамен существующих файловбаз данных), для обмена информацией между программами, а также для создания на его основе более специализированных языков разметки (например, XHTML), иногда называемых словарями. XML является упрощённым подмножеством языка SGML.
Целью создания XML было обеспечение совместимости при передаче структурированных данных между разными системами обработки информации, особенно при передаче таких данных через Интернет. Словари, основанные на XML (например, RDF, RSS, MathML, XHTML, SVG), сами по себе формально описаны, что позволяет программно изменять и проверять документы на основе этих словарей, не зная их семантики, то есть не зная смыслового значения элементов. Важной особенностью XML также является применение так называемых пространств имён (англ.namespace).
ISO/IEC 8859-1 (также известная как ISO 8859-1 и Latin-1) — кодовая страница, предназначенная для западноевропейских языков; она базируется на символьном наборе популярных в прошлом терминалов VT220. Кодовые позиции 0—31 (0x0—0x1F) и 127—159 (0x7F—0x9F) не определены. По образцу ISO 8859-1 сделаны все остальные кодировки серии ISO 8859. ISO-8859-1 — кодировка, зарегистрированная IANA в 1992 г. В отличие от ISO/IEC 8859-1, кодовые позиции 0—31 и 127—159 здесь заполнены управляющими символами (большинство из которых, впрочем, всё равно никто не использует). В HTML ISO-8859-1 является кодировкой по умолчанию (в XHTML, однако, кодировкой по умолчанию является UTF-8).
IANA разрешает использовать следующие варианты названия: ISO_8859-1:1987, ISO_8859-1, ISO-8859-1, iso-ir-100, sISOLatin1, latin1, l1, IBM819, CP819.
В Юникоде первые 256 кодовых позиций совпадают с ISO-8859-1.
В Microsoft Windows для западноевропейских языков используется кодировка Windows?1252, которая отличается от ISO-8859-1 тем, что позиции 128—159 здесь заняты разными полезными типографскими символами. Большинство браузеров не различают ISO-8859-1 и Windows?1252 — фактически и в том, и в другом случае они отображают текст как Windows?1252.
Такая путаница между этими двумя кодировками привела к тому, что многие программы, генерирующие файлы HTML, ошибочно обозначали символы их кодами из Windows?1252 вместо кодов Юникода (исходя из того, что номер символа в ISO-8859-1 равен его номеру в Юникоде): например, тире (—) обозначалось — вместо правильного —, многоточие обозначалось … вместо правильного … и т. д.; из-за распространённости этого явления современные браузеры продолжают показывать, например, — как тире, хотя на самом деле — — это управляющий символ «end of guarded area», применение которого в HTML бессмысленно. Кодовые таблицы символов вISO-8859ISO 8859-1 | ISO 8859-2 | ISO 8859-3 | ISO 8859-4 | ISO 8859-5 | ISO 8859-6 | ISO 8859-7 | ISO 8859-8 ISO 8859-9 | ISO 8859-10 | ISO 8859-11 | ISO 8859-12 | ISO-8859-13 | ISO 8859-14 | ISO 8859-15 | ISO 8859-16
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" - продукт активен (включен)
<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"
<if condition="$show['guest']">
показывать это для гостей
<else />
показывать всем, кроме гостей
</if>
<table class="tborder" cellpadding="$stylevar[cellpadding]" cellspacing="$stylevar[cellspacing]" border="0" width="100%" align="center">
<tr>
<td class="tcat" colspan="3" align="center"> код какой хотите видеть в шаблоне
</td>
</tr>
</tbody>
</table>
</if>]]></template>
по поводу ниже приведенного тоже ничего сказать не могу
<plugins>
</plugins>
<phrases>
</phrases>
<options>
</options>
<helptopics>
</helptopics>
<cronentries>
</cronentries>
<faqentries>
</faqentries>
не по порядку, а по мере составления ответа на вопрос:
вопрос:
Quote:
Originally Posted by Лео
как пишутся плагины (хаки, продукты)
я уже где то описывал очень подробно, но нужно поискать, давно было...
ответ:
1. в менеджере продуктов добавить новый продукт
2. там в полях прописать переменную (идентификатор продукта), описание, ссылку на тему продукта (если есть) и т.д.... добавить...
3. создаешь новую группу настроек в основных настройках (если в хаке используются свои настройки), произвольная переменная, но лучше делать, что бы было все на своих местах, открой любой один из недавних моих продуктов (не переделку), там везде стоит префикс - "kr_" + "product_id" + "free_var"
4. когда добавляешь новую настройку к хаку, то указываешь идентификатор продукта (хак)
5. когда добавляешь новый шаблон (если в хаке используются шаблоны), то указываешь идентификатор продукта (хак)
6. когда добавляешь новый плагин (если в хаке используются плагины), то указываешь идентификатор продукта (хак), указываешь хук (hook), которым этот плагин будешь цеплять, активен/нет, добавить....
вопрос:
Quote:
Originally Posted by Лео
date="1127431399" - дата создания/редактирования шаблона
// запрос в БД в табл. 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
ответ:
плагины,
фразы,
настройки,
помощь, если есть (не обязательно),
выполнение кода по расписанию, если есть в хаке (не обязательно),
текст FAQ если есть (не обязательно)
так же в продукте может быть код установки/удаления, может быть разным, например создание/удаление своих таблиц в БД и/или добавление/удаление новых полей в уже существующие таблицы
когда продукт готов - экспорт продукта из менеджера
===
вот собсно как то так, если коротко, а если все подробно, то это не одна страница текста будет и не один день работы
@Лео
В Черном списке
Join Date: Jan 2006
Posts: 1,345
Версия vB: 4.1.x
Reputation:
Professional 466
Репутация в разделе: 304
1
Quote:
Originally Posted by kerk
3. создаешь новую группу настроек в основных настройках (если в хаке используются свои настройки), произвольная переменная, но лучше делать, что бы было все на своих местах, открой любой один из недавних моих продуктов (не переделку), там везде стоит префикс - "kr_" + "product_id" + "free_var"
не совсем понятно...как добавлять новую группу настроек? Продукт создал... а где остальное заполнять? и что за "kr_" + "product_id" + "free_var"?
при нажатии Добавить новый модуль 2 строку Местоположение модуля существует возможность выбора только от хака БЛАГОДАРНОСТИ ЗА СООБЩЕНИЕ
Как дописывать код в шаблоны при помощи хака?
Например в шаблон headinclud мне нужно добавить JS
Last edited by Лео : 07-05-2008 at 11:25 AM.
Reason: Добавлено сообщение
kerk
k0t
Join Date: May 2005
Location: localhost
Posts: 28,711
Версия vB: 3.8.x
Пол:
Reputation:
Гуру 20257
Репутация в разделе: 8432
8
Quote:
Originally Posted by Лео
Например в шаблон headinclud мне нужно добавить JS
можно добавить прямо в шаблон, если это ссылка на файл скрипта, либо подключить код скрипта как шаблон плагином, например:
1 вариант - у тебя уже есть шаблон с именем tamplate_name, нужно в шаблоне воблы найти код, который от версии к версии не меняется, например в версии 3.7.2 в шаблоне headinclude есть такая строка <!-- / CSS Stylesheet -->, мы можем использовать ее для нужных нам целей, без правки шаблона вручную, добавляем плагин с кодом:
или если это не ссылка на файл, а сам код яваскрипта, то и в шаблоне соотв. код JS
Quote:
Originally Posted by Лео
"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 Лео
не совсем понятно...как добавлять новую группу настроек?
это можно сделать только в отладочном режиме (debug mode)
@андэд
Продвинутый
Join Date: Aug 2005
Location: север
Posts: 289
Версия vB: 3.7.2
Reputation:
Опытный 61
Репутация в разделе: 53
0
kerk, а как можно добавить группу настроек в форму создания/редактирования разделов?
kerk
k0t
Join Date: May 2005
Location: localhost
Posts: 28,711
Версия vB: 3.8.x
Пол:
Reputation:
Гуру 20257
Репутация в разделе: 8432
1
это можно сделать только редактированием файла forum.php в админке
смотри структуру файла
@Лео
В Черном списке
Join Date: Jan 2006
Posts: 1,345
Версия vB: 4.1.x
Reputation:
Professional 466
Репутация в разделе: 304
0
1. Возможна ли вставка ссылок в RSS ленту без правки файлов?
2. Как расписать правильно условия для следующего меню в коде модуля?
Учитывая знания которыми в этой теме поделился kerk, за что очередное спасибо и не последнее)) Я замутил следующий велосипед:
Создать шаблоны ld_monetisation_addlinks_cont_1
HTML Code:
<sape_index>
ld_monetisation_addlinks_cont_2
HTML Code:
</sape_index>
и плагин "Автозаполнение postbit_legacy" в postbit_legacy_start