0

I want to show a list of blog posts, and just display the Title and publish date of the blog posts. However, at the moment, it also displays the content of the blog posts as well.

How can I remove the blog content from being displayed on a blog post list? I don't want to rely on CSS, I'd like to remove it properly from the markup.

4

2 回答 2

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 %}暂时删除了该声明,但我希望在这里做一些花哨的事情,允许博客文章列表在某些地方显示没有内容,但在其他地方可见。

于 2015-08-04T13:16:41.813 回答
2

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

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 博客插件,但其他插件应该以相同的方式工作。

转到 /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 插件本身,则在更新插件时更改将被撤消。

现在您可以更新插件,并且您的更改仍然保持不变。

转到 blogposts 并打开default.htm

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

如果您只想显示博客标题和日期,它可能看起来像这样:

我使用 twitter 引导类作为 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 组件并将其添加到您的页面。

塔达,你完成了!:)

于 2015-08-21T08:19:42.743 回答