Передача параметров в фильтре "Внешние скрипты"

+18
1.75K
Очень простая, но полезная доработка фильтра "Внешние скрипты". В результате чего можно подключать файл в статью не только {ФАЙЛ=script.php}, но и например {ФАЙЛ=script.php?param1=val1&demo=test}. В script.php будет передан массив $params, в котором содержатся переменные и их содержимое:
  1. Array
  2. (
  3. [param1] => val1
  4. [demo] => test
  5. )

Приводим содержимое файла /filters/f_includes/filter.php к следующему виду:

  1. <?php
  2. /******************************************************************************/
  3. // //
  4. // InstantCMS v1.10 //
  5. // http://instantcms.ru/ //
  6. // //
  7. // written by InstantCMS Team, 2007-2012 //
  8. // produced by InstantSoft, (www.instantsoft.ru) //
  9. // //
  10. // LICENSED BY GNU/GPL v2 //
  11. // //
  12. /******************************************************************************/
  13.  
  14. function getLink($file){
  15.  
  16. $file = trim($file);
  17. if(strpos($file, '?')){
  18. $file = explode('?', $file, 2);
  19. $file[1] = str_replace('&amp;', '&', $file[1]);
  20. mb_parse_str($file[1], $params);
  21. $file = $file[0];
  22. }
  23. $file = preg_replace('/[^a-zA-Z0-9\-_\.]/i', '', $file);
  24. $file = str_replace('..', '.', $file);
  25. $filefull = PATH . '/includes/myphp/' . $file;
  26.  
  27. if(file_exists($filefull)){
  28. include $filefull;
  29. $link = ob_get_clean();
  30. }else{
  31. $link = 'Файл "/includes/myphp/' . $file . '" не найден!';
  32. }
  33. return $link;
  34.  
  35. }
  36.  
  37. ////////////////////////////////////////////////////////////////////////////////
  38. function f_includes(&$text){
  39. if(strpos($text, '{ФАЙЛ=') !== false){
  40. preg_match_all('/{(ФАЙЛ=)(.*?)}/i', $text, $matches, PREG_SET_ORDER);
  41. foreach($matches as $elm){
  42. $text = str_replace('{ФАЙЛ=' . $elm[2] . '}', ($elm[2] ? getLink($elm[2]) : ''), $text);
  43. }
  44. }
  45. return true;
  46. }
  47. ?>
Помидорами не бросать! Ногами не пинать! Ибо не… й действительно иногда нужно)
0
lokanaft lokanaft 10 лет назад #
Привёл в более читабельный вид. Вернул пропавший куда то &amp; . Там эта строка нужна, ибо хтмл редактор-зараза сам делает ненужную в данном случае замену.

Еще от автора

Ajax подгрузка контента для двойки
Ну что, товарищи, сегодня вы своими руками сможете сделать ajax подгрузку записей контента.
AJAX подгрузка комментов для двойки
Как следует из названия, дополнение ограничивает полный вывод всех комментов записи и позволяет пользователю при необходимости посмотреть следующие.
ContentWatch - проверка уникальности добавляемого контента для icms2
Компонент позволяет проверять уникальность текста с помощью сервиса Content-Watch.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.