Bolt CMS中的代码段


Code Snippets in Bolt CMS

只是想知道我是否能够用bolt在博客/入门文章中做代码片段?

我目前正在使用谷歌代码Pretify来做我的代码片段,但博尔特通常不让我保存或发布和输入,因为我认为博尔特会阻止用户在博客中发布某些代码。例如,在发布一些PHP代码片段时,当我在Bolt中放入"substr"函数时,将不允许我保存条目。

我可以把它放在很多其他代码中,但有些东西它不会让我发布。

有办法解决这个问题吗?

提前感谢!

p.S:使用GitHub的Gists很好,但我不想使用那种方法。

Bolt允许您在contenttypes.yml配置文件中将字段定义为Markdown。

在Markdown字段中,您可以在两组三重回溯中输入代码,如下所示:

```php
substr('abcdef', 1, 3);
```

或者将其包装在预标签中:

<pre class="brush: php">
substr('abcdef', 1, 3);
</pre>

我重用了Bolt中已经存在的CodeMirror javascript库。

在我自己的_footer.twig中,我添加了以下行:

<link rel="stylesheet" href="{{ paths.app }}view/lib/ckeditor/plugins/codemirror/css/codemirror.min.css">
<script src="{{ paths.app }}view/lib/ckeditor/plugins/codemirror/js/codemirror.min.js"></script>

接下来,我在javascripts/app.js中添加了:

$( function() {
  $("textarea.code").each( function( i,el ) {
    CodeMirror.fromTextArea(el, {
      lineNumbers : true
    });    
  });
});

现在,当我用一段代码创建内容时,我会将视图更改为代码,并将代码放在标签之间:

<textarea class="code"">
10 Print "Hello"
20 goto 10
</textarea> 

您可以从codeMirror站点添加突出显示js文件的语法,并将其添加到包含的脚本链接中。

所有这些都为我提供了语法高亮显示的代码片段,而无需提前进行漂亮的打印。我确实对textarea构造感到遗憾,但可以用jQuery部件来替换它,该部件将块转换为textarea块。为了方便起见,我让代码可以编辑,但CodeMirror是非常可配置的,您可以停止这种情况。

NB:我刚从博尔特开始,所以可能有更好的方法。。也许我应该创建一个Bolt扩展来实现这一点。