drupal - 如何使用 drupal 以编程方式创建页面?
问题描述
我目前有一个 Drupal 网站。我需要制作 1000 个页面,格式为 domain.com/names/name1.html domain.com/names/name2.html 等。每个页面略有不同,但格式相同。解决这个问题的最佳方法是什么?我无法找到有关此主题的任何教程。
解决方案
我们先澄清一下。
正如您问题下的评论所建议的那样,您可以1. 以编程方式创建节点。假设您有一个内容类型(节点类型)“页面”,然后通过在自定义模块中调用hook_install
(在安装模块时执行任务)或hook_update_N
(在运行更新例程时执行任务),您可以创建一千个“页面”类型的节点(在 for 循环中或更好地作为批处理以防止超时),设置它们的路径别名以及您需要设置的任何其他内容,完成。那里已经有很多教程了。
当然,您也可以2. 通过从自定义模块中调用并添加接受通配符 ( ) 的菜单项(路由)以编程方式创建页面。然后,您可以定义一个回调函数 ( ) 来构建将在访问匹配 URL 时调用的页面内容,您还可以将通配符作为参数 ( ) 传递给该回调函数。例如,回调函数可以简单地返回一个渲染数组。hook_menu
$items['names/%']
'page callback'
'page arguments'
添加带有回调函数的菜单项以通过hook_menu
通常的方式呈现一些自定义内容意味着您实际上只能动态控制内部页面内容(主页内容区域或在当前主题中调用它)。页眉、主菜单、页脚等保持不变。根据您的需要,您还需要以某种方式构建指向您的自定义页面的自定义链接,并将它们作为自定义块或您计划对它们执行的任何操作提供。
可以在示例模块的文档和页面示例子模块的文档中找到对第二种方法的一个很好的概述。
hook_menu
示例:page_example_menu- 示例页面回调函数:page_example_description
- 所有示例页面功能
推荐阅读
- azure - 如何将 ADLS gen2 文件夹/文件名动态传递到 ADF 或 Databricks 中的 Databricks Notebook
- java - 在不改变 server.xml 或 tomcat/web.xml 的情况下添加 tomcat 监听器 LifecycleListener
- c# - C# 事件调用和同步
- python-3.x - Python - 使用 most_common 的预期列表与给定的数量较少的列表不同
- r - 如何在 R 上创建我的逻辑回归图的可发布表
- javascript - 用于分析 chrome 扩展中的文本的 Javascript
- azure - 在 Azure DevOps 管道中运行使用 Azure API 和其他基础结构的单元测试
- python - 连接到 PostgreSQL 数据库时 Python 打印加载“动画”
- python - Django 模型对象有任何长度函数吗?
- javascript - 如何将一个 kist 拆分为多个数组并在 thymleaf 中单独求和?