matks / markdown-blog-bundle
Markdown 文件集成包,用于将简单的博客集成到您的 Symfony 应用程序中
1.0.2
2017-12-22 14:06 UTC
Requires
- php: >=5.5
- erusev/parsedown: ^1.6
- symfony/config: >=2.8
- symfony/dependency-injection: >=2.8
- symfony/http-foundation: >=2.8
- symfony/http-kernel: >=2.8
- symfony/serializer: >=2.8
- symfony/validator: >=2.8
- symfony/yaml: >=2.8
Requires (Dev)
- atoum/atoum: dev-master
- behat/symfony2-extension: 1.1.*
This package is auto-updated.
Last update: 2024-09-10 01:30:13 UTC
README
Markdown 文件集成包,用于将简单的博客集成到您的 Symfony 应用程序中
安装
需要此包
$ composer require matks/markdown-blog-bundle
在您的 Symfony 应用程序中启用此包
<?php // app/AppKernel.php public function registerBundles() { $bundles = array( // ... new \Matks\MarkdownBlogBundle\MarkdownBlogBundle(), ) }
配置此包
markdown_blog: posts_directory: 'path_to_my_markdown_docs'
使用方法
使用您喜欢的 Markdown 编辑器编写您的 Markdown 文章。然后将它们复制到您的 posts_directory 文件夹中。
文章标题将从文件名中解析出来。
在 posts_directory 文件夹中编写一个 library_register.yml 文件,它将提供您的文章元数据。
示例
library_entries: My-first-post: date: '2016-04-01' category: Blog Constructive-thoughts: date: '2016-04-01' category: Blog A-dev-tale: date: '2016-05-01' category: Dev tags: ['github', 'open-source']
对于每个博客条目,条目名称必须与 Markdown 文件名匹配。可用的元数据有
- 日期 (字符串,格式 YYYY-MM-DD)
- 分类 (字符串)
- 标签 (字符串数组)
- 别名 (字符串) ; 覆盖您的文章名称
如果没有在注册中找到条目但有文件,则文章仍然可用,但发布日期将根据文件的创建时间戳计算。
就是这样!您的博客数据结构可通过服务 markdown_blog.library
(类 Library)获取。
您可以使用以下函数获取文章
$library = $this->get('markdown_blog.library'); /** @var Post[] $allPosts */ $allPosts = $library->getAllPosts(); /** @var boolean $isPostRegistered */ $isPostRegistered = $library->isPostRegistered(); /** @var Post $post */ $post = $library->getPostByName(); /** @var Post[] $posts */ $posts = $library->getPostsByName(); /** @var Post[] $posts */ $posts = $library->getPostsByDate(); /** @var Post[] $posts */ $posts = $library->getPostsByCategory(); /** @var Post[] $posts */ $posts = $library->getPostsByTag();
现在您可以使用任何模板显示您的博客。例如
<?php namespace AppBundle\Controller; use Matks\MarkdownBlogBundle\Blog\Library; use Symfony\Bundle\FrameworkBundle\Controller\Controller; use Symfony\Component\HttpFoundation\Request; class BlogController extends Controller { public function indexAction(Request $request) { $library = $this->getLibrary(); $allPosts = $library->getAllPosts(); return $this->render( 'default/index.html.twig', ['posts' => $allPosts] ); } /** * @return Library */ private function getLibrary() { return $this->get('markdown_blog.library'); } }
您可以查看 markdown-blog-bundle-example。它使用 bootstrap 模板显示博客。
测试
独立上下文
在包隔离上下文中,只需使用 composer 安装开发依赖项
$ composer install
使用 atoum 二进制文件运行单元测试套件
$ vendor/bin/atoum -bf vendor/autoload.php -d Tests/Unit/
使用 behat 二进制文件通过 Symfony2 固定应用运行功能测试
$ vendor/bin/behat -c behat.ci.yml