在OctoberCMS中显示博客帖子列表时隐藏博客文章的内容?

时间:2015-08-04 08:14:41

标签: octobercms

我想显示博客帖子列表,只显示博客文章的标题和发布日期。但是,目前它还会显示博客文章的内容。

如何删除博客内容以显示在博客帖子列表中?我不想依赖CSS,我想从标记中正确删除它。

2 个答案:

答案 0 :(得分:3)

我设法搞清楚了。

在插件的内部深处,有一个名为default.htm的文件。它位于:plugins/rainlab/blog/components/posts

这是有问题的代码:

        {% if post.excerpt %}
            <p class="excerpt">{{ post.excerpt }}</p>
        {% else %}
            <div class="content">{{ post.content_html|raw }}</div>
        {% endif %}

就我的目的而言,我暂时删除了{% else %}声明,但我希望在这里做一些有趣的事情,这样可以在某些地方显示博客帖子列表而不显示内容,但是然后在其他地方可见。

答案 1 :(得分:1)

。通过终端转到您的项目文件夹。例如:

CD /usr/projects/MyOctoberApplication

您可以使用终端

创建新插件
php artisan create:plugin yourname.YourPluginName

然后使用终端为该插件创建一个新组件。

php artisan create:component yourname.YourPluginName BlogPosts

然后转到新创建的插件。它应该在 / plugins / yourname / YourPluginName

在Plugin.php文件中有一个返回数组的方法名称registerComponents。将您的组件添加到数组中。

public function registerComponents()
    {
        return [
            'yourname\YourPluginName\components\blogposts' => 'BlogPosts'
        ];
    }

现在您已经创建了自己的插件,注册了您的第一个组件,现在是时候更改视图了。

转到组件文件夹。它有一个名为 BlogPosts.php 的类和一个名为blogposts的文件夹,其中包含一个名为 default.htm 的html文件。

打开BlogPosts.php文件,并在方法组件详细信息中添加您的数据,例如:

public function componentDetails()
    {
        return [
            'name'        => 'BlogPosts',
            'description' => 'Extends rainlabs blogpost component'
        ];
    }

我现在假设您正在使用Rainlab Blog插件,但其他插件应该以相同的方式工作。

转到/plugins/rainlab/blog/components/Posts.php并复制方法defineProperties,它应该如下所示:

public function defineProperties()
    {
        return [
            'slug' => [
                'title'       => 'rainlab.blog::lang.settings.post_slug',
                'description' => 'rainlab.blog::lang.settings.post_slug_description',
                'default'     => '{{ :slug }}',
                'type'        => 'string'
            ],
            'categoryPage' => [
                'title'       => 'rainlab.blog::lang.settings.post_category',
                'description' => 'rainlab.blog::lang.settings.post_category_description',
                'type'        => 'dropdown',
                'default'     => 'blog/category',
            ],
        ];
    }

将此方法添加到组件中的BlogPosts类。

在我们准备更改视图之前,最后一件事是确保该类扩展了Rainlab Posts类的组件。

在类定义之上添加:

use rainlab\blog\components\posts as Posts;

扩展你的课程:

class BlogPosts extends Posts

现在你已经创建了一个扩展另一个组件的组件,你这样做(或者以其他方式完成)的原因是如果你改变rainlab插件本身,那么当你更新插件时,更改将被撤消。 / p>

现在您可以更新插件,但仍然可以保持不变。

转到博客帖子并打开 default.htm

它应该为空或包含有关组件的一些简单标记。删除标记。

如果您只想显示博客标题和日期,则可能如下所示:

我使用twitter bootstrap类作为css的示例

{% set posts = __SELF__.posts %}
    <!-- The above code sets the collection to posts -->
    <div class="container">
        <div class="row">
            <div class="col-xs-12 col-md-8">
                <ul class="post-list list-unstyled">
                    {% for post in posts %}

                    <!-- For each post in posts we want to do something. Print our the data probably :) -->

                    <li>
                        <h3 class="blog-title"><a href="{{ post.url }}">{{ post.title }}</a></h3>
                        <!-- Posting blog title and the url -->

                        <p class="info">
                            Posted
                            {% if post.categories.count %} in {% endif %}
                            {% for category in post.categories %}
                            <a href="{{ category.url }}">{{ category.name }}</a>{% if not loop.last %}, {% endif %}
                            {% endfor %}
                            on {{ post.published_at|date('M d, Y') }}

<!-- The above if you are using categories -->
                        </p>
                    </li>

    {% else %}
                    <li class="no-data">{{ noPostsMessage }}</li>
                    {% endfor %}
                </ul>
    <!-- Your pagination -->
     {% if posts.lastPage > 1 %}
                <ul class="pagination">
                    {% if posts.currentPage > 1 %}
                    <li><a href="{{ this.page.baseFileName|page({ (pageParam): (posts.currentPage-1) }) }}">&larr; Prev</a></li>
                    {% endif %}

                    {% for page in 1..posts.lastPage %}
                    <li class="{{ posts.currentPage == page ? 'active' : null }}">
                        <a href="{{ this.page.baseFileName|page({ (pageParam): page }) }}">{{ page }}</a>
                    </li>
                    {% endfor %}
                    {% if posts.lastPage > posts.currentPage %}
                    <li><a href="{{ this.page.baseFileName|page({ (pageParam): (posts.currentPage+1) }) }}">Next &rarr;</a></li>
                    {% endif %}
                </ul>
                {% endif %}
            </div>
        </div>
    </div>

此示例以无样式列表打印文章,该列表显示标题,类别,作者和日期。

现在转到您的cms,然后选择要添加此组件的页面。选择BlogPosts组件并将其添加到您的页面。

Taadaa,你完成了! :)