Drupal主题消毒路径

时间:2016-04-26 14:45:07

标签: drupal drupal-theming

我有一个自定义的Drupal Theme Starterkit。在其中有一个JS文件,我需要获取当前主题的路径。例如:

imagesPath: '/sites/default/themes/{{ THEME SANITIZED }}/js/ckeditor_templates/',

因为有人可能会将入门套件放在

/sites/all/themes/

而不是

/sites/default/themes/

我需要Starterkit来解释这个问题。是否有{{}}来获取创建Starterkit的目录的路径?

2 个答案:

答案 0 :(得分:1)

您可以在theme-settings.php或template.php文件中使用drupal_add_jsdrupal_get_path这样的路径进行自定义设置:

$theme_path = drupal_get_path('theme', 'my-theme');
drupal_add_js(array('myCustomSetting' => array('path' => $theme_path)), 'setting');

然后在您的javascript文件中,您可以引用如下设置:

Drupal.settings.myCustomSetting + '/js/ckeditor_templates/'

我建议让drupal为你建造路径,而不是试图把它烘烤。

关于动态构建子主题时可用的变量,我真的不知道。我所利用的只是你提到的{{THEME SANITIZED}}值。

我没有测试过上面的内容,但类似的东西应该可以正常工作。

答案 1 :(得分:1)

我可以确认Drupal没有为路径提供类似{{THEME SANITIZED}}的内容。但是您可以通过config.customConfig变量从CKEditor配置获取ckeditor.config.js文件的路径。因此,我们有足够的信息来创建主题的路径。我只是删除了文件名并将其用作路径。

ekeditor.config.js

CKEDITOR.editorConfig = function(config) {
  pathToTheme = config.customConfig.substring(0, config.customConfig.lastIndexOf("/"));
  config.templates_files = [ pathToTheme + '/js/ckeditor_templates/ckeditor_templates.js' ];
  yada yada yada,
}

ckeditor_templates.js

 CKEDITOR.addTemplates('default', {
   imagesPath: pathToTheme + '/js/ckeditor_templates/',
   templates: [yada yada yada],
 }
});