Чтобы отступить на мгновение ... Есть две части всего этого.Первая часть - это код PHP, который фактически принимает пользовательский ввод, запрашивает базу данных, обрабатывает данные и т. Д. Вторая часть - это файл TPL.В максимально возможной степени файл TPL должен касаться только представления , а не обработки данных, перекрестных ссылок на данные и т. Д.
Все это чтение базы данных и перекрестные ссылкидолжно происходить внутри простого файла PHP, а не внутри TPL.
Чтобы добавить «Сведения об авторе» на страницу «Список документов» (или как вы называете docs.tpl
), вам нужно найти код PHP, который поднимает список документов.Найдите код PHP, в котором написано что-то вроде:
$smarty->assign('docsarray',$document_list);
Теперь вы хотите передать more информацию в шаблон smarty (файл TPL), чтобы он мог его отобразить.Что-то вроде:
for($document_list as $index => $doc){
$owner = $doc['owner']; // Get the owner of the document
$profile = getProfile($owner); // Create one of the same things that go into $profilearray elsewhere
$document_list[$index]['profile'] = $profile; // Modify original array
}
$smarty->assign('docsarray',$document_list);
Затем перейдите в docs.tpl
и найдите, где он отображает информацию о каждом документе, и добавьте код шаблона smarty для чтения из новой информации о документе, которую вы добавили.(Подробнее см. Справочную страницу Smarty .)
Например, если docs.tpl
показывает таблицу документов, вы можете добавить новый столбец, в котором указаны имя / фамилия автора:
<tr>
<td>{$docsarray[$index].title}</td>
<td>{$docsarray[$index].created_date}</td>
<!-- Next line is new -->
<td>{$docsarray[$index].profile.firstname} {$docsarray[$index].profile.lastname}</td>
</tr>
Если вам нужно что-то, похожее на «окно профиля», вы тоже можете это сделать.Фактически, используя {include}
, вы можете создать profilebox.tpl
и использовать его в обоих местах для уменьшения избыточного кода.