Довольно часто возникает необходимость внедрить PHP-код в Joomla-материал (калькулятор, простая форма и т.п.), сделать это непосредственно из админки не получится (ибо все что мы вставляем в поля при создании материалов считается HTML-кодом).
Краткая инструкция «как это сделать»:
1. Установить мамбот/плагин (в зависимости от версии Joomla) RD AddPHP fur Joomla )), брать тут: http://www.run-digital.com/loesungen/open-source/addphp.html.
2. Сделать/найти/позаимствовать PHP-файл, закинуть его в, например, папку «php» в корне сайта.
3. В нужный материал вставить код вызова вашего файла: {rdaddphp file=php/file.php}.
4. Готово.
А здесь тестовый пример php-файла (единствееное на что способен этот код — это сложение двух int or float чисел))):
<form action="абсолютный адрес страницы на которой оубликован php-код" method="post"> <table border=0 cellspacing=0 cellpadding=2> <tr> <td> Первое слагаемое: </td> </tr> <tr> <td> <input type="text" name="p" value="<?php echo $_REQUEST['p'] ?>"><br /> </td> </tr> <tr> <td> Второе слагаемое: </td> </tr> <tr> <td> <input type="text" name="v" value="<?php echo $_REQUEST['v'] ?>"><br /> </td> </tr> <tr> <td> <input type="submit" name="submit" value="Рассчитать"/> </td> </tr> <tr> </table> </form> <?php echo $_REQUEST['p'].'<br>'; echo $_REQUEST['v'].'<br>'; echo 'Сумма:' .($_REQUEST['p'] + $_REQUEST['v']); ?> |
Для интересующихся полный код мамбота:
defined( '_VALID_MOS' ) or die( 'Direct Access to this location is not allowed.' ); $_MAMBOTS->registerFunction( 'onPrepareContent', 'botAddPhp' ); function botAddPhp( $published, &$row, $mask=0, $page=0 ) { global $mosConfig_absolute_path; // expression to search for $regex = '/{(rdaddphp)\s*(.*?)}/i'; if (!$published ) { $row->text = preg_replace( $regex, '', $row->text ); return; } // find all instances of mambot 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 = $mosConfig_absolute_path . '/' . $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; } |
Вот так вот коротенько, а сколько пользы .
Огромное спасибо!!!
Перепробовал огромное колличество компонентов и модулей для создания форм в Joomla.
Это лучший вариант, очень прост в установке и в использовании (если есть, хотя бы минимальные знания языка PHP).
Еще раз большое спасибо!
Большое спасибо автору статьи. 2 дня искал, но вот и нашел.
А как вставлять код до тега body?
Ведь это всё будет внутри странички. А как вставить код до начала ее исполнения . До Body 7?
2mega:
1. В темплейте(шаблоне) сайта.
2. В темплейте(шаблоне) «вида» страницы (могу уточнить) для Joomla 1.5.
3. Плагин работающий по событию onPrepareContent?
Или уточните вопрос, т.е. что именно хочется получить.
Отдуши Дружище)))очень пригодилось)) огромное спасибо!!!
у меня вот такая проблема: установила этот плагин, все сделала по инструкциям, а скрипт не выполняется просто белую страничку показывает, при чем если просто писать echo 'hello, world' все работает. может кто сталкивался, помогите пожалуйста
модуль Mod PHP исполняет мой код, а плагин не хочет. но все равно спасибо =))
я нашла другой плагин DirectPHP plugin, который позволяет писать php команды прямо в статье и испоняет их. если кому нужно www.kksou.com/php-gtk2/Jo...gin.php#download
Ок, и вам спасибо за дополнительные варианты вставки кода php.
Мариночка, спасибо, прям поцеловать тебя готов)
)))) рада помочь
Спасибо, то что искал...
Автор, я тебя люблю!
Когда делаю занесение данных в таблицу мускула на русском языке, то в базу заносятся квадратики) простите за нубский вопрос: как исправить?
Предположительно вбиваете в форму символы в одной кодировке, а база в другой, попробуйте поюзать функцию iconv или как-то по-другому проверить кодировки.
Добрый день! Вставляю Ваш код с помощью AddPHP в материал, когда нажимаю рассчитать выдает ошибку: Not Found
The requested URL /test/пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ php-пїЅпїЅпїЅ was not found on this server.
Скадите это ошибка из-за кодировки или в чем дело?
Скорее всего, попробуйте назвать php-файл латиницей, если это уже так проверить читаемость его имени на сервере.