sterzycom/site/plugins/feed/feed.php

58 lines
No EOL
1.4 KiB
PHP

<?php
/**
* Feed Plugin
*
* @author Bastian Allgeier <bastian@getkirby.com>
* @version 2.0.0
*/
Pages::$methods['feed'] = function($pages, $params = array()) {
// set all default values
$defaults = array(
'url' => url(),
'title' => 'Feed',
'description' => '',
'link' => url(),
'datefield' => 'date',
'textfield' => 'text',
'modified' => time(),
'excerpt' => false,
'generator' => kirby()->option('feed.generator', 'Kirby'),
'header' => true,
'snippet' => false,
);
// merge them with the user input
$options = array_merge($defaults, $params);
// sort by date
$items = $pages->sortBy($options['datefield'], 'desc');
// add the items
$options['items'] = $items;
$options['link'] = url($options['link']);
// fetch the modification date
if($options['datefield'] == 'modified') {
$options['modified'] = $items->first()->modified();
} else {
$options['modified'] = $items->first()->date(false, $options['datefield']);
}
// send the xml header
if($options['header']) header::type('text/xml');
// echo the doctype
$html = '<?xml version="1.0" encoding="utf-8"?>' . PHP_EOL;
// custom snippet
if($options['snippet']) {
$html .= snippet($options['snippet'], $options, true);
} else {
$html .= tpl::load(__DIR__ . DS . 'template.php', $options);
}
return $html;
};