Форум русской поддержки Joomla!® CMS
10.12.2016, 12:54:48 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
   
   Начало   Поиск Joomla 3.0 FAQ Joomla 2.5 FAQ Joomla 1.5 FAQ Правила форума Новости Joomla Реклама Войти Регистрация Помощь  
Страниц: [1]   Вниз
  Добавить закладку  |  Печать  
Автор

Продолжая тему разработки контент плагина, сорянчик))

 (Прочитано 199 раз)
0 Пользователей и 1 Гость смотрят эту тему.
IvanTopor
Новичок
*

Репутация: +0/-0
Offline Offline

Сообщений: 7


« : 26.02.2016, 14:54:57 »

Пара вопросов, не могу найти адекватных ответов в Google.

1. Как по-умному стоит получать шаблон для использования со sprintf?

  Я получаю по-идиотски:
    $SpoilerTemplate = file_get_contents('./plugins/content/bootstrap_spoilers/template.php');

2. Как умные люди передают переменные в функцию? Мне нужно подтянуть шаблон в переменную и объявить инкрементируемое $id нулем.

  У меня вот такой код, который работает на голом php:

      $text = preg_replace_callback(
         '#\{spoiler=([^\}]+)\}(.+?)\{/spoiler\}#m',
         function ($matches){
            global $id;
            global $SpoilerTemplate;
            ++$id;
            $Spoiler = sprintf($SpoilerTemplate, 'spoiler'.$id, $matches[1], 'spoiler'.$id, $matches[2]);
            return $Spoiler;
         },
         $text);

global $var; работало в голом php, здесь нет. Это моветон, да?

Спасибо за внимание. Azn
« Последнее редактирование: 26.02.2016, 14:58:53 от IvanTopor » Записан
robert
Профи
********

Репутация: +344/-11
Offline Offline

Пол: Мужской
Сообщений: 3595


« Ответ #1 : 26.02.2016, 15:42:35 »

Не уверен, что точно понимаю ваши вопросы, но могу посоветовать использовать буфер и сессию.
Записан
IvanTopor
Новичок
*

Репутация: +0/-0
Offline Offline

Сообщений: 7


« Ответ #2 : 26.02.2016, 15:57:14 »

Я подтягивал global'ом в функцию, которая вызывается callback'ом переменные, необходимые для работы функции (шаблон HTML блока, инкрементирующийся id для создания уникального ID).

В Joomla видимо использование global'а для получения переменной считается моветоном.

Вот я и сижу думаю, как мне не в каждой итерации (preg_replace_callback вызывает функцию каждый раз, когда находит то что я попросил) догружать шаблон из соседнего php файла в переменную для последующей работы с ней с помощью sprintf (заполнения плейсхолдеров заголовком, телом и ID).

Пока не получается передать эти переменные аргументом при запуске функции.

И пока еще не удается понять, почему в Joomla другие функции запускаются подобным образом:

  $this->function(),

Посмотрел буфер и сессию, это скорее не то, чем то. Но тоже интересный материал. Спасибо.
Записан
robert
Профи
********

Репутация: +344/-11
Offline Offline

Пол: Мужской
Сообщений: 3595


« Ответ #3 : 26.02.2016, 16:33:46 »

И пока еще не удается понять, почему в Joomla другие функции запускаются подобным образом:
  $this->function(),
Так вы не знакомы с ООП?
Записан
IvanTopor
Новичок
*

Репутация: +0/-0
Offline Offline

Сообщений: 7


« Ответ #4 : 26.02.2016, 16:34:04 »

В общем не знаю, корректно или нет, решил использовать вот так:

Будет в каждой итерации (при нахождении каждого спойлера) брать шаблон из файла. Crazy
Ужс. Но как нормально передать переменную в эту функцию колбэка я не выяснил.

   protected function makeSpoiler(&$text, &$params)
   {   
      $text = preg_replace_callback(
         '#\{spoiler=([^\}]+)\}(.+?)\{/spoiler\}#m',
         function ($matches){
            $SpoilerTemplate = file_get_contents('./plugins/content/bootstrap_spoilers/template.php');
            ++$id;
            $Spoiler = sprintf($SpoilerTemplate, 'spoiler'.$id, $matches[1], 'spoiler'.$id, $matches[2]);
            return $Spoiler;
         },
         $text);
      
      return true;
      
   }


Так вы не знакомы с ООП?

Детально нет, очень смутно - да.
« Последнее редактирование: 26.02.2016, 16:37:32 от IvanTopor » Записан
robert
Профи
********

Репутация: +344/-11
Offline Offline

Пол: Мужской
Сообщений: 3595


« Ответ #5 : 26.02.2016, 16:56:17 »

Показать текстовый блок
Подправил.
« Последнее редактирование: 26.02.2016, 20:24:08 от robert » Записан
IvanTopor
Новичок
*

Репутация: +0/-0
Offline Offline

Сообщений: 7


« Ответ #6 : 26.02.2016, 17:21:06 »

Т.е. такой подход (использование буфера сессии для использования переменной в другой функции) рекомендован при создании простых плагинов обрабокти контента для Joomla?

Эхх. Еще немного непонятных действий с абстрактными объектами.

Буду изучать наверное, спасибо.
Записан
b2z
Support Team
*****

Репутация: +710/-0
Offline Offline

Пол: Мужской
Сообщений: 7538


Разраблю понемногу


« Ответ #7 : 26.02.2016, 17:27:18 »

Да Вы можете что угодно делать. Главное - безопасность.
Записан
Страниц: [1]   Вверх
  Добавить закладку  |  Печать  
 
Перейти в:  

Powered by SMF 1.1.21 | SMF © 2006, Simple Machines

Joomlaforum.ru is not affiliated with or endorsed by the Joomla! Project or Open Source Matters.
The Joomla! name and logo is used under a limited license granted by Open Source Matters
the trademark holder in the United States and other countries.

LiveInternet