# 主题
## **介绍**
主题定义了使用October构建的网站或Web应用程序的外观。October主题完全基于文件,可以使用任何版本控制系统进行管理,例如Git。此页面为您提供October主题的高级描述。您可以在相应的文章中找到有关[页面](https://www.kancloud.cn/followme/octobercms/1073311),[部件](https://www.kancloud.cn/followme/octobercms/1073832),[布局](https://www.kancloud.cn/followme/octobercms/1073833)和[内容文件的](https://www.kancloud.cn/followme/octobercms/1073834)更多详细信息。主题是默认情况下驻留在\*\*/ themes\*\*目录中的目录。主题可以包含以下对象:
对象描述[页面](https://www.kancloud.cn/followme/octobercms/1073311)代表网站页面。[部件](https://www.kancloud.cn/followme/octobercms/1073832)包含可重复使用的HTML标记块。[布局](https://www.kancloud.cn/followme/octobercms/1073833)定义页面脚手架。[内容文件](https://www.kancloud.cn/followme/octobercms/1073833)可以与页面或布局分开编辑的文本,HTML或[Markdown](http://daringfireball.net/projects/markdown/syntax)块。**资源文件**是图像,CSS和JavaScript文件等资源文件。## **目录结构**
您可以在下面看到一个示例主题目录结构。每个October主题用一个单独的目录表示,通常一个激活的主题用于显示网站。此示例显示“网站”主题目录。
```
themes/
website/ <=== Theme starts here
pages/ <=== Pages directory
home.htm
layouts/ <=== Layouts directory
default.htm
partials/ <=== Partials directory
sidebar.htm
content/ <=== Content directory
intro.htm
assets/ <=== Assets directory
css/
my-styles.css
js/
images/
```
> 激活主题使用文件中的`activeTheme`参数`config/cms.php`或系统> CMS>前端主题后端页面上的主题选择器进行设置。使用主题选择器设置的主题会覆盖`config/cms.php`文件中的值。
### **子目录**
October支持页面,部件,布局和内容文件的单级子目录(**assets**目录可以具有任何结构)。这简化了组织大型网站的过程。在下面的示例目录结构中,您可以看到pages和partials目录包含**blog**子目录,而content目录包含**home**子目录。
```
themes/
website/
pages/
home.htm
blog/ <=== Subdirectory
archive.htm
category.htm
partials/
sidebar.htm
blog/ <=== Subdirectory
category-list.htm
content/
footer-contacts.txt
home/ <=== Subdirectory
intro.htm
...
```
要从子目录引用部分文件或内容文件,请在模板名称前指定子目录名称。从子目录渲染部分的示例:
```
{% partial "blog/category-list" %}
```
> \*\*注意:\*\*模板路径始终是绝对路径。如果在某个部件中,您从同一子目录中呈现另一个部件,则仍需要指定子目录名称。
## **模板结构**
页面,部件和布局模板最多可包含3个部分:**配置**,**PHP代码**和**Twig标记**。部分用`==`序列分开。例如:
```
url = "/blog"
layout = "default"
==
function onStart()
{
$this['posts'] = ...;
}
==
<h3>Blog archive</h3>
{% for post in posts %}
<h4>{{ post.title }}</h4>
{{ post.content }}
{% endfor %}
```
### **配置部分**
配置部分设置模板参数。支持的配置参数特定于不同的CMS模板,并在相应的文档文章中进行了描述。配置部分使用简单的[INI格式](http://en.wikipedia.org/wiki/INI_file),其中字符串参数值包含在引号内。页面模板的示例配置部分:
```
url = "/blog"
layout = "default"
[component]
parameter = "value"
```
### **PHP代码部分**
每次渲染模板之前,PHP部分中的代码都会执行。对于所有CMS模板,PHP部分是可选的,其内容取决于定义它的模板类型。PHP代码部分可以包含可选的打开和关闭PHP标记,以在文本编辑器中启用语法突出显示。应始终在节分隔符的另一行上指定打开和关闭标记`==`。
```
url = "/blog"
layout = "default"
==
<?
function onStart()
{
$this['posts'] = ...;
}
?>
==
<h3>Blog archive</h3>
{% for post in posts %}
<h4>{{ post.title }}</h4>
{{ post.content }}
{% endfor %}
```
在PHP部分中,您只能定义函数并使用PHP`use`关键字引用名称空间。PHP部分中不允许其他PHP代码。这是因为在解析页面时PHP部分将转换为PHP类。使用命名空间引用的示例:
```
url = "/blog"
layout = "default"
==
<?
use Acme\Blog\Classes\Post;
function onStart()
{
$this['posts'] = Post::get();
}
?>
==
```
作为设置变量的一般方法,您应该使用数组访问方法`$this`,尽管为了简单起见,您可以将**对象访问用作只读**,例如:
```
<pre class="calibre11">```
// Write via array
$this['foo'] = 'bar';
// Read via array
echo $this['foo'];
// Read-only via object
echo $this->foo;
```
```
### **Twig标记部分**
Twig部分定义了模板要呈现的标记。在Twig部分,您可以使用[October提供的](https://www.kancloud.cn/followme/octobercms/1073310#666)函数,标记和过滤器,所有本[机Twig功能](http://twig.sensiolabs.org/documentation)或[插件提供的](https://www.kancloud.cn/followme/octobercms/1074009#Twig_9)功能。Twig部分的内容取决于模板类型(页面,布局或部分)。您可以在文档中找到有关特定Twig对象的更多信息。可以[在标记指南中](https://www.kancloud.cn/followme/octobercms/1073310#666)找到更多信息。
## **主题日志**
OctoberCMS附带了一个非常有用的功能,默认情况下禁用,称为主题记录。
由于布局和页面将大部分数据存储在平面文件中,因此您或您的客户可能会意外丢失内容。例如,切换页面的布局将修改页面的支架,因此导致数据丢失。
要启用主题日志记录,只需转到**设置 - >日志设置**并启用**日志主题更改**。现在记录所有更改。
可以在\*\*“设置” - >“主题日志”中**查看主题更改**日志\*\*。每次更改都会概述已添加/删除的内容,以及之前和之后已更改文件的副本。如有必要,您可以使用此信息来确定还原更改的相应操作。
- 基本说明
- 基本操作
- October cms 安装
- 后台控制器路径
- 图标
- 获取安装网上的插件/主题
- 插件构造器使用
- 定时任务
- October后台控制器
- vscode编辑器
- ajax操作
- 使用
- ajax更新组件
- ajax属性API
- JavaScript API
- ajax综合使用
- 主题
- 多语言主题
- 安装市场主题
- 主题程序处理
- 主题
- 页面
- 部件
- 布局
- 内容
- 组件
- 媒体
- 主题表单操作
- 表单使用
- 表单后端程序处理
- 插件
- 自定义插件
- 插件说明
- 插件导航条
- 插件数据库设置
- 插件的设置管理
- 插件的配置文件config
- 组件
- app服务
- app容器
- 扩展行为
- 缓存
- Collection类
- Lazy Collections
- Collection方法
- 助手函数
- 数组助手函数
- 路径助手函数
- 玄乐助手函数
- 其他助手函数
- 错误与记录
- 事件处理
- HTML页面
- 文件与目录操作
- 散列和加密
- 邮件
- 邮件内容
- 邮件发送
- 分页
- 模板解析器
- 动态解析器语法
- 队列消息
- 请求与输入
- 响应
- 视图
- 路由器
- 配置
- 验证操作
- 处理错误消息
- 错误消息与视图
- 可用的验证规则
- 有条件的验证规则
- 验证数组
- 错误消息
- 自定义验证规则
- 模型操作
- 定义模型与其属性
- 检索模型
- 插入与更新
- 删除模型
- 查询范围
- 事件操作
- 关联操作
- 定义关系
- 关系类型
- 多肽关系
- 关系查询
- 渴望加载
- 插入模型
- 数据库操作
- 基本用法
- 数据表结构
- 查询连贯操作
- 结果检索
- select子句
- 插入更新
- where子句
- 排序,分组,限制和偏移
- 文件附件
- Collection操作
- 属性操作
- 系列化json
- 数据库属性
- 数据库行为
- 控制器
- 后台控制器定义
- 后台页面
- 后台组件
- 后台表单
- 表单组件
- 表单视图
- 表单行为
- 后台列表
- 列表行为
- 列表过滤器
- 可用列类型
- 关系行为
- 关系行为类型
- 扩展关系行为
- 列表排序操作
- 导入导出操作
- 用于与权限
- corlate模板修改
- 修改顶部导航
- laravel问题
- 控制器不存在
- 控制器
- 路由组
- laravel笔记
- laravel 安装
- 伪静态配置
- 依赖注入 & 控制器
- 中间件
- 路由文件
- 视图