О проекте

Проект 9999p.ru создан для людей, ценящих время и средства. Он поможет вам создать качественный сайт за короткий срок и очень недорого!  Суть его - в разработке сайта на основе готовых решений, которые позволяет зарабатывать другим пользователям уже давно!

Преимущества

Преимущества такой разработки очевидны:

  1. Скорость внедрения
  2. Невысокая стоимость
  3. Высокое качество
  4. Ожидаемый результат

Все включено

В стоимость разработки сайта включены все необходимые операции разработки сайта:

  • Регистрация домена
  • Регистрация хостинга
  • Дизайн сайта
  • Верстка сайта
  • Система управления сайтом
  • Наполнение сайта
  • Публикация сайта в интернете
  • Добавление в поисковые системы

Выполненные работы

Мы создали для наших клиентов

И сейчас занимаемся разаботкой новых. Заказать сайт


Как создать контентных плагинов

Описание

Есть много возможностей использования содержание плагин. Они все должны делать с отображением содержимого и поэтому ваши статьи. Вам понадобится по крайней мере два файла для этого плагина. XML-файл и файл PHP. Так Есть так много различий между двумя Плагины Содержание в файле PHP, два примера из них будет объяснено в этом документе. Также участие около интернационализации (с INI-файлы) добавлена. И последнее, но не менее важное: Joomla! Основное содержание плагин примеры кодирования и полезных советов.

XML-файл

XML-файл называется так же, как файл PHP, и является одним из двух необходимых файлов. Всегда начинать с теги XML и определить, что она написана в UTF-8 формате.

 

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE install
PUBLIC "-//Joomla! 1.5//DTD plugin 1.0//EN" "http://www.joomla.org/xml/dtd/1.5/plugin-install.dtd">
To define that the plugin has to be a content plugin, add this line:
<source lang="xml"><install version="1.5" type="plugin" group="content">

Типа будет определять это плагин, группа определяет плагин находится в группе Содержание плагины.

После этого, добавьте информацию о себе и плагин, как это:

<name>Name of your Content Plugin</name>
<creationDate>Created Date</creationDate>
<author>Your name</author>
<authorEmail>Your e-mail address</authorEmail>
<authorUrl>Your website</authorUrl>
<copyright>Copyright</copyright>
<license>License, for example GNU/GPL</license>
<version>Version of the plugin</version>
<description>Description of the Plugin; showed with installation and when editing
the Plugin in the Plugin Manager</description>

И в настоящее время включает ваш PHP файл содержание плагин. Имя этого файла должно быть таким же, как имя этого файла XML. Положите это название также за плагин = "" часть.

Вы также можете добавлять новые файлы для вашего плагина, например изображения. Просто добавьте еще одну строку между <files> и </ Files>, а затем поместите файл между тегами <имя файла>.

 

<files>
<filename plugin="nameofplugin">nameofplugin.php</filename>
</files>

Для интернационализации, мы будем использовать языковые файлы. Это не обязательно, но люди из других стран будет любить его, если они могут легко переводить ваш плагин на их родном языке. файлов плагина язык всегда устанавливаются в administrator/languages/xx-XX/, где XX-XX является код языка уже установлены в Joomla.

 

<languages>
<language tag="en-GB">en-GB.plg_content_nameofplugin.ini</language>
</languages>


По желанию, можно добавить некоторые параметры плагина. Они будут выглядеть следующим образом:

 

<params>
<param name="paramname" type="typeofparameter" default="defaultsetting" label="title" description="description"/>
</params>

* Param name: имя параметра. Вы будете нуждаться в этом при создании файла PHP.
*
Param type: Вы можете выбрать один из нескольких типов параметров. Посмотрите на этот документ, чтобы узнать что-то о разных типов: [3]
*
Param default: по умолчанию для этого параметра.
*
Param label: Название этого параметра отображается в экран редактирования этого плагина в менеджер плагинов.
*
Param description: текст, который появляется в качестве подсказки для этого параметра.

Если вы не хотите использовать параметры, добавьте следующий тег:

<params/>

И не забудьте положить конец вашей XML-файл со следующим тегом:

 

</install>

PHP файлов

Начните PHP файл с общим лицензирования и автор информации о вашем контентных плагинов.

<?php
/**
* @version $Id: nameofplugin.php revision date lasteditedby $
* @package Joomla
* @subpackage Content
* @copyright Copyright (C) 2005 - 2008 Open Source Matters. All rights reserved.
* @license GNU/GPL, see LICENSE.php
* Joomla! is free software. This version may have been modified pursuant
* to the GNU General Public License, and as distributed it includes or
* is derivative of works licensed under the GNU General Public License or
* other free or open source software licenses.
* See COPYRIGHT.php for copyright notices and details.
*/

Далее, всегда ставится следующий код в любом файле PHP:

//  Нет прямого доступа
defined( '_JEXEC' ) or die( 'Restricted access' );

Это мешает людям прямого доступа этом файле PHP.

После этого, вы должны импортировать общие файл плагина в Joomla! Библиотеку

jimport( 'joomla.plugin.plugin' );

Чтобы указать, что вы пишете Информационный плагин, добавить следующий код.

 

class plgContentNameofplugin extends JPlugin {

Пожалуйста, обратите внимание на использование прописных букв. Вы должны заменить Nameofplugin по имени свой собственный плагин.

Теперь, пришло время строить плагина:

/**
* Constructor
*
* For php4 compatability we must not use the __constructor as a constructor for plugins
* because func_get_args ( void ) returns a copy of all passed arguments NOT references.
* This causes problems with cross-referencing necessary for the observer design pattern.
*
* @param object $subject The object to observe
* @param object $params The object that holds the plugin parameters
* @since 1.5
*/

function plgContentNameofplugin( &$subject, $params )
{
parent::__construct( $subject, $params );
}

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

* OnBeforeContentSave: Это событие, что называется прямо перед содержимое сохраняется в базе данных.
* OnAfterContentSave: Это событие, которое вызывается после содержания сохраняется в базе данных.
* OnPrepareContent: Это первый этап в подготовке контента для производства и является наиболее распространенной точкой для содержания ориентирована плагины делать свою работу.
* OnAfterDisplayTitle: Это запрос о предоставлении информации, которые должны быть помещены между содержание заголовок и содержание тела.
* OnBeforeDisplayContent: Это запрос о предоставлении информации, которые должны быть размещены непосредственно перед контента.
* OnAfterDisplayContent: Это запрос о предоставлении информации, которые должны быть размещены сразу после контента.

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

onBeforeContentSave

Используйте следующий код:

 

  function onBeforeContentSave( &$article, $isNew )
{
global $mainframe;
//добавить свой плагин кодов здесь
return true;
}

Параметры статьи и isNew должен содержать следующее:

*
article : ссылка на JTableContent объект, который в настоящее время сохраняется которая держит статье данных.
* IsNew: булево, который установлен в значение ИСТИНА, если содержание вот-вот будет создан.

onAfterContentSave

Используйте следующий код:

 

 function onAfterContentSave( &$article, $isNew )
{
global $mainframe;
//добавить свой плагин кодов здесь
return true;

}

 

Параметры статьи и isNew должен содержать следующее:

*
article: ссылка на JTableContent объекта, который был сохранен который держит статье данных.
* IsNew: булево, который установлен в значение ИСТИНА, если содержимое было создано.

onPrepareContent

Используйте следующий код:

   function onPrepareContent( &$article, &$params, $limitstart )
{
global $mainframe;
//добавить свой плагин кодов здесь
//без возвращаемого значения

}

 

Параметры статьи, Params и limitstart должен содержать следующее:

*
article: ссылку на статью, которая в настоящее время оказывает зрения.
*
params: ссылку на ассоциативный массив соответствующих параметров. Открыть определяет, что по его мнению, соответствующие и передает эту информацию с собой.
* Limitstart: целое число, которое определяет "страницу" содержимое, которые будут созданы. Отметим, что в контексте представлений, которые не могут генерировать HTML выход, страница достаточно абстрактное понятие, что зависит от контекста.

onAfterDisplayTitle

Используйте следующий код:

 function onAfterDisplayTitle( &$article, &$params, $limitstart )
{
global $mainframe;
//Добавить свой плагин кодов здесь
return '';
//Возвращает строковое значение. Возвращается значение этого события будет отображаться в рамку.
// Большинство шаблонов отображения этого заполнителя после статья сепаратора.

}

Параметры статьи, Params и limitstart должен содержать следующее:

*
article : ссылку на статью, которая в настоящее время оказывает зрения.
*
params : ссылку на ассоциативный массив соответствующих параметров. Открыть определяет, что по его мнению, соответствующие и передает эту информацию с собой.
* Limitstart: целое число, которое определяет "страницу" содержимое, которые будут созданы. Отметим, что в контексте представлений, которые не могут генерировать HTML выход, страница достаточно абстрактное понятие, что зависит от контекста.

onBeforeDisplayContent

Используйте следующий код:

 function onBeforeDisplayContent( &$article, &$params, $limitstart )
{
global $mainframe;
//Добавить свой плагин кодов здесь
return '';
// Возвращает строковое значение. Возвращается значение этого события будет отображаться в рамку.
// Большинство шаблонов отображения этого заполнителя после статья сепаратора.
}

Параметры статьи, Params и limitstart должен содержать следующее:

*
article : ссылку на статью, которая в настоящее время оказывает зрения.
*
params : ссылку на ассоциативный массив соответствующих параметров. Открыть определяет, что по его мнению, соответствующие и передает эту информацию с собой.
* Limitstart: целое число, которое определяет "страницу" содержимое, которые будут созданы. Отметим, что в контексте представлений, которые не могут генерировать HTML выход, страница достаточно абстрактное понятие, что зависит от контекста.

onAfterDisplayContent

Используйте следующий код:

 function onAfterDisplayContent( &$article, &$params, $limitstart )
{
global $mainframe;
//Добавить свой плагин кодов здесь
return '';
//Возвращает строковое значение. Возвращается значение этого события будет отображаться в рамку.
//Большинство шаблонов отображения этого заполнителя после статья сепаратора.

}

 

Параметры статьи, Params и limitstart должен содержать следующее:

*
article : ссылку на статью, которая в настоящее время оказывает зрения.
*
params: ссылку на ассоциативный массив соответствующих параметров. Открыть определяет, что по его мнению, соответствующие и передает эту информацию с собой.
* Limitstart: целое число, которое определяет "страницу" содержимое, которые будут созданы. Отметим, что в контексте представлений, которые не могут генерировать HTML выход, страница достаточно абстрактное понятие, что зависит от контекста.

PHP файл - пример

Это пример файла PHP около загрузить модуль содержание плагин. Это плагин сделал для отображения модулей внутри статей. Комментариев PHP файл, используемый в этом примере файл, который будет включен в Joomla! 1,6. Это было сделано потому, что содержание файлы плагина в Joomla! 1,5 не реструктурировать еще новые стандарты.

<?php
//Общую информацию в верхней части каждого файла
/**
* @version $Id$
* @package Joomla
* @copyright Copyright (C) 2005 - 2009 Open Source Matters, Inc. All rights reserved.
* @license GNU General Public License, see LICENSE.php
*/


// Нет прямой доступ разрешен к этому файлу
defined( '_JEXEC' ) or die( 'Restricted access' );

// Импорт Joomla! Плагин файл библиотеки
jimport('joomla.plugin.plugin');

//Информационный плагин LoadModule
class plgContentLoadmodule extends JPlugin
{
/**
* Plugin that loads module positions within content
*/

// onPrepareContent, смысл плагин оказывается на первом этапе при подготовке контента для выхода
public function onPrepareContent( &$row, &$params, $page=0 )
{
// Соединение с базой данных создается
$db = JFactory::getDBO();
// Простая проверка производительности для определения бота должна процесс дальнейшего
if ( JString::strpos( $row->text, 'loadposition' ) === false ) {
return true;
}

// Выражение для поиска
$regex = '//i';

// проверить плагин был неопубликованных
if ( !$this->params->get( 'enabled', 1 ) ) {
$row->text = preg_replace( $regex, '', $row->text );
return true;
}

// найти все экземпляры плагин и положить в $matches
preg_match_all( $regex, $row->text, $matches );

// количество плагинов
$count = count( $matches[0] );

//Плагин обрабатывает только если Существуют какие-либо случаи из плагина в текст
if ( $count ) {
// Get plugin parameters
$style = $this->params->def( 'style', -2 );
$this->_process( $row, $matches, $count, $regex, $style );
}
// Нет возвращаемого значения
}
// Функции обработки
protected function _process( &$row, &$matches, $count, $regex, $style )
{
for ( $i=0; $i < $count; $i++ )
{
$load = str_replace( 'loadposition', '', $matches[0][$i] );
$load = str_replace( '{', '', $load );
$load = str_replace( '}', '', $load );
$load = trim( $load );

$modules = $this->_load( $load, $style );
$row->text = preg_replace( '{'. $matches[0][$i] .'}', $modules, $row->text );
}

// удаляет метки без соответствующего модуля позиции
$row->text = preg_replace( $regex, '', $row->text );
}
//Функции, которая заботится о 'completing' действий плагинов: loading the module(s)
protected function _load( $position, $style=-2 )
{
$document = &JFactory::getDocument();
$renderer = $document->loadRenderer('module');
$params = array('style'=>$style);

$contents = '';
foreach (JModuleHelper::getModules($position) as $mod) {
$contents .= $renderer->render($mod, $params);
}
return $contents;
}
}

INI-файл (ы)

Для интернационализации это хорошо использовать INI-файлы. Вы можете добавить к everyting языковой файл, который выводит текст для пользователей, в следующем порядке:

* XML-описания тега
* Этикетки XML и описание атрибутов параметров
* JText:: _ ('строка') используется плагин

Начните INI-файл с чем-то вроде этого:

 

# $Id: en-GB.plg_content_nameofplugin.ini
# Joomla! Project
# Copyright (C) 2005 - 2007 Open Source Matters. All rights reserved.
# License http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL, see LICENSE.php
# Note : All ini files need to be saved as UTF-8 - No BOM

Конечно, вы также можете добавить другую информацию, как и автор.

Например, этот параметр:

<param name="mode" type="list" default="1" label="Mode" description="Select how the emails will be displayed">
<option value="0">Nonlinkable Text</option>
<option value="1">As linkable mailto address</option>
</param>

Приведет к следующим в файле INI:

MODE=Mode
SELECT HOW THE EMAILS WILL BE DISPLAYED=Select how the e-mails will be displayed
NONLINKABLE TEXT=Nonlinkable text
AS LINKABLE MAILTO ADDRESS=As linkable mailto address


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

Если вы хотите, чтобы ваши содержание плагин доступна на нескольких языках, сначала добавить их в <languages> тег в файл XML. Затем создайте же файл INI, и изменить часть после =, например, голландская версия будет:

 

MODE=Modus
SELECT HOW THE EMAILS WILL BE DISPLAYED=Selecteer hoe de e-mails worden weergegeven
NONLINKABLE TEXT=Niet-linkbare tekst
AS LINKABLE MAILTO ADDRESS=Als een linkbaar mailto adres


Примеры кодирования

Есть семь Joomla! Плагины основное содержание. Они все еще не реструктурировать на новые стандарты. Для обучения, как писать хорошие плагины, его лучше смотреть на (рефакторинг) файлы Joomla! 1,6. Вы можете увидеть их "рабочий", когда вы идете в Back-конце вашего Joomla! 1,5 установку, то перейдите в раздел "Расширения" меню и выберите "Plugin Manager. Нажмите на имя плагина, чтобы изменить его, и посмотреть его работы. Также смотрите содержание и посмотрим, что произойдет, когда вы вставляете PageBreak например.

 

Советы

* В файле PHP вы часто забывают поставить точку с запятой (;) в конце строки, которая приводит к ошибкам. Проверьте это перед тест ваш плагин, и вы будете устранить многие ошибки.
* Позаботьтесь о том, что параметры в файле XML правильно закрыты. При добавлении опции, например, необходимо, чтобы закрыть его с </ параметр>.
* Это легко проверить на локальный когда вы все еще заняты редактированием вашего плагина.
* Типичные ZIP будет содержать следующее:
О nameofplugin.XML
О nameofplugin.PHP
О ан-GB.plg_content_nameofplugin.ini