【问题标题】:how to implement shortcodes in pages or blog?如何在页面或博客中实现简码?
【发布时间】:2017-01-19 21:06:46
【问题描述】:

我正在使用 php 框架 laravel,我想实现短代码。

有没有人建议如何实现用户可以插入到页面或博客文章中的短代码。

例如,假设我想要一个包含一些图像的画廊的简码,例如

[画廊=id]

然后将显示该特定画廊。当然,我有画廊模型和画廊和图像表。

我的第一个想法是我必须扫描页面/帖子的内容并查找简码,当我找到特定的简码时,然后呢?我应该插入什么来代替它?

我无法插入循环通过库并产生输出的 php 代码。我想最好的方法是运行一个函数来返回我插入的完整 html 代码而不是短代码。

是否可以从函数返回视图并将结果插入页面/帖子?

【问题讨论】:

  • 你到底想要什么?显示只有特定用户可以访问的图库页面?
  • 我希望管理员能够在此示例画廊简码中使用简码,并且当访问者访问使用此简码的页面时,页面将呈现带有图像的画廊。当然,所有用户都可以看到它。注意:我没有使用 Wordpress,我使用的是 Laravel 并想自己实现这个
  • @Maxlight 您可以使用我的库短代码:github.com/thunderer/Shortcode

标签: php laravel


【解决方案1】:

根据您想要的“简码”类型,这里有很多选项:

  1. Blade Directives
  2. Blade Layouts
  3. Blade Sub-Views
  4. Blade Stacks

【讨论】:

    【解决方案2】:

    为了清楚起见,我假设您要将其插入到存储在数据库或其他内容中的内容块中,而不是在您现有的视图文件中。

    假设您想将文本注入到视图中进行显示,您可以允许内容创建者使用诸如 mustache (https://en.wikipedia.org/wiki/Mustache_%28template_system%29) 之类的模板格式和服务器端回调/帮助程序/部分(在视​​图中)来填充您自己的自定义带有动态内容的标签(本例中为图库链接)。

    要点

    1. 我会坚持使用众所周知的基本模板格式,例如 为此留胡子。在 laravel 中,允许 Blade 模板表示法,听起来您希望这种情况下注册一个 Blade::directive: https://www.laravel.com/docs/5.3/blade#service-injection
    2. 如果以前存在这样的库,我会尝试使用现有库 尝试创建自己的短标记标记解析 / 回调范式。 Blade 具有处理此类回调的函数和方法。

    #2 不是必需的,但强烈推荐,但 #1 应被视为接近宗教。

    更新:正如在其他答案中指出的那样,Laravel 内置模板 Blade 具有此功能,因此请坚持使用它的格式和功能。

    这是我的建议(在伪 laravel/php 中):

    • 假设您从模型中拉入控制器的标记内容位于 $content['blade_markedup_content' => 'here is my new gallery: @gallery(1)'] 中以传递给视图。
    • 将 Blade 指令 @preprocess() 添加到模板/视图中,并在模板/视图中使用 <p>@preprocess($blade_markedup_content)</p> 代替原始 <p>{{$blade_markedup_content}}</p>
    • @preprocess() 指令的相应回调函数中
      • 实例化一个新的$my_compiler = new BladeCompiler();
      • 注册这个新的刀片编译器指令来处理你在blade_markedup_content 中输入的@gallery(1)
      • @preprocess()返回$my_compiler->compileString($blade_markedup_content)
    • Viola...理论上,这应该会导致原始模板中 @preprocess($blade_markedup_content) 的解析和替换字符串。

    【讨论】:

    • 我没有使用 Wordpress,我使用的是 Laravel,并希望自己为我的应用程序实现这一点。据我所知,wordpress 插件不适用于 Laravel。
    • @Maxlight 对不起,你的帖子被标记为 wordpress。
    • 没问题,我给它加了 wordpress 的标签,期待一些 wordpress 开发人员给出一些建议,如何在另一个框架中实现它,无论如何,谢谢! :)
    • @Maxlight 同样的逻辑也适用——查看我的更新
    • 啊,我看错了你的帖子,你想要链接到其他实体/资源,而不是样式
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-05-17
    • 1970-01-01
    • 1970-01-01
    • 2017-07-26
    • 1970-01-01
    • 2014-04-15
    • 1970-01-01
    相关资源
    最近更新 更多