在 OctoberCMS 中显示博客 post 列表时隐藏博客 post 的内容?
Hide content of blog posts when displaying blog post list in OctoberCMS?
我想显示博客 post 的列表,并且只显示博客 post 的标题和发布日期。但是,目前,它还显示博客 post 的内容。
如何从博客 post 列表中删除博客内容?我不想依赖 CSS,我想从标记中正确删除它。
我想通了。
在插件的深处,有一个名为 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 %}
语句,但我希望在这里做一些有趣的事情,让博客 post 列表显示时没有内容在某些地方,但在其他地方可见。
。通过终端转到您的项目文件夹。例如:
CD /usr/projects/MyOctoberApplication
您可以使用终端创建新插件
php artisan create:plugin yourname.YourPluginName
然后也使用终端为该插件创建一个新组件。
php artisan create:component yourname.YourPluginName BlogPosts
然后转到您新创建的插件。它应该在 /plugins/yourname/YourPluginName
在文件Plugin.php中有一个方法名registerComponents,它returns一个数组。像这样将您的组件添加到数组中。
public function registerComponents()
{
return [
'yourname\YourPluginName\components\blogposts' => 'BlogPosts'
];
}
现在您已经创建了自己的插件,注册了您的第一个组件,现在是时候更改视图了。
转到您的组件文件夹。它有一个名为 BlogPosts.php 的 class 和一个名为 blogposts 的文件夹,其中包含一个名为 default.htm[的 html 文件=69=].
打开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 class 组件中。
在我们准备更改视图之前的最后一件事是确保 class 扩展 Rainlab 帖子的组件 class。
在 class 定义上方添加:
use rainlab\blog\components\posts as Posts;
并扩展您的 class:
class BlogPosts extends Posts
现在您已经创建了一个扩展另一个组件的组件,您这样做(或以其他方式完成)的原因是,如果您更改 rainlab 插件本身,更新插件时所做的更改将被撤消.
现在您可以更新插件并且您的更改仍然保持不变。
转到博文并打开 default.htm
它应该是空的或包含一些关于组件的简单标记。删除标记。
如果您只想显示博客标题和日期,它可能看起来像这样:
我使用 Twitter bootstrap classes 作为 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,你完成了! :)
我想显示博客 post 的列表,并且只显示博客 post 的标题和发布日期。但是,目前,它还显示博客 post 的内容。
如何从博客 post 列表中删除博客内容?我不想依赖 CSS,我想从标记中正确删除它。
我想通了。
在插件的深处,有一个名为 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 %}
语句,但我希望在这里做一些有趣的事情,让博客 post 列表显示时没有内容在某些地方,但在其他地方可见。
。通过终端转到您的项目文件夹。例如:
CD /usr/projects/MyOctoberApplication
您可以使用终端创建新插件
php artisan create:plugin yourname.YourPluginName
然后也使用终端为该插件创建一个新组件。
php artisan create:component yourname.YourPluginName BlogPosts
然后转到您新创建的插件。它应该在 /plugins/yourname/YourPluginName
在文件Plugin.php中有一个方法名registerComponents,它returns一个数组。像这样将您的组件添加到数组中。
public function registerComponents()
{
return [
'yourname\YourPluginName\components\blogposts' => 'BlogPosts'
];
}
现在您已经创建了自己的插件,注册了您的第一个组件,现在是时候更改视图了。
转到您的组件文件夹。它有一个名为 BlogPosts.php 的 class 和一个名为 blogposts 的文件夹,其中包含一个名为 default.htm[的 html 文件=69=].
打开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 class 组件中。
在我们准备更改视图之前的最后一件事是确保 class 扩展 Rainlab 帖子的组件 class。
在 class 定义上方添加:
use rainlab\blog\components\posts as Posts;
并扩展您的 class:
class BlogPosts extends Posts
现在您已经创建了一个扩展另一个组件的组件,您这样做(或以其他方式完成)的原因是,如果您更改 rainlab 插件本身,更新插件时所做的更改将被撤消.
现在您可以更新插件并且您的更改仍然保持不变。
转到博文并打开 default.htm
它应该是空的或包含一些关于组件的简单标记。删除标记。
如果您只想显示博客标题和日期,它可能看起来像这样:
我使用 Twitter bootstrap classes 作为 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,你完成了! :)