тех поддержка - форум
Ваш проект, существует с 2010 года, почему нет форума по тех поддержки и развитию классов, плагинов, моделей, шаблонов, готовых решений?
На данный момент, можно задавать вопросы в разделе поддержки
http://mv-framework.ru/questions/
или через обратную связь
http://mv-framework.ru/feedback/
в разделе Поддержка мы отвечаем на возникающие вопросы и выкладываем примеры кода,
в обозримом будущем планируется также вести проект на github
Тогда вопрос такой, как можно создать ленту новостей/статей?
Чтобы сделать новостную ленту вначале нужно создать модель, по типу такой, создать класс, таблицу в БД и прописать модель в файле config/models.php
все как описано тут http://mv-framework.ru/obshchie-printcipy-modeley/
class News extends Model
{
protected $name = "Новости";
protected $model_elements = array(
array("Активация", "bool", "active", array("on_create" => true)),
array("Дата", "date", "date", array("required" => true)),
array("Название", "char", "name", array("required" => true)),
array("Ссылка", "url", "url", array("unique" => true, "translit_from" => "name")),
array("Изображение", "image", "image"),
array("Текст новости", "text", "content", array("rich_text" => true))
);
}После этого модель будет видна в админке. Затем нужно в файле config/routes.php прописать маршруты URL для списка новостей и отдельной новости и создать файлы самих вьюх (шаблонов в папке views)
например так:
"news/" => "view-all-news.php", "news/*/" => "view-news.php",
Теперь URL типа news/ и news/54/ будут переходить на созданные вьюхи, в самих вьюхах можно писать код для вывода списка новостей и отдельной новости. Для шаблона отдельной новости нужна функция поиска новости в базе.
public function defineNewsPage(Router $router)
{
$url_parts = $router -> getUrlParts();$record = false;
if(count($url_parts) == 2)
if(is_numeric($url_parts[1]))
$record = $this -> findRecord(array("id" => $url_parts[1], "active" => 1));
else
$record = $this -> findRecord(array("url" => $url_parts[1], "active" => 1));
return $record;
}
public function display()
{
$params = array("active" => 1, "order->desc" => "date");
$rows = $this -> select($params);
$html = "";
foreach($rows as $row)
{
$url = $this -> root_path."news/".($row['url'] ? $row['url'] : $row['id'])."/";
$html .= "<div class="news-wrapper">";
$html .= "<h2><a href="".$url."">".$row['name']."</a></h2>";
$html .= "<p class="news-date">".I18n :: formatDate($row['date'])."</p>";
if($row['image'])
{
$html .= "<a href="".$url."" class="news-image">";
$html .= $this -> cropImage($row['image'], 187, 127)."</a>";
}
$html .= "<p class="news-content">".Service :: cutText($row['content'], 350, " ...")."</p>";
$html .= "</div>";
}
return $html;
}Далее шаблон общего списка новостей выглядит примерно так
<?
include $mv -> views_path."main-header.php";
?>
<h1>Новости</h1>
<? echo $mv -> news -> display(); ?>
<?
include $mv -> views_path."main-footer.php";
?>А страница отдельной новости так
<?
$record = $mv -> news -> defineNewsPage($mv -> router);
$mv -> display404($record);
$mv -> seo -> mergeParams($record, "name");
include $mv -> views_path."main-header.php";
?>
<h1><? echo $record -> name; ?></h1>
<div class="news-inside-date"><? echo I18n :: formatDate($record -> date); ?></div>
<div class="news-inside-content">
<?
echo $mv -> news -> cropImage($record -> image, 383, 258);
echo $record -> content;
?>
</div>
<?
include $mv -> views_path."main-footer.php";
?>Подробнее можно почитать тут
http://mv-framework.ru/obshie-principy-shablonov/
http://mv-framework.ru/sozdanie-novogo-shablona/
http://mv-framework.ru/vyvod-dannyh-v-shablone/