PHP файл плагина - simpleaccordion.php (2 шаг)

E-mail Печать

Начнем наш php файл с информации о лицензии, информации об авторе и собственно описания плагина.

1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
/**
 * @version        $Id: simpleaccordion.php revision date lasteditedby $
 * @package        Joomla
 * @subpackage    Content
 * @copyright    Copyright (C)……………………. 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.
 */

Далее, как обычно, идет следующая строка:

1
defined( '_JEXEC' ) or die( 'Restricted access' );

Это строка предотвращает прямой доступ к файлу.

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

1
jimport( 'joomla.plugin.plugin' );

Далее определим класс нашему плагину добавив следующую строчку:

1
2
class plgContentSimpleaccordion extends JPlugin
{

заметьте что название плагина пишется уже с заглавной буквы.

Далее описываются действия плагина для определенного события. В нашем случае нас интересует событие onPrepareContent – это событие возникает перед отображением контента (статьи).

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
function onPrepareContent(&$article, &$params, $limitstart=0)
{
	$regex = "#

(.*?)

#is"
;
if (!preg_match($regex, $article->text)) { return; } $article->text = preg_replace_callback($regex, array($this, 'replacer'), $article->text); return true; } /* * Plugin replacer */ function replacer(&$match) { $document = &JFactory::getDocument(); $html = ''; $accordions_text = ( $match[1] ? $match[1] : '' ); if (preg_split('#\|\|\|\|#', $accordions_text, -1, PREG_SPLIT_NO_EMPTY)) { $accordions_text_array = preg_split('#\|\|\|\|#', $accordions_text, -1, PREG_SPLIT_NO_EMPTY); } else { return ''; } JHTML::_( 'behavior.mootools' ); $custom_js = "<script type=\"text/javascript\"> <!-- window.addEvent('domready', function(){ var AccordionObject = new Accordion('h4.togglers', 'div.elements', {display: -1, alwaysHide:true}); }); --> </script> <style> h4.togglers:hover { cursor: pointer; } </style>"; $document->addCustomTag($custom_js); $html = '<div class="accordion">'; foreach ($accordions_text_array as $key => $text){ $accordion_array = explode('::', $text, 2); $accordion_name = ( $accordion_array[0] ? strip_tags(trim($accordion_array[0])) : '' ); $text = ( $accordion_array[1] ? $accordion_array[1] : '' ); $html .= '<h4 class="togglers">'.strip_tags(trim($accordion_name)).'</h4>'; $html .= '<div class="elements">'.$text.'</div>'; } $html .= '</div>'; return $html; }

Ну и в конце файла не забываем закрывать описание нашего класса символом:

1
}

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

Скачать файл simpleaccordion.php

Скачать плагин "Простой аккордеон" можно в нашем файловом архиве

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

Mark
 
Интересная статья? Поделись ей с другими: