使用 Craft CMS 搭建blog模型
原文链接:http://www.supperxin.com/Coding/Details/create-blog-using-craft-cms
Craft CMS站点的搭建可以参考这篇:使用Docker镜像服务来搭建 craft cms 站点
Template功能简介
使用Template,可以自定义网站的呈现样式。
Template的保存位置在:craft/templates,可以在此目录下任意建立template,或者文件夹+Template,假如现在有Template:craft/templates/news/index.html,则此Template对应的url为:http://ip/news/。
要注意的是,Craft 的Template使用的是twig,且不允许直接使用php代码,关于twig,可以参考:Twig Primer。
创建field
blog需要的栏位:Title, Body, Tag, Published, PublishDate:

创建Section
创建名为Blog的section,并将如下选项去除: Entries in this section have their own URLs

添加field到section
编辑section的Entry Types,将之前添加的栏位全部添加进来。

添加template
在template目录下,新建blog目录,建立文件:
index.html,用于呈现blog列表,内容如下:
{% set blogs = craft.entries.section('blog') %}
{% extends "_layout" %}
{% block content %}
<main role="main">
<section class="content">
<ul class="download-links">
{% for blog in blogs %}
<li><a href="/blog/{{blog.slug}}">{{blog.title}}</a></li>
{% endfor %}
</ul>
</section>
</main>
{% endblock %}
details.html,用于呈现blog内容,内容如下:
{% set blog = craft.entries.section('blog').slug(craft.request.lastSegment).first %}
{% extends "_layout" %}
{% block content %}
<main role="main">
<section class="content">
<h1>{{blog.title}}</h1>
<p>{{blog.body}}</p>
</section>
</main>
{% endblock %}
为blog配置route
在route中添加:blog/slug --> blog/details的映射关系,这样就可以通过/blog/slug来访问一篇具体的blog。

最终的呈现效果如下:


参考:
使用 Craft CMS 搭建blog模型的更多相关文章
- Hugo快速搭建Blog
以往我们搭建blog要么学习一个编程语言+Web开发框架,要么使用现成的blog系统(如WordPress).其实我们还可以使用Hugo.Hugo是由Go语言实现的静态网站生成器,它不需要数据库,所以 ...
- 用 hugo 和 netlify 搭建blog【转】
用 hugo 和 netlify 搭建blog - kok的笔记本 Releases · gohugoio/hugo · GitHub 测试baidu 测试163
- keras入门(三)搭建CNN模型破解网站验证码
项目介绍 在文章CNN大战验证码中,我们利用TensorFlow搭建了简单的CNN模型来破解某个网站的验证码.验证码如下: 在本文中,我们将会用Keras来搭建一个稍微复杂的CNN模型来破解以上的 ...
- 使用 Django1.11搭建blog项目
使用Django搭建blog项目 简单设置: http://blog.csdn.net/w_e_i_/article/details/70761604 模板渲染: http://blog.csdn.n ...
- 从零搭建Pytorch模型教程(三)搭建Transformer网络
前言 本文介绍了Transformer的基本流程,分块的两种实现方式,Position Emebdding的几种实现方式,Encoder的实现方式,最后分类的两种方式,以及最重要的数据格式的介绍. ...
- 从零搭建Pytorch模型教程(四)编写训练过程--参数解析
前言 训练过程主要是指编写train.py文件,其中包括参数的解析.训练日志的配置.设置随机数种子.classdataset的初始化.网络的初始化.学习率的设置.损失函数的设置.优化方式的设置. ...
- 用GitHub Pages免费空间搭建Blog
前言 其实之前就知道可以用GitHub Pages搭建静态博客,不过之前一直忙着爬手册撸代码==,昨天终于把前端各种手册里的入门教程撸的差不多了(CSS布局撸的我要吐了好嘛),于是把代码什么的放一 ...
- .NET Core/.NET5/.NET6 开源项目汇总4:CMS、Blog项目
系列目录 [已更新最新开发文章,点击查看详细] 开源项目是众多组织与个人分享的组件或项目,作者付出的心血我们是无法体会的,所以首先大家要心存感激.尊重.请严格遵守每个项目的开源协议后再使用.尊 ...
- django 快速搭建blog
如果本文看不懂的,去看的我视频吧!http://www.testpub.cn/ ------------------------------------------- Django 自称是“最适合开发 ...
随机推荐
- 点击tr实现选择checkbox功能,点击checkobx的时候阻止冒泡事件, jquery给checkbox添加checked属性或去掉checked属性不能使checkobx改变状态
给tr添加点击事件,使用find方法查找tr下的所有层级的元素,children只查找下一层级的元素,所以使用find.find的返回值为jquery对象,在这个项目中不知道为什么使用jquery给c ...
- 转载:将画布(canvas)图像保存成本地图片的方法
之前我曾介绍过如何将HTML5画布(canvas)内容转变成图片形式,方法十分简单.但后来我发现只将canvas内容转变成图片输出还不够,如何能将转变后的图片保存到本地呢? 其实,这个方法也是非常简单 ...
- leetcode-6-basic
解题思路: 这道题真实地反映了我今晚有多脑残=.=只需要从根号N开始向前找,第一个能被N整除的数就是width,然后存到结果就 可以了.因为离根号N越近,width越大,与length的差越小. ve ...
- Memcached配置失误引发的Keystone token丢失的问题
故障现象 近期公司的OpenStack上频繁出现虚拟机创建失败的情况,查看日志定位到问题出在neutron-server向keystone认证token失败. 故障原因 Keystone所使用的Mem ...
- matlab图形handle
- loj2000 「SDOI2017」数字表格
there #include <iostream> #include <cstring> #include <cstdio> using namespace std ...
- luogu2158 [SDOI2008]仪仗队 欧拉函数
点 $ (i,j) $ 会看不见当有 $ k|i $ 且 $ k|j$ 时. 然后就成了求欧拉函数了. #include <iostream> #include <cstring&g ...
- 栈的push、pop序列 【微软面试100题 第二十九题】
题目要求: 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序.假设压入栈的所有数字均不相等.例如序列1.2.3.4.5是某栈的压栈序列,序列4.5.3.2.1是该压栈 ...
- 关于dispatch_sync死锁问题
首先,我们来看下下面一个例子: 代码:(串行队列里同步线程嵌套) NSLog(@"haha"); dispatch_queue_t queue = dispatch ...
- python - 接口自动化测试 - ReadExcel - 读取测试数据封装
# -*- coding:utf-8 -*- ''' @project: ApiAutoTest @author: Jimmy @file: read_excel.py @ide: PyCharm C ...