目前我有一个可以上传文件,提取文件,读取一些文件并将其存储在数据库中的模块。由于我只是一名PHP开发人员,而不是Drupal开发人员,因此我对内容类型,视图和其他Drupal的内容并不常见。我只是想从数据库中显示一些东西到多个页面并编辑一些东西(不是所有东西)。
在PHP中进行操作就像在信封中放一个简单一样简单,但在Drupal中,就好像你正在把轮椅放在那个信封里。
我是否必须为其定义内容类型?
如果我不使用内容类型并手动控制权限,这是否容易?
假设我必须定义内容类型。我的数据库有5个表。我应该定义5种不同的内容类型吗?
答案 0 :(得分:2)
如果您需要一些Drupal的东西来处理您的数据,您不必以Drupal方式执行此操作。我也开发了一个模块。它访问数据库,显示数据,然后授权用户可以更新数据,我的模块将保存它。但这些不是节点。除非您需要(例如)在节点上运行的某些钩子在您的内容上运行,否则只需使用您的PHP知识为该页面创建内容。
使用hook_menu定义将显示页面的路径。例如,在我的代码(detail_pages模块)中,查询在路径中获取两个参数,例如example.com/strain/3/4,我将其定义如下,并且我在detail_page中使用了对数据库的php调用($ 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,以返回一个布尔值来表示用户是否有权查看该页面。
假设我必须定义内容类型。我的数据库有5个表。我应该定义5种不同的内容类型吗?
特别是如果您需要一个不错的数据库结构,您可能希望避免使用节点和定义内容类型。 Drupal创建一个表,用于按节点ID逻辑键入的列。所以你有很多不必要的表......
答案 1 :(得分:0)
有很多方法可以达到你想要的效果。 根据你的描述,我认为你想在某些页面上显示一些信息(不要真的知道“编辑某些东西”的意思)。
在所有三个选项中,您可以显示个性化数据,这意味着您拥有全局变量,告诉您用户ID,名称,角色等,以便从数据库加载特定数据并相应地显示它。
结论:内容类型使一切变得更容易组织,但如果您只有一个该类型/结构的实例(=节点),则可以将代码放在“页面”中。
随时询问更多详情。