Закрепления записи блога наверху

Есть ли возможность закрепить нужную запись в блоге наверху, как это реализовано в ЖЖ. В настройка не нашел, плагинов для этого тоже не видел.

2 ответа

  • 3

    создать в приложении сайт блок. например "important_post"
    туда воткнуть часть кода из вашего шаблона stream_posts.html.
    например:

    {$post=$wa->blog->post(3)}
    
    <section class="post" id="post-{$post.id}" {if $wa->param('blog_url')}itemprop="blogPosts" {/if}itemscope itemtype="http://schema.org/BlogPosting">
            <h3>
                <a href="{$post.link}" itemprop="url">{$post.title}</a>
    
                {* @event prepare_posts_frontend.%plugin_id%.post_title *}
                {if !empty($post.plugins.post_title)}
                    {foreach $post.plugins.post_title as $plugin => $output}{$output}{/foreach}
                {/if}
    
            </h3>
            <div class="credentials">
    
                {if isset($post.user.photo_url_20)}
                    {if $post.user.posts_link}
                        <a href="{$post.user.posts_link}">
                            <img src="{$post.user.photo_url_20}" class="userpic" alt="">
                        </a>
                    {else}
                        <img src="{$post.user.photo_url_20}" class="userpic" alt="">
                    {/if}
                {/if}
    
                {if $post.user.posts_link}
                    <a href="{$post.user.posts_link}" class="username">{$post.user.name}</a>
                {else }
                    <span class="username">{$post.user.name}</span>
                {/if}
                <span class="hint date">{$post.datetime|wa_datetime:"humandate"}</span>
                {if $show_comments && $post.comments_allowed}
                    {if !empty($post.comment_count)}
                        <a href="{$post.link}#comments" class="small">
                            {_w('%d comment','%d comments',$post.comment_count)}
                        </a>
                    {else}
                        {*
                        <a href="{$post.link}#comments" class="hint">
                            [`no comments`]
                        </a>
                        *}
                    {/if}
                {/if}
    
            </div>
    
            {* @event prepare_posts_frontend.%plugin_id%.before *}
            {if !empty($post.plugins.before)}
                <div class="text_before">
                    {foreach $post.plugins.before as $plugin => $output}{$output}{/foreach}
                </div>
            {/if}
    
            <div class="text">
                {$post.text}
                {if $post.cutted}
                    <a href="{$post.link}">{$post.cut_link_label|default:'[`Continue reading →`]'}</a>
                {/if}
            </div>
    
            {* attached album photo thumbs *}
            {if $post.album_id && $post.album.id && $post.album.photos}
                {$photos_loaded = 1} {* required for proper photo thumbs retinification *}
                <div class="photo-album-attachment">
                    <ul class="thumbs">
                        {foreach $post.album.photos as $p}
                            <li><a href="{$post.link}#photo{$p.id}"><img src="{$p.thumb_crop.url}" class="retinify" width="96" height="96" alt="{$p.name|escape}"></a></li>
                        {/foreach}
                    </ul>
                </div>
            {/if}
    
            {* @event prepare_posts_frontend.%plugin_id%.after *}
            {if !empty($post.plugins.after)}
                <div class="text_after">
                    {foreach $post.plugins.after as $plugin => $output}{$output}{/foreach}
                </div>
            {/if}
    
        </section>
    

    в самой первой строке этого блока $post=$wa->blog->post(3) - 3 это ID нужной записи.
    потом, в дизайне блога, в шаблоне stream_posts.html в самом начале добавляете код

    <div class="important_post">
       {$wa->block('important_post')}
    </div>
    и в css, выделяете этот пост как вам будет угодно, хоть цветами, хоть рамочками

    если не хочется дублирования этого поста в ленте - то надо будет еще добавить исключение при выводе этого поста в цикле вывода всех постов

    • +1
      Олег Адоевцев Олег Адоевцев 14 сентября 2015 07:42 #

      Тут есть вопросы:

      1. Идентификатор искать внизу браузера? У меня там цифры гораздо большие чем количество записей.

      2. Про не дублирование поста в ленте тоже интересно.

      3. Наверное главное. Я создал несколько тематических блогов на одной платформе. Хотелось бы в каждом из них иметь закркпленную наверху запись.

      • +1

        1. в бэкенде блога заходите в редактирование нужного поста. в адресной строке видите webasyst/blog/?module=post&id=4&action=edit#/
        вот этот id и есть нужная цифра.
        2.

        {foreach $posts as $post}
        
           {if $post.id != ID}
            <section class="post" id="post-{$post.id}" {if $wa->param('blog_url')}itemprop="blogPosts" {/if}itemscope itemtype="http://schema.org/BlogPosting">
        ....skip...
        <section>
           {/if}
        
        {foreachelse}
            {if $page lt 2}
                {_w('%d post','%d posts',0)}
            {/if}
        {/foreach}

        то есть внутри цикла где выводятся посты делаете исключение для поста, который закреплен выше.
        Это откровенный костыль и надо помнить, что при смене этого поста в блоке important_block, нужно будет поменять и здесь.
        Если список постов длинный, то думаю, что это не актуально....ну будет он выведен еще раз где-то там внизу, да и не хай с ним.

        3. ну первое что приходит в голову, добавить проверку для каждого блога.


        {$blog_url=$wa->currentUrl()}
        
        {if $blog_url=="/blog/"}
           {$post=$wa->blog->post(3)}
        {else if $blog_url=="/blog2/"}
           {$post=$wa->blog->post(5)}
        {else if $blog_url=="/blog3/"}
           {$post=$wa->blog->post(333)}
        {/if}

        Я еще раз предупреждаю что это всё откровенные костыли, но если очень надо, то вполне работоспособно -)

  • 1
    Олег Адоевцев 14 сентября 2015 10:32 #

    Спасибо большое! Буду разбираться.

Добавить ответ

Чтобы добавить комментарий, зарегистрируйтесь или войдите