当前位置: 首页>>技术问答>>正文


在我的主题中使用内置的jQuery UI

webfans 技术问答 , , , 去评论

问题描述

我的主题的每个页面都需要使用jquery UI。我知道它包含在Drupal 7中,但我无法真正破译Drupal的way-too-technical文档。看起来这样做的唯一方法是使用template.php文件。但由于我不理解该文件,我试图避免这样做。

还有其他方法,还是我应该尝试template.php文件?

最佳解决办法

即使你需要使用php,将JS添加到页面也不是那么难。

对于普通的JS文件,你可以这样做

drupal_add_js($path_to_js)

然而,Drupal已经将jQuery UI注册到库中,这使得为某些jQuery UI插件添加JS和CSS文件变得更容易。这可以使用

drupal_add_library($module, $library);

所有jQuery UI插件都存在于系统模块中,因此您可以这样做

drupal_add_library('system', 'ui');

要么

drupal_add_library('system', 'ui.accordion');

其中一些插件具有依赖性,因为它们使用其他插件。 Drupal非常巧妙地处理这个问题,并将包含所需的组件。

你可以看到jQuery插件here的完整列表。这被格式化为PHP数组,但通常命名约定是ui.PLUGIN-NAME。

如果你需要在每个页面上添加JS,你只需添加一个预处理页面钩子并在那里添加它们。这在template.php文件中看起来像这样。

function NAME_OF_THEME_preprocess_page(&$variables) {
  drupal_add_library('system', 'ui');
  drupal_add_library('system', 'ui.accordion');
  drupal_add_library('system', 'effects.highlight');
}

次佳解决办法

你试过date_popup模块吗?适用于表单API

第三种解决办法

  1. 将.tpl文件中的hard-coded表单重构为Form API实现。就像@ LSU_JBob所说,没有理由不使用FAPI创建表单。我建议你阅读Form API Quickstart Guide,并将Form API reference页面加入书签。

  2. 构建表单后,您可以向其提交值,处理它等,下载并读取Date contrib模块中的代码。 Date用于提供您要创建的日期弹出窗口类型,但用于D6中的CCK和D7中的Core Fields。虽然您不打算使用字段,但Date模块使用JQuery UI来完成您要执行的操作。这个模块应该给你一个坚实的例子。

第四种办法

感谢googletorp回答此问题。

只是添加,如果事情仍然不是很明确与启用UI插件有关。

请注意,当您提到:drupal_add_library('system', 'ui');这将不会自动启用所有ui插件。

你可以在这里找到drupal 7中可用的jquery ui插件列表:/misc/ui/

要启用特定插件,例如:jquery.ui.slider.min.js,您需要添加以下行:

drupal_add_library('system', 'ui.slider');

希望这很有用。

第五种办法

我最近遇到了这个问题。有人给了我他们的自定义模块来强制JQuery UI加载到每个页面上。您可以简单地重新创建它。首先,安装jquery_update并确保它正常工作。然后,创建&启用此模块:

在path /to /modules中创建一个名为’jquery_force’的文件夹。

在里面,添加两个文件:

jquery_force.info:

name = JQuery UI Force
description = Forces JQuery UI to always load
dependencies[] = jquery_update
package = User Interface
core = 7.x
files[] = jquery_force.module

jquery_force.module:

<?php
/**
 * @file jquery_force.module
 * TODO: Enter file description here.
 */

/**
 * Implements hook_init().
 */
function jquery_force_init() {
    drupal_add_library('system', 'ui');
}

第六种办法

template.php文件中添加预处理挂钩对我不起作用。

我只是简单地将drupal_add_library('system', 'ui');放入template.php文件中。

参考资料

本文由朵颐IT整理自网络, 文章地址: https://duoyit.com/article/2555.html,转载请务必附带本地址声明。