我想显示博客帖子列表,只显示博客文章的标题和发布日期。但是,目前它还会显示博客文章的内容。
如何删除博客内容以显示在博客帖子列表中?我不想依赖CSS,我想从标记中正确删除它。
答案 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) }) }}">← 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 →</a></li>
{% endif %}
</ul>
{% endif %}
</div>
</div>
</div>
此示例以无样式列表打印文章,该列表显示标题,类别,作者和日期。
现在转到您的cms,然后选择要添加此组件的页面。选择BlogPosts组件并将其添加到您的页面。
Taadaa,你完成了! :)