📅  最后修改于: 2023-12-03 15:14:48.385000             🧑  作者: Mango
在 Drupal 中,我们可以使用 JavaScript 来加载和显示所有类型的节点。下面是一个使用 JavaScript 和 Drupal API 来实现此功能的示例代码:
(function ($) {
Drupal.behaviors.loadAllNodes = {
attach: function (context, settings) {
// 发起 Ajax 请求获取所有类型的节点
var request = $.ajax({
url: Drupal.settings.basePath + 'load-all-nodes',
type: 'GET',
dataType: 'json'
});
// 处理 Ajax 请求的响应
request.done(function (response) {
if (Array.isArray(response) && response.length > 0) {
// 遍历节点并显示其标题和内容
response.forEach(function (node) {
var nodeTitle = node.title;
var nodeContent = node.body.value;
// 将节点标题和内容添加到 DOM 中
$(context).find('#nodes-container').append('<h2>' + nodeTitle + '</h2>');
$(context).find('#nodes-container').append('<div>' + nodeContent + '</div>');
});
} else {
// 没有找到节点
$(context).find('#nodes-container').append('<p>No nodes found.</p>');
}
});
// 处理 Ajax 请求失败
request.fail(function (jqXHR, textStatus) {
// 显示错误消息
$(context).find('#nodes-container').append('<p>Failed to load nodes: ' + textStatus + '</p>');
});
}
};
})(jQuery);
这段代码是一个匿名的自运行函数,它使用了 Drupal.behaviors 对象来定义一个新的行为(behavior)。通过调用 attach
方法,这个行为将在文档中的所有上下文中被执行。
代码中使用了 jQuery 库来处理 Ajax 请求。它发送一个 GET 请求到 load-all-nodes
的 Drupal 路由,并期望返回一个 JSON 格式的响应。在成功获取响应后,代码会遍历响应中的节点对象,并将它们的标题和内容添加到 DOM 中的 #nodes-container
元素中。如果未找到任何节点,代码将显示一个相应的消息。如果 Ajax 请求失败,代码将显示错误消息。
你需要将这段代码保存为一个 JavaScript 文件,并将其添加到你的 Drupal 主题中。在主题的 .info.yml 文件中,将这个 JavaScript 文件添加到 libraries
部分。可以在需要加载节点的页面模板中使用 HTML 元素来容纳这些节点,并给它一个唯一的 ID(例如 #nodes-container
)。
希望这个代码片段能帮助你加载和显示 Drupal 中的所有节点!