Онлайн переводчик

Creating Plugins for Question2Answer

Question2Answer plugins (introduced in Q2A 1.3) allow the platform to be modified or extended without changing the Q2A core. Plugins can integrate with Q2A in one of three ways:

Modules extend Q2A in a defined and specific way. The following types of module are supported from Q2A 1.3 :

page modules add a new type of page to a Question2Answer site.

login modules allow users to log in to Q2A via an external identity provider such as Facebook.

editor modules provide a web interface for writing and editing posts.

viewer modules render content as HTML or text, and often work together with an editor module.

From Q2A 1.4 :

event modules are notified when something important happens, such as content being posted or voted on.

widget modules allow extra content to be shown on Q2A pages, as chosen by the site administrator.

From Q2A 1.5 :

filter modules can validate and/or modify many types of user input, including the content of posts.

search modules can implement a custom indexer and/or search engine for a Q2A site.

captcha modules provide a web interface for human verification, such as reCAPTCHA.

process modules have the opportunity to run at specific stages of Q2A's response processing.

Modules are the preferred method for extending Q2A - more about modules.

Layers modify the HTML output for some elements of a Q2A page. Layers work similarly to advanced themes, by overriding some functions in the base theme class in qa-theme-base.php. Unlike advanced themes, multiple layers can be installed simultaneously via their respective plugins. Layers require Q2A 1.4 .

Overrides allow over 150 core Q2A functions to be modified. Core functions can be replaced by the plugin's code, or they can be wrapped, with the plugin modifying the function's inputs and/or outputs. With wrapping, multiple overrides for the same function in different plugins can be active simultaneously. Overrides require Q2A 1.5 .

The sections below explain the general principles behind plugins. You will also need to read about implementing modules, layers and/or overrides, as well as some functions in Q2A that may be useful in developing your plugin.

To see some examples of plugins, modules and layers, take a look at the qa-plugin directory in your Q2A installation as well as the modules registered in the function qa_register_core_modules() in qa-base.php of Q2A 1.5 .

Directory structure

Plugins for Question2Answer have the following directory structure:

A plugin is contained inside a directory whose name should use only numbers, lowercase letters and hyphens.

The directory name should be descriptive and similar to the plugin's name, such as facebook-login or wysiwyg-editor.

The plugin directory must contain a PHP file named qa-plugin.php whose purpose is described below.

The plugin directory may also contain any other files and subdirectories, including PHP, HTML, Javascript, CSS, etc...

A plugin is activated by installing its directory inside Q2A's qa-plugin directory.

The qa-plugin.php file has two main purposes. First, it registers any modules, layers or overrides provided by the plugin. Second, it contains optional metadata about the plugin and its author. As of Q2A 1.5, it is not recommended for qa-plugin.php to perform any other actions - if this seems necessary, please consider using a process module instead. If you wish to use non English characters in qa-plugin.php, ensure your text editor is using UTF-8 encoding without a BOM (byte order mark).

Registering modules

Each module is implemented as a PHP class with specific member functions, as detailed here. For the sake of speed, the class definition for each module should be in a separate PHP file, since Q2A will only include this file when necessary.

To register a module, call qa_register_plugin_module() in qa-plugin.php, with the following parameters in order:

The type of module, e.g. 'page' or 'login'. You can also use 'module' to register a generic module which can display a form in the admin interface, but is not otherwise used.

The name of the PHP file in the plugin directory containing the module's class declaration, e.g. qa-xml-sitemap.php. Use null if the module's class is defined within qa-plugin.php itself (not recommended for non-trivial modules).

The name of the PHP class in this file that implements the module, e.g. qa_xml_sitemap.

A human-readable module name, which should be descriptive and unique, e.g. 'XML Sitemap'. This may be displayed in the Admin panel and/or used to refer to the module within Q2A's internals.

Registering layers

Each layer is implemented as a PHP file containing a fixed class declaration, as described here. To register a layer, call qa_register_plugin_layer() in qa-plugin.php, with the following parameters in order:

The name of the PHP file in the plugin directory containing the layer's class declaration, e.g. qa-mouseover-layer.php.

A human-readable layer name, which should be descriptive and unique, e.g. 'Mouseover Layer'. This may also be used to refer to the layer within Q2A's internals.

Registering overrides

Overrides are implemented as PHP files which contain the replacement function definitions, as described here. Your functions can call the original Q2A functions using the _base suffix, e.g. qa_lang_base(). To register a file containing overrides, call qa_register_plugin_overrides() in qa-plugin.php with the name of the overrides PHP file in the plugin directory.

Plugin localization

Throughout Q2A, the functions qa_lang() and qa_lang_html() are used to obtain localized language phrases. An identifier string is passed to these functions, which consists of a file prefix, a slash (/) and a phrase key. For example, the identifier 'main/cancel_button' obtains the element with key 'cancel_button' from the appropriate qa-lang-main.php language file. Each language file is a PHP script which returns an array mapping keys to phrases, e.g. see qa-lang-main.php. If you wish to use non English characters in your language files, ensure your text editor is using UTF-8 encoding without a BOM (byte order mark).

From Q2A 1.5 , plugins can add their own language prefixes and phrases by calling qa_register_plugin_phrases() from within qa-plugin.php, with the following parameters in order:

A pattern for the language files within the plugin's directory. The pattern must contain an asterisk (*), which is substituted for the appropriate language code or 'default', which is used if the desired language cannot be found. For example, the pattern 'qa-phrases-*.php' maps to qa-phrases-fr.php for French, qa-phrases-de.php for German and qa-phrases-default.php for defaults. The asterisk can also be in a directory name, e.g. the pattern 'lang-*/phrases.php' would map to lang-fr/phrases.php, lang-de/phrases.php and lang-default/phrases.php respectively.

A prefix used to access the phrases, which must be unique to your plugin. For example, the prefix


Создание Дополнений к программе для Question2Answer

Дополнения (представляется в Q2A 1.3) Question2Answer к программе позволяют платформе быть модифицированным или расширенным без замены ядра Q2A. Дополнения к программе могут объединить с Q2A в одном из трех путей :

Модули расширяют Q2A в определенном и специфическом пути. Следующие виды модуля поддерживаются от Q2A 1.3 :

модули страницы добавляют новый вид страницы к сайту Question2Answer.

модули логина позволяют пользователям регистрироваться к Q2A через внешнего поставщика идентичности как например Фейсбук.

модули редактора обеспечивают сетевой интерфейс для написания и редактирования почт.

модули зрителя оказывают содержимое как HTML или текст, и часто работают вместе с модулем редактора.

От Q2A 1.4 :

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

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

От Q2A 1.5 :

filter модули могут утверждать and/or изменять много видов пользовательского вклада, в том числе содержимое почт.

ищите модули может осуществлять таможенный индексатор and/or искать двигатель для сайта Q2A.

captcha модули обеспечивают сетевой интерфейс для человеческой верификации, как например reCAPTCHA.

обработайте модули имеют возможность бежать на специфических стадиях Q2A обработки ответа.

Модули - предпочитаемый метод для продления Q2A - больше о модулях.

Слои изменяют продукцию HTML для некоторых элементов страницы Q2A. Слои работают так же к передовым темам, отвергая некоторые функции в классе базовой темы в qa-theme-base.php. В отличие от передовых тем, многоразовые слои могут быть установлены одновременно через их соответствующие дополнения к программе. Слои требуют Q2A 1.4 .

Overrides позволяют свыше 150 основной Q2A функционирует, чтобы быть модифицированным. Основные функции может заменить код дополнения к программе, или они могут быть завернуты, с дополнением к программе, изменяющим вклады функции and/or продукцию. С обертыванием, многоразовый overrides для той же функции в различных дополнениях к программе может быть активен одновременно. Overrides требуют Q2A 1.5 .

Секции ниже объясняют общие принципы сзади дополнений к программе. Вам также нужно будет читаться об осуществлении модулей, слоев and/or overrides, также как и некоторые функции в Q2A, который, возможно, полезен в развитии вашего дополнения к программе.

Чтобы видеть, что некоторые примеры дополнений к программе, модулей и слоев, смотрят во вставной для обеспечения качества директорий в вашей установке Q2A также как и модулях, отмечающихся в function модули() ядра_быстродествующей_записи_в основе обеспечения качества.php Q2A 1.5 .

Структура каталога

Дополнения к программе для Question2Answer имеют следующую структуру каталога :

Дополнение к программе содержится внутри директория, чье имя должно пользоваться только номерами, буквами нижнего регистра и дефисами.

Имя каталога должно быть описательным и подобным имени дополнения к программе, как например логин фейсбука или wysiwyg-editor.

Вставной директорий должен содержать файл PHP, названый дополнением обеспечения качества к программе.php, ниже чьей цели описано.

Вставной директорий, возможно, также содержит любые другие файлы и подкаталоги, в том числе PHP, HTML, Javascript, CSS, и т.д...

Дополнение к программе активизирует установка его директория внутри вставного для обеспечения качества директория Q2A.

Дополнение обеспечения качества к программе.php файл имеет две главных цели. Для начала, это регистрирует любые модули, слои или отвергает обеспечено дополнением к программе. Во-вторых, это содержит необязательные метаданные о дополнении к программе и его авторе. Как Q2A 1.5, это не рекомендовано для дополнения обеспечения качества к программе.php, чтобы выполнять любые другие действия - если это кажется необходимым, рассматривайте пользование модулем процесса вместо этого. Если вы желаете использовать не Английские характеры в дополнении обеспечения качества к программе.php, гарантируют, что ваш текстовый редактор пользуется UTF-8, кодируя без ЗМЕИ (марка байтового заказа).

Регистрация модулей

Каждый модуль осуществляется как класс PHP с функциями специфического члена, как детализировано здесь. Ради скорости, определение классов для каждого модуля должно быть в отдельном файле PHP, с тех пор, как Q2A будет только включать этот файл, когда необходимо.

Чтобы зарегистрировать модуль, называют модуль() дополнения_быстродествующей_записи_к программе в дополнении обеспечения качества к программе.php, со следующими параметрами в заказе:

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

Имя файла PHP во вставном директории, содержащем классовую декларацию модуля, e.g. qa-xml-sitemap.php. Пользуйтесь пустым указателем, если класс модуля определяется в пределах дополнения обеспечения качества к программе.php непосредственно (не рекомендовано для нетривиальных модулей).

Имя класса PHP в этом файле, который осуществляет модуль, например быстродествующий_xml_sitemap.

Удобочитаемое для человека module имя, которое должно быть описательным и уникальным, например 'XML Sitemap'. Это, возможно, показывается в группе Admin and/or использованный, чтобы сослаться на модуль в пределах внутренностей Q2A.

Регистрация слоев

Каждый слой осуществляется как файл PHP, содержащий фиксированную классовую декларацию, как описано здесь. Чтобы зарегистрировать слой, называют слой() дополнения_быстродествующей_записи_к программе в дополнении обеспечения качества к программе.php, со следующими параметрами в заказе:

Имя файла PHP во вставном директории, содержащем классовую декларацию слоя, e.g. qa-mouseover-layer.php.

Удобочитаемое для человека имя слоя, которое должно быть описательным и уникальным, например 'Слой Mouseover'. Это, возможно, также использовано, чтобы сослаться на слой в пределах внутренностей Q2A.

Регистрация overrides

Overrides осуществляются как файлы PHP, которые содержат определения функции замены, как описано здесь. Ваши функции могут назвать оригинальный Q2A функционирует пользование _базовым суффиксом, например быстродествующий_lang_основа(). Чтобы зарегистрировать файл, содержащий overrides, называют дополнение_быстродествующей_записи_к программе overrides() в дополнении обеспечения качества к программе.php с именем overrides файла PHP во вставном директории.

Вставная локализация

В течение Q2A, обеспечение_качества функций lang() и быстродествующий_lang_html() использованы, чтобы получить локализованные фразы языка. Строка идентификатора передается этим функциям, который состоит из приставки файла, удара (/) сплеча и ключа фразы. Например, кнопка' идентификатор 'main/отмены_получает элемент с 'кнопкой ключевой отмены'_от соответствующего qa-lang-main.файл php языка. Каждый файл языка - сценарий PHP, который возвращает array ключи отображения фразам, например видят qa-lang-main.php. Если вы желаете использовать не Английские характеры в ваших файлах языка, гарантируйте, что ваш текстовый редактор пользуется UTF-8, кодируя без ЗМЕИ (марка байтового заказа).

От Q2A 1.5, дополнения к программе могут добавить своих собственных приставок языка и фраз, запрашивая фразы() дополнения_быстродествующей_записи_к программе изнутри дополнения обеспечения качества к программе.php, со следующими параметрами в заказе:

Образец для файлов языка в пределах директория дополнения к программе. Образец должен содержать звездочку (*), которая заменяется для соответствующего кода языка или 'невыполнения', которое использовано, если желательный язык не может быть найден. Например, образцовые 'фразы обеспечения качества -*.php' карты к qa-phrases-fr.php для французского языка, qa-phrases-de.php для немецкого языка и невыполнения фраз обеспечения качества.php для невыполнений. Звездочка может также быть в имени каталога, например образцовый 'lang -*/фраз.php' проецировался бы на lang-fr/фразы.php, lang-de/фразы.php и lang-default/фразы.php соответственно.

Приставка использовала, чтобы обратиться к фразам, которые должны быть уникальны к вашему дополнению к программе. Например, prefix 'whizbang' подразумевает эту вашу фразу с ключом