. 通过终端转到您的项目文件夹。例如:
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) }) }}">← 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 组件并将其添加到您的页面。
塔达,你完成了!:)