1 (2014-11-18 11:04:14 отредактировано ravilr)

Тема: Сниппет Новости

Это мини решение для новостей на сайте или еще чего то .


Как использовать.
1. Создаем главную Родительскую страницу, например Новости.
2. Создаем дочерние страницы, т.е сами новости
3. Вставляем ниже указанный код в шаблон, в то место где хотите показать новости.

Настройка:
$chslug = 'news'; - где news это slug (часть адреса) главной страницы новостей.
$count == 10 - количество новостей
... ,100); - кол-во символов для ограничения текста


Сам код

<?php
$chslug = 'news';  
$pages = Page::children($chslug);
$pages = Arr::subvalSort($pages, 'sort', 'DESC'); 

    foreach($pages as $count=>$page) { ?>
        <?php echo Date::format($page['date'], $format ='j.n.Y') ; ?><br>
        <a href="<?php echo Site::url().$chslug.'/'.$page['slug']; ?>"><?php echo $page['title']; ?></a> <br>
        <?php preg_match('/<\s*img[^>]*\/*>/i', Pages::content($page['slug']), $ok);  ?>
        <?php echo $ok[0] ; ?><BR/>
        <?php echo Text::cut(strip_tags(Pages::content($page['slug'])),100); ?>
        <a href="<?php echo Site::url().$chslug.'/'.$page['slug']; ?>">читать далее</a> <br><br>
        <br>
        <?php if ($count == 10) break; 
    }
?>

Поделиться

2

Re: Сниппет Новости

Реально ли реализовать что бы по мимо названия статьи он выводил и первое изображение?

Поделиться

3

Re: Сниппет Новости

Необходимо добавлять дополнительное поле для страницы. Тогда можно будет..
В одной из тем я обещал выложить исправленный плагин pages с доп полем. Так что, как выложу, можно будет думать дальше..

Поделиться

4

Re: Сниппет Новости

$count == 10 - количество новостей

по факту 10+1 выводит 11 новостей

Поделиться

5

Re: Сниппет Новости

Влад пишет:

Реально ли реализовать что бы по мимо названия статьи он выводил и первое изображение?

Изменил код. Теперь выводит первое изображение в тексте.

Поделиться

6 (2015-04-04 18:18:04 отредактировано kuzenstudio)

Re: Сниппет Новости

Добрый, помогите пожалуйста решить проблему. Все сделал как написано выше. Формируется вот такая ссылка новости http://site.runews/w222 - не хватает /  Может кто сталкивался ? Спасибо.

Сори уже решил проблему) Добавил .'/'

     <a href="<?php echo Site::url().'/'.$chslug.'/'.$page['slug']; ?>"><?php echo $page['title']; ?></a> <br>
       
        <a href="<?php echo Site::url().'/'.$chslug.'/'.$page['slug']; ?>">читать далее</a> <br><br>

Поделиться

7 (2015-05-23 23:19:16 отредактировано webmaster)

Re: Сниппет Новости

В общем идея понятна и может кому и пригодится..., я тут поправил малость код и малость оформления добавил, которое можно в CSS вынести из кода, вот что получилось:
http://i.imgur.com/qYpNvNE.png
Используйте при желании...
Сам код:

<?php
/*
 * @File: short-news.snippet.php
 * @Package: Monstra
 * @Action: Snippet for Monstra CMS
 */
$chslug = 'news';
$pages = Page::children($chslug);
$pages = Arr::subvalSort($pages, 'sort', 'ASC'); /* 'ASC' - по возрастанию, или 'DESC' - по убыванию */
foreach ($pages as $count => $page) {
    echo '<div style="border: 1px solid #ccc; border-radius: 8px; -webkit-border-radius: 8px; -moz-border-radius: 8px; margin-bottom: 10px; padding: 10px;">';
    echo '<p><time style="display: block; clear: right; margin-bottom: 5px;">' . Date::format($page['date'], $format = 'd.m.Y') . '</time>';
    echo '<a title="' . $page['title'] . '" href="' . Site::url() . '/' . $chslug . '/' . $page['slug'] . '">' . $page['title'] . '</a></p>';
    preg_match('/<\s*img[^>]*\/*>/i', Pages::content($page['slug']), $ok);
    echo $ok[0];
    echo '<p>' . Text::cut(strip_tags(Pages::content($page['slug'])), 100) . '<br><a title="Читать далее" href="' . Site::url() . '/' . $chslug . '/' . $page['slug'] . '">подробнее</a></p>';
    /* Кол-во коротких новостей, в примере 5. */
    if ($count == (5 - 1)) {
        break;
    }
    echo '</div>';
}

Подключение:

<div class="short-news">
    <?php echo Snippet::get('short-news'); ?>
</div>

Поделиться