тех поддержка - форум
Ваш проект, существует с 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/