Here is the source code and to install procedure for a small Joomla application that works with the TBS plug-in.
This application present a search area, and the result of the search trough a table in the Joomla database.
But it also:
- checks the TBS version
- allows template which are a full HTML page
- allows one CSS style sheet in the template
- allows additional both GET and POST parameters
Installation:
-------------
1) create a folder "applications/simple_search" under the Joomla folder.
2) put the following files
3) create a new Joomla article with the following contents: {tbs}script=applications/simple_search/index.php{/tbs}
4) in the TBS plug-in parameters (under Joomla plug-ins), add the article id to the hallowed ids.
Files:
------
index.php
<?php
/* Simple Search application
Skrol29, 2012-03-01
*/
if (!isset($TBS)) exit("This application can work only under Joomla.");
// Check TBS version
if (version_compare($TBS->Version,'3.6.0')<0) {
$TBS->Source = utf8_encode("This applciation require TinyButStrong Template Engine version 3.6.0 ou higher. The installed version is ".$TBS->Version.".");
return; // back to Joomla
}
// Retrieve user parameters
global $what;
$what = isset($_REQUEST['what']) ? $_REQUEST['what'] : ''; // text to search
// Build The URL to the current article
global $art_url;
$art_id = $TBS->JoomlaArticle->id;
$art_url = JRoute::_(ContentHelperRoute::getArticleRoute($art_id));
$art_url .= (strpos($art_url,'?')===false) ? '?' : '&'; // ensure compatibility with the Short URL mode of Joomla
// Load the template
$TBS->JoomlaScript = $PrmLst['script'];
f_load_template($TBS, 'tpl_main.html', 'Simple Search');
if ($what=='') {
// nothing to search
$TBS->MergeBlock('c', 'clear');
} else {
$sql = "
SELECT id, name
FROM jos_components
WHERE (name LIKE '%".str_replace("'", "''", $what)."%')
ORDER BY id
";
$TBS->MergeBlock('c', 'mysql', $sql);
}
/* END : do not use exit() nore TBS->Show() in order to let Joomla continue the process
*/
return; // go back to Joomla
// ------------------------------------------------------
// ------------------------------------------------------
function f_load_template(&$TBS, $modele, $titre='') {
if ($titre!=='') $TBS->JoomlaArticle->title = utf8_encode($titre);
$TBS->LoadTemplate(dirname(__FILE__).'/'.$modele);
// search and delete the <body> element
$p = strpos($TBS->Source, '<body');
if ($p!==false) {
$p = strpos($TBS->Source, '>', $p);
if ($p!==false) $TBS->Source = substr($TBS->Source, $p+1);
}
$p = strpos($TBS->Source, '</body');
if ($p!==false) $TBS->Source = substr($TBS->Source, 0, $p);
// Add the CSS
$TBS->Source = '<link rel="stylesheet" href="'.dirname($TBS->JoomlaScript).'/style.css" type="text/css" />'."\r\n".$TBS->Source;
}
|
tpl_main.html
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Search</title>
<link href="style.css" rel="stylesheet" type="text/css" />
</head>
<body>
<form action="[onshow.art_url;htmlconv=no]" method="post">
Search for:
<input type="text" name="what" value="[onshow.what]"/>
<input type="submit" name="btn_ok" value="OK" />
</form>
<p>Result:</p>
<table border="1" cellspacing="0" cellpadding="4" class="btable">
<tr>
<th bgcolor="#999999">Id</th>
<th bgcolor="#999999">Name</th>
</tr>
<tr>
<td>[c.id;block=tr]</td>
<td>[c.name]</td>
</tr>
<tr class="nodata">
<td colspan="2">[c;block=tr;nodata]No item found</td>
</tr>
</table>
</body>
</html>
|
style.css
.msg-ok {
color: #060;
}
.msg-err {
color: #F00;
}
.nodata {
background-color:#F96;
}
table.btable {
width:auto;
}
table.btable td, th {
padding:2px;
}
table.btable a {
text-decoration:none;
}
|