Smarty-шаблоны для вывода записей из БД
Smarty-шаблоны для вывода записей из БД используются в связке:
- дизайн: Smarty-шаблоны
- администрирование БД: классическая админка AdvOntology
Файлы шаблонов с расширением .txt должны храниться в папке, прописанной в параметре template_dir, который задается при инициализации шаблона.
Инициализация и вызов
Файл шаблона myPattern.txt
Пример файла myPattern.txt.
Обращение к элементам массива в цикле foreach:
- from – имя переменной в php
- item – имя элемента массива внутри цикла; $item.param в Smarty соответствует $item["param"] в php.
{foreach from=$items item=item} <div class="play"><table><tr> <td class="date"> <div class="day">{$item.datetime|date_format:"%e"}</div> <div class="month">{$item.month}</div> <div class="time_">{$item.datetime|date_format:"%H:%M"}</div></td> <td><a href="{$item.href}"><img class="img-link" src="{$item.img}"></a></td> <td class="about {if $item.play.premier=="1"}premier{/if}" width="450px"> <div class="title"><a href="{$item.href}">{$item.play.name}</a></div> <div class="author">{$item.play.author_short}</div> <div class="desc">{$item.play.comm_short}</div></td> <td class="links"> </td> </tr></table></div><br/><hr/> {/foreach}
Админка AdvOntology
Стандартная админка:
{{adminadvontology type="MyType" max="10"}}
Кастомная админка:
<?php
$srvOnto = $this->srvFactory("AdvOntology");
$kernel = $this->srvMainKernel();
$months = array ("", "января", "февраля", "марта", "апреля", "мая", "июня", "июля", "августа", "сентября", "октября", "ноября", "декабря");
$links = $srvOnto->getAllConcepts("linkkamAfisha", 0, 100, "datetime", "ASC");
echo '<div align="center"><i>Просмотр таблицы Афиша</i></div><br>';
echo '<table border="0" width="100%"><tbody><tr style="background-color: black;"><td style="width: 22px;"></td><td style="width: 22px;"></td><td><b>Дата</b></td><td><b>Время</b></td><td><b>Спектакль</b></td><td style="width: 22px;"></td></tr>';
$i=0;
foreach ($links as $item) {
$play = $srvOnto->getConcept("wpkamPlay", $item["kamPlay1"]);
$style = (fmod($i++, 2) == 0)?'style="background-color: rgb(50, 50, 50);"':'';
$playdate = strtotime($item["datetime"]);
echo '<tr '.$style.'>
<td><small><a href="?editid='.$item["id"].'">
<img src="'.$kernel->config["root_url"].'images/additional/edit.png" alt="Править" style="border: 0px none;"></a></small></td>
<td>'.$item["id"].'</td>
<td>'.date("j", $playdate)." ".$months[date("n", $playdate)].'</td>
<td>'.date("H:i", $playdate).'</td>
<td>'.$play["name"].'</td>
<td><small><a href="?deleteid='.$item["id"].'">
<img src="'.$kernel->config["root_url"].'images/additional/drop.png" alt="Удалить" style="border: 0px none;" onclick="return delTableItem();"></a></small></td>
</tr>';
}
echo '</tbody></table>';
if($this->IsAdmin()) {
// security init
$this->secAdminedittable = true;
$this->secAdminviewtable = true;
// init adminviewtable
$tname='advontotypes_linkkamAfisha';
// init adminedittable
$notparse = '1';
$fieldar = array (
array ('Спектакль','kamPlay1','tselect table="advontotypes_wpkamPlay" field="name" key="id"', ''),
array ('Дата и время','datetime','datetime', '')
);
include('actions/adminedittable.php');
//security finalization
$this->secAdminedittable = false;
$this->secAdminviewtable = false;
}
?>