首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在页面或博客中实现短代码?

如何在页面或博客中实现短代码?
EN

Stack Overflow用户
提问于 2017-01-19 21:06:46
回答 2查看 628关注 0票数 2

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

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

例如,假设我希望有一个包含一些图像的图片库的短代码,比如

gallery=id

然后展示那个特定的画廊。当然,我有画廊模型和图片库&图像表。

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

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

可以从函数返回视图并将结果插入页面/post中吗?

EN

回答 2

Stack Overflow用户

发布于 2017-01-19 21:10:24

为了明确起见,我假设您希望将其插入到存储在db或其他文件中的内容块中,而不是在您退出的视图文件中。

假设您希望将文本插入视图中以供显示,则可以允许内容创建者使用模板格式,如带有服务器端回调/帮助器/部分(在视图中)的胡子(系统%29)格式,以动态内容填充您自己的自定义标记(在本例中为图库链接)。

要点

  1. 我会坚持一个基本的,众所周知的模板格式,如胡子,这一点。在laravel中,允许使用刀片模板符号,这听起来像是您希望在本例中注册一个Blade::directivehttps://www.laravel.com/docs/5.3/blade#service-injection
  2. 在尝试创建自己的短标记标记解析/回调范式之前,我会尝试使用现有的库(如果存在这样的库)。刀片具有处理此类回调的功能和方法。

第二是不必要的,但强烈建议,但#1应该被认为接近宗教。

更新:正如其他答案所指出的,Laravel内置的模板刀片,具有此功能,所以坚持它的格式和功能。

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

  • 假设您从模型中提取到控制器的标记内容在要传递给视图的$content['blade_markedup_content' => 'here is my new gallery: @gallery(1)']中。
  • 在模板/视图中添加刀片指令@preprocess(),使用<p>@preprocess($blade_markedup_content)</p>代替原始<p>{{$blade_markedup_content}}</p>
  • @preprocess()指令的相应回调函数中
    • 实例化一个新的$my_compiler = new BladeCompiler();
    • 注册到这个新的刀片编译器指令,以处理您在@gallery(1)中放入的类似的blade_markedup_content
    • @preprocess()返回$my_compiler->compileString($blade_markedup_content)

  • 维奥拉。理论上,这应该会导致从原始模板中的@preprocess($blade_markedup_content)中解析和替换字符串。
票数 1
EN

Stack Overflow用户

发布于 2017-01-19 21:27:40

根据您想要的是哪种“短代码”,这里有许多选项:

  1. 叶片指令
  2. 叶片布局
  3. 叶片子视图
  4. 叶片堆叠
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41751722

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档