shakaran/faq-bundle

Symfony 4.x FAQ bundle

4.0.1 2019-06-23 01:06 UTC

This package is auto-updated.

Last update: 2024-09-29 13:34:34 UTC


README

ShakaranFaqBundle 是 GenjFaqBundle 的分支,支持 Symfony 4.3+。

它允许你在网站上显示 FAQ,问题按类别分组。功能

  • 问题按类别分组
  • 类别可以停用
  • 问题可以草稿和计划发布
  • 可以一次性显示所有信息,也可以折叠问题/类别,对于大型 FAQ。这基本上取决于你 - 你如何在模板中处理
  • 折叠模式生成 SEO 友好的 URL
  • 包含非常简单的 mysql 搜索 - 如果你需要更高级的搜索,请使用 elasticsearch

从 GenjFaqBundle 迁移到你的代码

如果你在 GNU/Linux 终端中,执行以下命令以轻松快速地替换代码

grep -rl GenjFaqBundle src | xargs sed -i 's$GenjFaqBundle$ShakaranFaqBundle$g'
grep -rl GenjFaqBundle config | xargs sed -i 's$GenjFaqBundle$ShakaranFaqBundle$g'
grep -rl Genj src | xargs sed -i 's$Genj$Shakaran$g'
grep -rl Genj config | xargs sed -i 's$Genj$Shakaran$g'

要求

查看 composer.json

安装

将此添加到你的 composer.json 中

    ...
    "require": {
        ...
        "gedmo/doctrine-extensions": "~2.3,<3.0",
        "shakaran/faq-bundle": "dev-master"
        ...

然后运行 composer update。完成后,在 AppKernel.php 中启用该包

# app/AppKernel.php
class AppKernel extends Kernel
{
    public function registerBundles() {
        $bundles = array(
            ...
            new Shakaran\FaqBundle\ShakaranFaqBundle()
            ...

将路由规则添加到你的 routing.yml 中

# app/config/routing.yml
shakaran_faq:
    resource: "@ShakaranFaqBundle/Resources/config/routing.yml"

最后,更新你的数据库模式

php bin/console doctrine:schema:update --dump-sql

使用 --force 选项实际执行 DB 更新。

完成。现在你应该可以通过 http://yourproject.com/faq URL 访问该包,如果你已在数据库中添加至少一个类别。

可选:加载 fixtures

如果你使用 doctrine-fixtures 包,你可以这样加载 fixtures

php bin/console doctrine:fixtures:load --fixtures=vendor/shakaran/faq-bundle/src/Shakaran/FaqBundle/DataFixtures/

配置

你可以选择性地将以下配置包含到你的 config.yml 中

shakaran_faq:
    select_first_category_by_default: false
    select_first_question_by_default: false

这两个配置都会默认打开用户尚未选择类别和/或问题时的第一个类别和/或问题。默认值都是 'false',所以如果你想这种行为,请将其设置为 'true'。

注意,还需要为 gedmo/doctrine-extensions 配置 Sluggable 和 Timestampable 行为(见 https://github.com/Atlantic18/DoctrineExtensions)。

高级

如果你想显示比默认的类别列表(包含所有问题和答案)更多的内容,你不应该导入包路由,而应该只复制实际使用的部分。

例如,如果你想为每个问题使用单独的页面,请使用 shakaran_faq_question_show 路由。

有关更多示例,请参阅 https://github.com/genj/faq-demo

FAQ

  • 如何将其添加到 SonataAdmin?

你可以使用 GenjFaqAdminBundle: https://github.com/genj/GenjFaqAdminBundle 或者创建自己的管理类。