0

目前我有一个模块可以上传文件、提取文件、读取一些文件并将其存储在数据库中。因为我只是一名 PHP 开发人员而不是 Drupal 开发人员,所以我不熟悉 Content Types 、 Views 和其他 Drupal 东西。我只想将数据库中的一些内容显示到多个页面并编辑一些内容(不是所有内容)。

用 PHP 做这件事就像把简报放在信封里一样容易,但在 Drupal 中,就像你把轮椅放在那个信封里一样。

我必须为它定义一个内容类型吗?

如果我不使用内容类型并手动控制权限,是否容易?

假设我必须定义一个内容类型。我的数据库有 5 个表。我应该定义 5 种不同的内容类型吗?

4

2 回答 2

2

如果您也需要一些 Drupal 的东西来处理您的数据,那么您不必以 Drupal 的方式进行操作。我还开发了一个模块。它访问数据库,显示其中的数据,然后授权用户可以更新数据,我的模块将保存它。但这些不会是节点。除非您需要(例如)一些在节点上运行的钩子以在您的内容上运行,否则只需使用您的 PHP 知识为页面创建内容。

您使用 hook_menu 来定义将显示您的页面的路径。例如,在我的代码(detail_pages 模块)中,查询在 example.com/strain/3/4 之类的路径中获取两个参数,我将其定义如下,我在 detail_page($arg1, $ arg2) 函数定义。

function detail_pages_menu() {
  $items = array();
  $items['strain/%/%'] = array(
      'title' => t('Strain Detail Page'),
      //'page callback' => 'strain_form',
      'page callback' => 'detail_page',//'drupal_get_form',
      //'page arguments' => array('strain_detail_form'),
      'page arguments' => array(1,2),
      'access callback' => TRUE,
      'access arguments' => array('access content'),
      'description' => t('Detail Page'),
      'type' => MENU_NORMAL_ITEM,
  );
....

回答您的具体问题

我必须为它定义一个内容类型吗?

不,您可以使用页面渲染数组,甚至可以将直接 html 添加到 PHP 中的页面。

如果我不使用内容类型并手动控制权限,是否容易?

是的。在上面我写的例子中,这一行是权限:'access callback' => TRUE 这允许每个人查看。您可以分配一个函数来代替 TRUE,以返回一个布尔值来表示用户是否有权查看该页面。

假设我必须定义一个内容类型。我的数据库有 5 个表。我应该定义 5 种不同的内容类型吗?

特别是如果您需要一个好的数据库结构,您可能希望避免使用节点和定义内容类型。Drupal 为按节点 ID 逻辑键控的列创建一个表。所以你有很多不必要的桌子......

于 2012-04-10T14:28:17.277 回答
0

有很多方法可以实现您想要的。根据您的描述,我认为您想在某些页面上显示一些信息(不知道您所说的“编辑某些东西”是什么意思)。

  1. 您可以有一个块(=多个页面上的定义区域) 在 Drupal 中,您可以使用规则或 PHP 来控制该块将出现哪些页面(例如内容类型“页面”)。
  2. 具有自定义节点结构的内容类型类似于 page.tpl.php 和 node.tpl.php(可能会在这里混淆扩展,已经有一段时间了)定义主题所包含的某些部分的结构,您可以拥有您的内容类型-节点使用 PHP、HTML 和 CSS 显示您想要的任何信息。(就像该内容类型的所有对象的包装器)
  3. 面板面板用于拆分页面。您的菜单项可以指向单独的面板,例如,页面的上部是静态“页面”(=该内容类型的节点),下部是另一个“页面”,其中包含用于显示您的信息的 PHP 代码。

在所有三个选项中,您都可以显示个性化数据,这意味着您有全局变量来告诉您用户 ID、姓名、角色等,以便从数据库加载特定数据并相应地呈现。

结论:内容类型使一切更容易组织,但如果您只有一个该类型/结构的实例(=节点),您可以将代码放在“页面”中。

随时询问更多细节。

于 2012-04-10T14:16:44.553 回答