Автор:
Дмитрий Кондин
Движком всегда запускается функция main() из
/template/frontend/ваш_шаблон/main/main.php
Также все что лежит внутри шаблона не обновляется из центра обновлений, следовательно мы можем там делать все что нам нужно и это сохраниться при обновлениях.
Сейчас мы поместим произвольную переменную из кода PHP в шаблон, для этого в функции main(), можно в самом начале сделаем инициализацию переменной:
/** * Main * @param void * @return string */
function main () {
$this->template->assign('my_var', 'Моя переменная');
.........
дальше идет системный код, его не трогаем
Теперь в шаблоне это нам будет доступно так:
{$my_var}
На сайте эта переменная преобразуется в ее значение
Моя переменная
Более сложный пример, сделаем SQL-запрос для выборки данных из таблицы.
Также в main()
/** * Main * @param void * @return string */
function main () {
//Класс для работы с базой данных
$DBC=DBC::getInstance();
//Подготовим SQL-запрос (получить строчку с данными пользователя по его логину (вместо ? будет подставляться значение)
$query = 'SELECT * FROM '.DB_PREFIX.'_user WHERE login=?';
//будем искать пользователя с логином admin
//NB использовать '*' при выборке данных пользователя не стоит, лучше конкретно перечислять нужные поля. Потому что можете забыть убрать отладочный вывод и ВСЕ данные пользователя могут быть перехвачены посторонними.
$login = 'admin';
//выполняем запрос, смотрите как передаются аргументы $login
$stmt=$DBC->query($query, array($login));
if ( $stmt ) {
//выжимаем массив данных
$ar = $DBC->fetch($stmt);
//присваиваем массив в шаблон
$this->template->assign('user_array', $ar);
}
.........
дальше идет системный код, его не трогаем
Теперь в шаблоне мы можем получить доступ к этому массиву, этот код выведет все содержимое массива
<pre>{$user_array|@print_r}</pre>
NB2. Когда отладочный вывод, как в коде выше, вам перестанет быть нужным - удаляйте его или, если комментируете, то комментируйте как {*$user_array|@print_r*} но ни в коем случае не
<!--<pre>{$user_array|@print_r}</pre>-->
Увидим на сайте примерно такое
Array( [user_id] => 1 [login] => admin [pass] => admin [active] => 1 [reg_date] => 2013-07-30 11:18:10 [password] => 21dsfsdfs57a5a743894a0e4a801fc3 [fio] => Кондин Дмитрий Валерьевич [email] => kondin@etown.ru [account] => 0 [group_id] => 1 [company_id] => 0 [phone] => 234-44-23 [site] => http://www.sitebill.ru [imgfile] => img529befac1ca89_1385951148_941.jpg [mobile] => +79138317494 [icq] => 73072365 [newpass] => [newpass_retype] => [admnf] => [tariff_id] => 1)
А чтобы получить доступ к отдельному значению из массива, например, к fio, то делаем так:
{$user_array.fio}
Будет выведено
Кондин Дмитрий Валерьевич