Пейджинация на PHP и Smarty
Рассмотрим, как можно при помощи PHP и пары шаблонов сделать динамическую пейджинацию. Для работы этого примера понадобится создать 2 шаблона: один индексный, один модульный.
1. Создание модульного шаблона
Его нужно создать в первую очередь, так как в последствии будет использован ID этого шаблона. Содержание этого шаблона можно скопировать из стандартного шаблона главной страницы:
<mt:SetVar name="body_class" value="mt-main-index"> <mt:SetVar name="main_template" value="1"> <mt:SetVar name="main_index" value="1"> <mt:SetVar name="sidebar" value="1"> <mt:SetVarBlock name="title"><mt:BlogName encode_html="1" /></mt:SetVarBlock> <mt:Include module="Header" /> <mt:Entries> <mt:EntryTrackbackData /> <mt:Include module="Entry Summary" /> </mt:Entries> <div class="content-nav"> <a href="<mt:Link template="archive_index" />">Archives</a> </div> <mt:Include module="Footer" />
В этот шаблон необходимо добавить данные для пейджинации:
<mt:SetVar name="body_class" value="mt-main-index"> <mt:SetVar name="main_template" value="1"> <mt:SetVar name="main_index" value="1"> <mt:SetVar name="sidebar" value="1"> <mt:SetVarBlock name="title"><mt:BlogName encode_html="1" /></mt:SetVarBlock> <mt:Include module="Header" /> <mt:Entries lastn="10" offset="`$smarty.request.offset`"> <mt:EntryTrackbackData /> <mt:Include module="Entry Summary" /> </mt:Entries> <div class="content-nav"> {{capture assign="count"}}<mt:BlogEntryCount />{{/capture}} {{if $smarty.request.offset < $count-10}} <a href="?offset={{$smarty.request.offset+10}}">Следующая страница</a> {{/if}} {{if $smarty.request.offset > 0}} <a href="?offset={{math equation="max(x-10,0)" x=$smarty.request.offset}}">Предыдущая страница</a> {{/if}} </div> <mt:Include module="Footer" />
2. Создание индексного шаблона
После создания модульного шаблона, нужно узнать его ID. Сделать это можно, посмотрев при редактировании на адрес:
example.com/cgi-bin/mt/mt.cgi?__mode=view&_type=template&id=123&blog_id=1
Где значение параметра id и есть ID шаблона (в данном примере 123).
Далее необходимо создать индексный шаблон, опубликовав его под именем entries.php (имя может быть и другое, главное — чтобы расширение было .php). Шаблон должен быть таким (не забудьте указать в нём ID своего модульного шаблона):
<?php // Подключение PHP-библиотеки MT include('<mt:CGIServerPath />/php/mt.php'); // Определение ID блога и загрузка конфига $mt = new MT(<mt:BlogID />, '<mt:ConfigFile />'); // Для MT 4 //$mt = MT::get_instance(<mt:BlogID />, '<mt:ConfigFile />'); // Для MT 5 // Подкючение шаблона по ID $mt->display("mt:123"); ?>
3. Ссылка с главной страницы
Теперь, чтобы пользователи могли «листать» записи вашего блога, необходимо разместить ссылку с главной страницы. Для этого откройте шаблон главной страницы, найдите блок
<div class="content-nav"> <a href="<mt:Link template="archive_index" />">Archives</a> </div>
и замените на
<div class="content-nav"> <a href="<mt:BlogURL />entries.php?offset=10">Предыдущие записи</a> </div>