2010-07-02, 11:50:13
Here is what I used. I found this somewhere in this forum, and modified it to my needs.
First, you need to create a parent page. Mine was the homepage, so I made all the pages I wanted to be "News and Announcements" a child of "index".
Add this to your theme's function.php file:
Then create a new template for that page you would like to display the stories on and add this wherever you would like the list to be displayed.
First, you need to create a parent page. Mine was the homepage, so I made all the pages I wanted to be "News and Announcements" a child of "index".
Add this to your theme's function.php file:
Code:
/** News List on Home Page **/
function get_news_list($slug) {
$path="data/pages/";
$xml_path="$path$slug.xml";
$data='';
$parent = '';
//Parents
if($da = @fopen($xml_path,"r"))
{
$data=getXML($xml_path);
$parent= $data->parent;
@fclose($da);
}
else
{
echo "Error: Cannot find <strong>$xml_path</strong>";
}
if ($parent =='')
{
$parent=$slug;
}
//Children
$count=0;
$urlArray = array();
$morderArray = array();
if (is_dir($path)) {
if ($dh = opendir($path)) {
while (($file = readdir($dh)) !== false) {
if($file!="." AND $file!=".." AND $file!=".htaccess"){
$xml_path="$path$file";
$da = @fopen($xml_path,"r");
$data=getXML($xml_path);
if ($data->parent != ''){
if (strcasecmp($data->parent, $parent) == 0) {
$morderArray[$count]['menuorder'] = $data->menuOrder;
$morderArray[$count]['count'] = $count;
$urlArray[$count]['url'] = $data->url;
$urlArray[$count]['title'] = $data->title;
$urlArray[$count]['content'] = $data->content;
$count++;
}
}
@fclose($da);
}
}
closedir($dh);
}
}
//Layout
$output ='<div>';
foreach ($morderArray as $key => $val) {
$n= $morderArray[$key]['count'];
$output .= '<dl class="news-list">';
$output .= '<dt><a href="index.php?id='.$urlArray[$n]['url'].'">'.$urlArray[$n]['title'].'</a></dt>';
$output .= '<dd>'._substr(htmlspecialchars_decode($urlArray[$n]['content']),75).'</dd>';
$output .= '<dd><a class="readmore" href="index.php?id='.$urlArray[$n]['url'].'">read more</a></dd>';
$output .= '</dl>';
}
$output .= '</div>';
echo $output;
}
Then create a new template for that page you would like to display the stories on and add this wherever you would like the list to be displayed.
Code:
<?php get_news_list(return_page_slug()); ?>