Joomla. Компонент Sourcerer
Компонент sourcerer позволяет удобно размещать коды программ на PHP, JavaScript, стили CSS внутри статей, модулей сайта Joomla.
Синтаксис тмрлдбзования довольно прост. Нужно разместить теги {source} и {/ source} в текстовой области, в которой должен появиться код (например, статья или пользовательский HTML-модуль), код программы размещается между тегами.
Пример вставки HTML кода
{source}<span style="color:red">This text should be red!</span>{/source}
HTML-теги (с двойными квадратными скобками)
С некоторыми редакторами Joomla могут возникнуть проблемы с сохранением тегов, введенных в представлении WYSIWYG (редактор удаляет их при сохранении). В этом случае можно использовать синтаксис с двойной квадратной скобкой для тегов.
Нужно использовать [[tag]] вместо <tag>
Пример:
{source}[[span style="color:red"]]This text should be red![[/span]]{/source}
Вставка программы на JavaScript
{source}
<script >
alert('This text is placed through <strong>JavaScript</strong>!');
</script>
{/source}
Вставка программы на PHP
{source}
<?php
echo ('This text is placed through <strong>PHP</strong>!');
?>
{/source}
Комбинированный код (HTML, JavaScript и PHP)
{source}
<span style="color:red">This text should be red!</span>
<br />
<script>
document.write('This text is placed through <strong>JavaScript</strong>!');
</script>
<?php
echo ('<p>');
echo ('This text is placed through <strong>PHP</strong>!');
echo ('</p>');
?>
{/source}
Вставка php из отдельного файла
Пример файла PHP:
www.yourdomain.com/myfiles/file.php
{source file=myfiles/file.php}{/source}
Или:
{source file=myfiles/file.php}<?php
echo '<div class="mydiv">' . $var_from_file . '</div>';
?>{/source}
Или:
{source}<?php
require_once JPATH_SITE.'/myfiles/file.php';
?>{/source}
Вставка текстового или HTML файла
{source}<?php
echo file_get_contents( JPATH_SITE.'/myfiles/file.txt' );
?>{/source}
Использование Joomla framework
Программа PHP, вставленная через sourcerer, может использовать объекты Joomla framework.
Например:
подключиться к базе данных
{source}<?php
$query = "SELECT something from #__mydatabasetable WHERE this = 'that'";
$database->setQuery($query);
$result = $database->loadResult();
?>{/source}
подключиться к внешней базе данных
{source}<?php
$option = array(
'driver' => 'mysql', // Database driver name
'host' => 'db.myhost.com', // Database host name
'user' => 'fredbloggs', // User for database authentication
'password' => 's9(39s£h[%dkFd', // Password for database authentication
'database' => 'bigdatabase', // Database name
'prefix' => 'abc_', // Database prefix (may be empty)
);
$db = JDatabase::getInstance( $option );
?>{/source}
добавить Javascript в начало страницы html
{source}<?php
$script = "
alert('this is javasript');
";
$doc->addScriptDeclaration( $script );
?>{/source}
Чтобы добавить файл js в HEAD, используется:
{source}<?php
$doc->addScript( JURI::root( true ).'/path/to/your/file.js' );
?>{/source}
Чтобы добавить несколько таблиц стилей и javascript программ, можно использовать php-код:
{source}<?php
$css = "
body {
color: red;
}
";
$doc->addStyleDeclaration( $css );
$doc->addStyleSheet( JURI::root( true ).'/path/to/your/file.css' );
$doc->addStyleSheet( JURI::root( true ).'/path/to/your/file2.css' );
$script = "
alert('this is javasript');
";
$doc->addScriptDeclaration( $script );
$doc->addScript( JURI::root( true ).'/path/to/your/file.js' );
$doc->addScript( JURI::root( true ).'/path/to/your/file2.js' );
?>{/source}
Глобальные переменные sourcerer
Компонент sourcerer создаёт и позволяет использовать свои переменные:
$mainframe или $app
$document или $doc (не может использоваться в коде Sourcerer в модулях)
$database или $db
$user - объект user, содержащий сведения о пользователе guest или текущем пользователе
$Itemid Идентификатор меню страницы
$article Объект article (доступен только при использовании кода внутри статей)