Новости Joomla

Первый выпуск журнала NorrNext в честь 20-й годовщины Joomla™

Первый выпуск журнала NorrNext в честь 20-й годовщины Joomla™

Первый выпуск журнала NorrNext в честь 20-й годовщины Joomla™. Интервью с волонтёрами 🎈Ну что, друзья, вот и настал этот долгожданный момент. Мы выпустили первое издание собственного журнала под эгидой NorrNext, который включает в себя интервью с видными деятелями сообщества из разных стран и континентов.Общий нарратив: показать, что нас объединяет (Joomla) и узнать больше о людях, которые вносят свой вклад в развитие платформы в своих сообществах. 20 лет — это много. Давайте же узнаем о коллегах 🎁 Первый цикл включает такие страны, как Австрия, Испания, Латвия, Россия, Румыния, Тайланд, Черногория, Чехия.⚙️ С кем интервью: ✔️ Владимир Елисеев 🇷🇺✔️ Дмитрий Рекун 🇱🇻✔️ Дмитрий Цымбал 🇷🇺✔️ Евгений Сивоконь 🇷🇺 ✔️ Сергей Толкачёв 🇷🇺✔️ Dénes Székely 🇷🇴✔️ Jan Pavelka 🇨🇿✔️ Miljan Vujosevic 🇲🇪✔️ Sergio Iglesias 🇪🇸✔️ Sigrid Gramlinger 🇦🇹✔️ Pisan Chueatchatchai 🇹🇭‼️ Новые интервью будут добавляться до конца декабря 2025. Заходите по ссылке время от времени💡👉 Читать далее

0 Пользователей и 1 Гость просматривают эту тему.
  • 1 Ответов
  • 1524 Просмотров
*

CTPZ

  • Захожу иногда
  • 305
  • 24 / 5
Обьясните что к чему
« : 18.04.2011, 23:33:39 »
Вот код без комментариев вначале
Код
<?php

/** ensure this file is being included by a parent file */
defined( '_JEXEC' ) or die( 'Restricted access' );

$mainframe->registerEvent( 'onPrepareContent', 'pluginAddPhp' );


function pluginAddPhp( &$row, &$params, $page=0  )
{
  // expression to search for
  $regex = '/{(rdaddphp)\s*(.*?)}/i';

  $plugin =& JPluginHelper::getPlugin('content', 'rd_addphp');

  if (!JPluginHelper::isEnabled('content', 'rd_addphp')  ) {
$row->text = preg_replace( $regex, '', $row->text );
return;
}

// find all instances of plugin and put in $matches
$matches = array();
preg_match_all( $regex, $row->text, $matches, PREG_SET_ORDER );

foreach ($matches as $elm) {

parse_str( $elm[2], $args );
$phpfile=@$args['file'];
$output = "";
if ( $phpfile ) {
$phpfile = JPATH_ROOT . DS . $phpfile;
if (file_exists($phpfile)) {
ob_start();
include($phpfile);
$output .= ob_get_contents();
ob_end_clean();
} else {
$output = "File: $phpfile don't exists";
}
}
$row->text = preg_replace($regex, $output, $row->text, 1);

}
return true;
}
/* EOF */
?>

Это код плагина. Работает он просто.
В редакторе пишут
Код
{rdaddphp file=file.php}
и в статью вставляется содержимое файла file.php
Какие строки отвечают за параметр file?
« Последнее редактирование: 18.04.2011, 23:37:14 от CTPZ »
*

moskitos80

  • Осваиваюсь на форуме
  • 21
  • 3 / 0
Re: Обьясните что к чему
« Ответ #1 : 25.04.2011, 11:51:19 »
Здесь тупо из строки : {rdaddphp file=file.php} - при помощи регулярки отлавливают "file=file.php" :

Код
preg_match_all( $regex, $row->text, $matches, PREG_SET_ORDER );

А потом при помощи ф-ции:
Код
parse_str( $elm[2], $args );

получают $args['file']; - его значением будет строка: "file.php".

 Далее проверки на существование файла,
чтение его в буфер, и замена его содержимым строк "{rdaddphp file=file.php}":

Код
$row->text = preg_replace($regex, $output, $row->text, 1);

Всё очевидно :)
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

чему принадлежит $this

Автор voland

Ответов: 2
Просмотров: 1754
Последний ответ 09.04.2009, 23:53:07
от voland