EZ Publish/EZ Publish 模板重设系统
EZ Publish | EZ Publish安装与卸载 | EZ Publish的使用 | EZ Publish常见问题 | EZ Publish其他 |
EZ Publish 模板重设[ ]
模板重设系统允许用自定义的模板替换默认模板。理论上,这种机制允许对系统内任何模板(包括通过"include"函数与"design:"前缀引入的模板)进行重设。要以不同方式显示不同节点时,模板重设就变个很有用。
一个视图模板的重设通常由一组重设条件触发。如果条件匹配,系统会用重设模板替换原始模板。不同的视图支持不同的重设条件,某些视图不提供重设条件。"content"模块的"view"视图提供的重设条件最为灵活(在显示节点时使用)。下图演示了重设机制如何被嵌入系统的其余部分。
模板重设必须在站点入口的"override.ini.append.php"中定义。这个文件有重设块构成。一个重设块是一组告知eZ Publish 在某种特殊条件下使用某个重设模板的规则。没个重设块有一个唯一的名称。对于一个重设块,以下信息必须被设置:
• 一个唯一的名称
• 被重设的原始模板
• 重设模板
• 重设模板所在目录名称(通常为"templates")
• 一组触发重设模板的条件/规则
注意:规则/条件是可选的。如果没有指定规则,这个重设会一直有效。
下图演示了一个典型的模板重设场景。
上列定义了一条重设"special_folders"。这条重设在系统用"full"视图模式显示某个节点时会被使用。这条重设只有在节点的类为文件夹类且属于section 34 才会被激活。当重设被激活时,系统会使用重设模板("override/templates/special_folder.tpl",在主界面中)。如果eZ Publish 在主界面中找不到这个模板,它会在附加界面和标准界面中继续搜寻。多重/冲突重设重设的优先级是由它们在配置文件中的位置决定的。如果有多条规则类似/等价的重设,eZ Publish 会使用最上面的一条,因而其余重设会失效。因为这个缘故,由节点ID 或对象ID 出发的重设应被放在最上面,否则他们可能永远都不会被触发,因为具备更一般规则的重设会因为位于靠前的位置而有更高的优先级。
EZ Publish重设示例[ ]
下例演示了如何利用模板重设系统在不同条件下显示不同模板。
假设我们有一个简单的节点树。它由两个文件夹构成:"News"和"Products"。"News"文件夹包含新闻文章,"Products"文件夹包含商品。下图演示了这个节点树。
没有任何重设时,eZ Publish 很可能会用同一个模板显示所有节点。这可能是standard 界面中的默认的"full"视图模式模板。然而,我们希望的是用不同模板显示不同节点。我们可能希望系统以下面的方式工作:
• 访问"My site"节点时,显示一个特殊的"welcome"模板。
• 访问文件夹时显示一个自定义文件夹模板
• 访问新闻文章时,显示一个自定义新闻文章模板
• 访问商品时,显示一个自定义的商品模板
上述需求可以通过创建几条重设来达到。"welcome"页面应该用"My site"节点ID 来触发。其余的模板可以用类标识符来触发。下例演示了"override.ini.append.php“文件的内容:
# Override for welcome page [welcome_page] Source=node/view/full.tpl MatchFile=my_welcome.tpl Subdir=templates Match[node]=2 # Override for folders [my_folder] Source=node/view/full.tpl MatchFile=my_folder.tpl Subdir=templates Match[class_identifier]=folder # Override for articles [news_articles] Source=node/view/full.tpl MatchFile=my_article.tpl Subdir=templates Match[class_identifier]=article # Override for products [products] Source=node/view/full.tpl MatchFile=my_product.tpl Subdir=templates Match[class_identifier]=product
重设模板应该被放置在主界面的"override/templates"目录下。下图演示了可能的目录结构,假设主界面为"example"。
当系统运行时,不同的重设会根据实际的条件被触发。下图演示了哪里/何时不同的重设会被触发。