plugins/content/loadmodule/loadmodule.php. Loadmodule joomla 3


plugins/content/loadmodule/loadmodule.php *Документация по Joomla 3.0.2

Вернуться к записям по теме Joomla. <?php /** * @package Joomla.Plugin * @subpackage Content.loadmodule * * @copyright Copyright (C) 2005 - 2012 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */   defined('_JEXEC') or die;   /** * Plug-in to enable loading modules into content (e.g. articles) * This uses the {loadmodule} syntax * * @package Joomla.Plugin * @subpackage Content.loadmodule * @since 1.5 */ class plgContentLoadmodule extends JPlugin { protected static $modules = array();   protected static $mods = array();   /** * Plugin that loads module positions within content * * @param string The context of the content being passed to the plugin. * @param object The article object. Note $article->text is also available * @param object The article params * @param int The 'page' number */ public function onContentPrepare($context, &$article, &$params, $page = 0) { // Don't run this plugin when the content is being indexed if ($context == 'com_finder.indexer') { return true; }   // simple performance check to determine whether bot should process further if (strpos($article->text, 'loadposition') === false && strpos($article->text, 'loadmodule') === false) { return true; }   // expression to search for (positions) $regex = '/{loadposition\s+(.*?)}/i'; $style = $this->params->def('style', 'none'); // expression to search for(modules) $regexmod = '/{loadmodule\s+(.*?)}/i'; $stylemod = $this->params->def('style', 'none');   // Find all instances of plugin and put in $matches for loadposition // $matches[0] is full pattern match, $matches[1] is the position preg_match_all($regex, $article->text, $matches, PREG_SET_ORDER); // No matches, skip this if ($matches) { foreach ($matches as $match) {   $matcheslist = explode(',', $match[1]);   // We may not have a module style so fall back to the plugin default. if (!array_key_exists(1, $matcheslist)) { $matcheslist[1] = $style; }   $position = trim($matcheslist[0]); $style = trim($matcheslist[1]);   $output = $this->_load($position, $style); // We should replace only first occurrence in order to allow positions with the same name to regenerate their content: $article->text = preg_replace("|$match[0]|", addcslashes($output, '\\$'), $article->text, 1); } } // Find all instances of plugin and put in $matchesmod for loadmodule   preg_match_all($regexmod, $article->text, $matchesmod, PREG_SET_ORDER); // If no matches, skip this if ($matchesmod){ foreach ($matchesmod as $matchmod) {   $matchesmodlist = explode(',', $matchmod[1]); //We may not have a specific module so set to null if (!array_key_exists(1, $matchesmodlist)) { $matchesmodlist[1] = null; } // We may not have a module style so fall back to the plugin default. if (!array_key_exists(2, $matchesmodlist)) { $matchesmodlist[2] = $stylemod; }   $module = trim($matchesmodlist[0]); $name = trim($matchesmodlist[1]); $style = trim($matchesmodlist[2]); // $match[0] is full pattern match, $match[1] is the module,$match[2] is the title $output = $this->_loadmod($module, $name, $style); // We should replace only first occurrence in order to allow positions with the same name to regenerate their content: $article->text = preg_replace("|$matchmod[0]|", addcslashes($output, '\\$'), $article->text, 1); } } }   protected function _load($position, $style = 'none') { if (!isset(self::$modules[$position])) { self::$modules[$position] = ''; $document = JFactory::getDocument(); $renderer = $document->loadRenderer('module'); $modules = JModuleHelper::getModules($position); $params = array('style' => $style); ob_start();   foreach ($modules as $module) { echo $renderer->render($module, $params); }   self::$modules[$position] = ob_get_clean(); } return self::$modules[$position]; } // This is always going to get the first instance of the module type unless // there is a title. protected function _loadmod($module, $title, $style = 'none') { if (!isset(self::$mods[$module])) { self::$mods[$module] = ''; $document = JFactory::getDocument(); $renderer = $document->loadRenderer('module'); $mod = JModuleHelper::getModule($module, $title); // If the module without the mod_ isn't found, try it with mod_. // This allows people to enter it either way in the content if (!isset($mod)){ $name = 'mod_'.$module; $mod = JModuleHelper::getModule($name, $title); } $params = array('style' => $style); ob_start();   echo $renderer->render($mod, $params);   self::$mods[$module] = ob_get_clean(); } return self::$mods[$module]; } }   Вернуться к записям по теме Joomla.

ya.samposebe.ru

Системный плагин loadmodule, вставляем модуль в статью без ошибок -

class="eliadunit">

 

От автора

Здравствуйте! В старых версиях Joomla вставить модуль в статью можно было только с использованием сторонних плагинов. Я писал об этом в статье: Как вставить модуль Joomla в статью. Недавно в ядре Joomla появился плагин при помощи кототорого можно вставлять модули в статьи сайта по позиции модуля или по названию. 

Знакомьтесь - Системный плагин loadmodule

Сравнительно недавно, не помню, с какой версии, на Joomla появился внутренний плагин позволяющий вставлять модули в статьи сайта. Называется он Контент - Загрузка модулей. Относится к типу content. Системное название loadmodule.

Управлять плагином можно с вкладки: Менеджер плагинов. Для удобного поиска плагина воспользуйтесь фильтром и укажите в фильтре «Тип», тип плагина – content.

loadmodule content 1

По умолчанию он включен. Но вы можете, как выключить, так и включить его с вкладки Менеджер плагинов. Для этого достаточно нажать на кнопку с зеленой галочкой (выключение) или с красным крестом (включение). Можно включать и выключать плагин кнопкой «Активировать», предварительно выделив чекбокс в строке плагина.

Настройки системного плагина loadmodule

Настройки плагина loadmodule также найдете в Менеджере плагинов. Найдите в таблице плагинов строку «Контент - Загрузка модулей» и нажмите на название плагина. Настроек у плагина мало. Можно настроить только стиль палгина.

Стиль системного плагина Loadmodule

Система предлагает пять стилей плагина (смотрим фото).

loadmodule content 2

Как вставлять модули в статьи при помощи плагина loadmodule

Синтаксис использования плагина ядра loadmodule с одной стороны прост, но почему-то плохо раскрыт авторами Joomla. Расскажу, как вставить модуль в статью подробно.

Плагин loadmodule позволяет вставлять модули в статьи по двум параметрам:

Вывод модуля в статью по позиции

Для вывода модулей по его позиции, служит команда loadposition. Синтаксис вывода модуля таков:

loadposition ПОЗИЦИЯ /*В фигурных скобках*/

под «ПОЗИЦИЯ» понимаем позиции модулей вашего шаблона.но понимать, если вы будете вставлять модуль по позиции, то выведутся все модули этой позиции.

Например, вы создали 4 модуля в позиции, предположим, left_a. В статью вставляете,

loadposition left_a /*В фигурных скобках*/

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

Строка с командой loadposition…. не должна быть параграфом. Можно сделать «Формат», можно положить в «div», но не параграф.

class="eliadunit">

На всякий случай напомню, как убрать форматирование и положить строку в div.

Вывод модуля в статью по названию

Для вывода модулей по названию, служит команда loadmodule. Синтаксис вывода модуля по названию таков:

loadmodule Системное название модуля, Заголовок модуля /*В фигурных скобках*/

А теперь поясню, что это значит. И начнем с самого начала, с создания модуля. Я не буду рассказывать, как создать модуль, думаю вы в курсе. Просто напомню.

При создании модуля, на вкладке Менеджер модулей→Кнопка «Создать», вы указываете тип модуля. Это может быть авторизация, поиск, список статей категории, список всех категорий и т.д. Далее, вы задаете, причем обязательно, такой параметр модуля, как Заголовок. Также, у каждого типа модуля есть другие настройки, пока они нас интересуют, как настройки по-умолчанию, то есть мы их не меняем.

Итак, у модуля есть Тип и Заголовок. В зависимости от типа модуля синтаксис вывода модуля по названию меняется. Код в цвете в фигурных скобках:

Посмотреть системные названия модулей можно в каталоге сайта в папке (/module) 

loadmodule content 5

Примечание: С установленной русской локализацией сайта, заголовок модуля может быть на русском языке.

Как вы поняли, за тегом loadmodule следует системное название модуля по его типу, а через запятую его заголовок, который задан при создании модуля. Заголовок может быть на русском языке, то есть как задали при создании модуля, так и вписывайте. Если на сайте только один модуль данного типа, например единственная авторизация, то заголовок вписывать не нужно.

Вставляемый модуль нужно включить, но можно не размещать на сайте, а оставить его в позиции «Нет», то есть позицию не указывать. Он выведется loadmodule и из позиции «Нет», что удобнее по сравнению с loadposition.  

Стили loadmodule по умолчанию

loadmodule content 4 loadmodule content 3

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

Модуль не отражается, отражается неправильно:

Если не получается вставить модуль по названию:

©Joomla-abc.ru.

Другие статьи раздела : CMS Joomla

 

 

class="eliadunit">

joomla-abc.ru

plgContentLoadmodule *Документация по Joomla 3.0.2

Вернуться к записям по теме Joomla.

Joomla.Plugin\plgContentLoadmodule

plugins/content/loadmodule/loadmodule.php at line 20 JObject└─JEvent└─JPlugin└─plgContentLoadmodule

public class plgContentLoadmoduleextends JPlugin

Subpackage: Content.loadmodule Since: 1.5 Field Summary
protected static mixed

$mods

protected static mixed

$modules

Fields inherited from Joomla.Platform\JEvent
_subject
Fields inherited from Joomla.Platform\JObject
_errors
Method Summary
void

onContentPrepare(int The, mixed context, mixed article, mixed params, int page)

Plugin that loads module positions within content

protected void

_load(mixed position, str style)

protected void

_loadmod(mixed module, mixed title, str style)

Field Detail

plugins/content/loadmodule/loadmodule.php at line 24

mods

protected static mixed $mods = array() plugins/content/loadmodule/loadmodule.php at line 22

modules

protected static mixed $modules = array()

Method Detail

plugins/content/loadmodule/loadmodule.php at line 34

onContentPrepare

public void onContentPrepare(int The, mixed context, mixed article, mixed params, int page)

Plugin that loads module positions within content

Parameters: The - context of the content being passed to the plugin. The - article object. Note $article->text is also available The - article params The - 'page' number plugins/content/loadmodule/loadmodule.php at line 103

_load

protected void _load(mixed position, str style) plugins/content/loadmodule/loadmodule.php at line 123

_loadmod

protected void _loadmod(mixed module, mixed title, str style) Вернуться к записям по теме Joomla.

ya.samposebe.ru


Prostoy-Site | Все права защищены © 2018 | Карта сайта