跳转到目录

孩子的主题

创建自定义主题时,您可以选择将其扩展父主题。子主题将自动加载其父主题中找到的模板和样式。这允许您在预先存在的主题之上构建主题。

以下是您可以使用儿童主题的几件事:

  1. 覆盖父主题的变量较少,可以使用几行代码调整颜色和排版。
  2. 调整单个文章模板后面的HTML代码,而无需创建完整的主题。
  3. 修改主导航菜单,同时保留所有其他模板到位。

在以前的OJS和OMP的迭代中,如果您想定制设计,您需要在完全独立的主题或编辑现有主题。使用子主题的最大好处是您可以隔离自定义代码。这意味着您可以更安全更新父主题和核心应用程序而不覆盖自定义代码。

如果您为流行内容管理系统构建了主题WordPress.,你会熟悉这个概念。但我们处理事情的方式略有不同。本节将向您展示如何修改父主题的样式、添加您自己的样式、覆盖模板文件等等。

子主题和父主题之间的区别是什么?

没有。

儿童和父母主题只是常规主题插件,并不需要任何特别的东西。所有主题,孩子或父母,使用相同主题API.。您可以了解有关主题结构的更多信息,并设置自己的自定义主题什么是主题?

有一个主题设置后,您可以使用一点额外代码来指定另一个主题作为父主题。您可以认出以下内容主题设置和配置指南。

<?PHP.进口'lib.pkp.classes.plugins.themeplugin');TutorialThemeplugin.延伸themeplugin.{/ ** *为我们的主题装载自定义样式* @return null * /公共功能在里面(){这个美元- >addstyle.'stylesheet''款式/索引无意');}/ ** *获取此主题的显示名称* @return字符串* /功能getDisplayName.(){返回“教程主题”;}/ ** *获取此插件的描述* @return字符串* /功能getDescription(){返回“一个OJS或OMP的主题范例,用我们令人惊叹的文档。”;}}

让我们专注于在里面()方法。

/ ** *为我们的主题装载自定义样式* @return null * /公共功能在里面(){这个美元- >addstyle.'stylesheet''款式/索引无意');}

您可以使用该主题为此主题设置父主题setparent()方法。让我们把这个主题作为OJS 3.0+默认主题的子主题。

/ ** *为我们的主题装载自定义样式* @return null * /公共功能在里面(){//使用父主题的唯一插件这个美元- >setparent.'defaultthemeplugin');//更改此样式表SLUG的ID//`儿童样式表`。这确保了它//不会与父样式表发生冲突。这个美元- >addstyle.'child-stylesheet''款式/索引无意');}

现在,当主题被加载时,它会自动调用父主题在里面()方法。这意味着在该主题中注册的任何脚本或样式都将被加载。

添加和修改样式

所以现在你的孩子主题将编译并加载两个样式表。父级样式表,它在父主题中定义并命名样式表,以及Child的样式表,它被命名为儿童样式表

*样式表由更少的文件编译。学习更多关于CSS和少

但是,在许多情况下,您可能希望将样式添加到父样式表,而不是加载自己的单独样式表。您可以通过使用父主题样式自动编译自己的样式modifystyle()方法。

/ ** *为我们的主题装载自定义样式* @return null * /公共功能在里面(){这个美元- >setparent.'defaultthemeplugin');这个美元- >modifystyle.'stylesheet'数组'窝冻'=>数组'款式/索引无意')));}

当您希望在父主题中共享混音或修改变量时,这非常有用。默认主题使用多个变量来定义颜色,排版,间距等。

以下示例显示了扩展默认主题的子主题如何覆盖它在其自定义中的变量样式/索引..文件:

//更改默认颜色从蓝色#007ab2到红色#b21a00 @primary: #b21a00;

覆盖模板

子主题允许您从父主题中覆盖选择模板,同时仍然在没有覆盖模板时使用它们。

html / smarty.本指南的一部分介绍了前端模板文件如何按优先级顺序加载。子主题为检索模板文件添加新的最优先位置位置。

当OJS或OMP加载模板时,它按以下顺序搜索。

  1. 当前主题模板目录。
  2. 如果指定了父主题,则父主题的模板目录。
  3. OJS或OMP模板目录。
  4. lib / pkp /模板/应用程序中的目录。

要覆盖父主题的模板,将该模板文件复制到子主题中的相同位置。

孙子主题

主题的父子关系不限于一个级别。您可以拥有父主题,一个延伸父母的子主题,然后是扩展孩子的孙子主题。

您不需要注册此类的扩展关系。注册父主题时,应用程序也将自动处理父主题的任何父母。

如果您管理大量期刊主题并希望在主题之间共享代码,则不会常常需要这种情况,但它可能很有用。或者如果您正在扩展其中一个社区提供的儿童主题。金宝搏官网登录

例子

如果您愿意学习代码,a简单示例儿童主题可以找到所有基本配置到位。

Baidu