我们目前正在定制 ojs 3.3.0 仪表板。我们想将我们的自定义字体添加到仪表板(我们添加了我们自己的主题插件以及客户端所需的字体),但不幸的是,我们还没有找到任何解决方案,如何在没有硬编码的情况下将我们的字体导入 ojs。
有什么方法可以在不进行硬编码的情况下将我们的字体导入到 ojs 中?
或者有什么方法可以将我们主题插件中的字体导入ojs?
有没有办法从已安装的主题插件中解决 ojs 中的字体?
基于PKP-OJS 文档,是的,您可以添加自定义样式或字体并覆盖它们。每个主题都扩展了核心 ThemePlugin 类。这个类有几个方法可以帮助你加载脚本和样式,修改父样式表等等。主题的设置和配置将在init()
方法中进行。此方法仅针对当前活动主题(或当前活动主题的父主题)运行。API 的所有其他方法都应在该init()
方法中运行。
<?PHP
import('lib.pkp.classes.plugins.ThemePlugin');
class TutorialThemePlugin extends ThemePlugin {
/**
* Load the custom styles for our theme
* @return null
*/
public function init() {
$this->addStyle('my-custom-style', 'styles/index.less');
}
}
如果要添加新样式或 css 字体,请使用该addStyle()
方法。该addStyle()
方法接受许多可选参数 hash.Like context
, addLess
, priority
,.... 查看此链接以获取更多信息。
在这个例子中,TutorialThemePlugin
是我们的自定义主题。假设我们要a Roboto font
在客户端(前端)和管理仪表板端(后端)导入。在一切之前,我们需要激活我们的模板。在管理页面上,我们在技术上位于“站点”区域,而不是特定的期刊。所以我们需要确保我们已经为网站激活了我们的自定义主题,而不仅仅是期刊。我们从这条路径激活我们的主题Settings > Website > Appearance
。
第一步是将字体上传到我们的自定义主题styles/fonts
目录,然后在 CSS 文件中处理它们。
TutorialThemePlugin:
- js
- libs
- locale
- styles
- fonts
- roboto.css
- Roboto-Thin.ttf
- Roboto-Medium.eot
- ...
- template
- ...
第二步是通过我们的主题调用字体或样式。
TutorialThemePlugin.inc.php:
<?PHP
import('lib.pkp.classes.plugins.ThemePlugin');
class TutorialThemePlugin extends ThemePlugin {
/**
* Load the custom styles for our theme
* @return null
*/
public function init() {
$this->addStyle('htmlFont', 'styles/fonts/roboto.css', array('contexts' => 'frontend')); // Client Side
$this->addStyle('htmlFont', 'styles/fonts/roboto.css', array('contexts' => 'backend')); // OJS Admin Dashboard
}
}
第三步是在我们的主题中继承 OJS。当我们创建自定义主题时,我们可以选择让它扩展父主题。子主题将自动加载在其父主题中找到的模板和样式。这允许您在预先存在的主题之上构建主题。子主题允许我们覆盖从父主题中选择的模板,同时在没有模板被覆盖时仍然使用它们。
本HTML/Smarty
指南的部分描述了如何按优先级顺序加载前端模板文件。子主题为检索模板文件添加了一个新的最高优先级位置。
当 OJS 或 OMP 加载模板时,它会按以下顺序进行搜索。
template
目录。lib/pkp/templates/ directory
应用程序内。要覆盖父主题的模板(OJS 默认模板),将该模板文件复制到子主题(TutorialThemePlugin 主题)中的相同位置。
对于模板文件的更改,您可以转到管理 > 清除模板缓存。
https://docs.pkp.sfu.ca/pkp-theming-guide/en/theme-api
https://docs.pkp.sfu.ca/pkp-theming-guide/en/child-themes
https:// forum.pkp.sfu.ca/t/how-can-i-override-backend-templates-ojs-3/33512/27
https://forum.pkp.sfu.ca/t/ojs-3-need-help -with-theme-customization/21210