ExBB Community » Файловый ExBB » Решение проблем » Как я выводил последние посты с форума на сайт

Страниц (1): [1]
 

1. valualit - 4 февраля 2013 — 19:45 - перейти к сообщению
Первым делом было внесено небольшое изменение в forum/modules/threadstop/frontindex.php

Привел функцию return_print в следующий вид:
CODE:
function return_print($array,$mode) {
$menu = '';
$array = (is_array($array))?$array:array();
foreach ($array as $key =>$value){
if (!isset($value['name']) || !isset($value['id']) || !isset($value['fid']) || !isset($value['postkey'])) continue;
if(isset($_GET['strlen'])){
$toptopicname = (strlen($value['name'])>(int)$_GET['strlen'])?substr($value['name'],0,(int)$_GET['strlen']).'...':$value['name'];
} else {
$toptopicname = (strlen($value['name'])>32)? substr($value['name'],0,32).'...':$value['name'];
}
$toptopicname = (isset($value['tnun'])) ? $toptopicname.' - '.$value['tnun']:$toptopicname;
$printvalue = (FM_PRINTVAL === TRUE && isset($value[$mode])) ? ' ('.$value[$mode].')':'';
$menu .= '<span class="hint"><a title="'.str_replace("\"","\\\"",$value['name']).'" href="topic.php?forum='.$value['fid'].'&topic='.$value['id'].'&postid='.$value['postkey'].'#'.$value['postkey'].'" poster="'.$value['poster'].'">'.$toptopicname.$printvalue.'</a></span><br>';
}
return $menu;
}

1) Это получаем автора последнего поста
2) Можем ограничить количество символов в названии топика, чтоб красиво влиться в дизайн.

Теперь на сайте делаем вывод:

CODE:
<ul style="list-style: none;">
<?php
$ppf=iconv("windows-1251","utf-8",file_get_contents(VALUALIT_HOST."forum/tools.php?action=threadstop&strlen=28"));
preg_match_all("~<td class=\"row1\" width=\"33\%\">(.*)</td>~isU",$ppf,$match);
unset($ppf);
preg_match_all("~<span class=\"hint\"><a title=\"([^\"]+)\" href=\"([^\"]+)\" poster=\"([^\"]+)\">(.+)</a></span>~isU",$match[1][0],$match);
$i=1;
foreach($match[1] as $key=>$value){ ?>
<li>
<a href="<?=VALUALIT_HOST?>forum/<?=$match[2][$key]?>" style="color:#fff; font-size: 12px;" title="<?=str_replace("\"","\\\"",$match[1][$key])?>"><?=$match[4][$key]?></a> <br/>
<small style="color:#ff0;"><font style="color:#fff;">Автор:</font> <?=$match[3][$key]?></small>
</li>
<?php if($i==4){ break; } $i++; } ?>
</ul>


1) Если парсинг нужен в различные части и требуется ограничение на количество выводимых новостей, я пользуюсь переменной $i
2) VALUALIT_HOST - http путь к корню проекта.

Яндекс.Метрика   

Powered by ExBB
[Script Execution time: 0.0138]     [ ]