matks/markdown-blog-bundle

Markdown 文件集成包,用于将简单的博客集成到您的 Symfony 应用程序中

安装: 57

依赖: 0

建议者: 0

安全性: 0

星级: 2

关注者: 4

分支: 2

开放问题: 1

类型:symfony-bundle

1.0.2 2017-12-22 14:06 UTC

This package is auto-updated.

Last update: 2024-09-10 01:30:13 UTC


README

Latest Stable Version Build Status Scrutinizer Code Quality Code Coverage License

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