Один клиент подкинул интересную задачку. Нужно вывести на главной заголовки записей из указанных рубрик. Данная возможность уже присутствует в MaxSite CMS - достаточно указать необходимые опции в настройке шаблона.
Но, нюанс здесь в том, что выводить нужно блоками по рубрикам: чтобы записи группировались по рубрикам и выводился заголовок этой рубрики в каждом блоке.
Алгоритм в целом очень простой. Первым делом нужно ввести еще одну опцию в options.ini:
[Блоки рубрик на главной] options_type = templates options_key = home_cat_block type = checkbox description = "Отметьте, если нужно выводить записи блоками по отдельной указанной (в «Номера рубрик для главной») рубрике на главной." default = 0
То есть это будет простой чекбокс. Мы просто смотрим эту отметку, и если она будет включена, значит подключим файл для вывода.
Я не стал усложнять home.php, а просто создал еще один файл home-cat-block.php, в котором выполняется вывод. В home.php в самом верху добавим такие строчки:
if (mso_get_option('home_cat_block', 'templates', '0')) { require('home-cat-block.php'); return; }
Думаю, тут все понятно: если опция включена, переключаемся на home-cat-block.php.
Сам файл home-cat-block.php я полностью приводить не буду, просто расскажу что в нем делается.
По сути это тот же самый home.php. Различие в том, что мы сначала получаем список указанных рубрик (из настроек шаблона - home_cat_id) и потом подставляем каждый id рубрики в параметры к mso_get_pages().
Данные рубрик - в нашем случае достаточно только заголовка, мы получаем из массива всех рубрик, который возвращает функция mso_cat_array_single().
Больше разницы с home.php нет.
В общем кому интересно разобрать этот пример, посмотрите указанные файлы. Я думаю, что хороший пример использования mso_get_pages() с разными параметрами. Таким образом, если вам нужно на сайте организовать вывод записей поблочно, то воспользуйтесь этим алгоритмом.
ps Такой вывод вообще делает блог похожим на обычный сайт. :)
Комментариев: 9 RSS
1GERAsimov23-09-2008 22:35
Отлично! как раз к стати. На WP постоянно именно такой вывод и использую. Но там приходиться воротить гору запросов. Вот еще б подсказали как можно у первого поста вывести привью имеющейся в посте фотографии и указанное количество символов теста самого поста а у остальных только заголовок.
Заранее БЛАГОдарен!
2Максим24-09-2008 07:18
Тут как обычно: вводите в цикл переменную, которая увеличивается на единицу за каждую итерацию. Если она равна 1 (то есть первый проход), формируете отличный от обычного вывод данных. Обрезать текст на указанное количество слова можно с помощью mso_str_word().
3WaveСайт25-09-2008 19:56
http://groups.google.com/group/maxsite/files
Но лучше посмотрите любую другую, например wordpress.
4Miha12-04-2009 19:24
А можно посмотреть как это выглядит на практике, Макс. Если не секрет - было бы интересно посмотреть результат :)
5Максим12-04-2009 20:30
Уже в комплекте с MaxSite CMS. На этом сайте главная так и выводится.
6Аноним03-06-2009 15:07
Все вышеописанное верно только для записей типа blog, а хотелось бы выводить на первую и static записи...
7WaveСайт03-06-2009 16:38
В шаблоне одной строчкой параметров решается.
8Иван10-05-2011 09:03
Более корректно ставлю вопрос - эта функция в новой версии уже реализована и ничего не нужно вписывать в скрипты самостоятельно?
9Максим10-05-2011 11:36
Да, всё давно уже в комплекте MaxSite CMS.