目前,我有一个模块,它可以上传文件、解压缩文件、读取一些文件并存储在数据库中。因为我只是一个PHP开发人员,而不是一个Drupal开发人员,所以我不常见于内容类型、视图和其他Drupal内容。我只想从数据库中显示一些东西到多个页面,并编辑一些东西(不是所有东西)。
在PHP中这样做就像在信封里放一个简短的东西一样简单,但在Drupal中,这就像你把轮椅放在信封里一样。
我必须为它定义一个内容类型吗?
如果我不使用内容类型并拥有手动控制的权限,那么容易吗?
假设我必须定义一个内容类型。我的数据库有5个表。我应该定义5种不同的内容类型吗?
发布于 2012-04-10 14:28:17
如果您也需要一些Drupal工具来处理数据,您就不必使用Drupal的方式了。我还开发了一个模块。它访问一个数据库,显示来自它的数据,然后授权用户可以更新数据,我的模块会保存它。但这些都不是节点。除非您需要(例如)在节点上运行的钩子来运行您的内容,否则只需使用PHP知识为页面创建内容即可。
您可以使用hook_menu来定义显示页面的路径。例如,在我的代码(detail_pages模块)中,查询在路径中获得两个参数,如example.com/应变/3/4,我将其定义如下,并在detail_page($arg1,$arg2)函数定义中使用了php对数据库的调用。
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,
);
....回答你的具体问题
,我必须为它定义一个内容类型吗?
不是的。您可以使用页面呈现数组,甚至可以向PHP中的页面添加直接的html。
如果我不使用内容类型并手动控制权限,
会很容易吗?
是。在我写的上面的示例中,这一行是用于权限:“访问回调”=> TRUE --这允许每个人查看。您可以指定一个函数来代替TRUE,返回一个布尔值来表示它授权查看该页面的用户。
假设我必须定义一个内容类型。我的数据库有5个表。我应该定义5种不同的内容类型吗?
特别是当您需要一个良好的数据库结构时,您可能希望避免使用节点和定义内容类型。Drupal为按节点ID逻辑键控的列创建一个表,因此您有许多不必要的表…
发布于 2012-04-10 14:16:44
有很多方法可以实现你想要的。从你的描述中,我感觉到你想在一些页面上显示一些信息(不太清楚你用“编辑一些东西”意味着什么)。
在Drupal中可以有一个块(=多个页面上的定义区域),您可以使用规则或PHP来控制哪些页面(例如,在内容类型“”上),该块将使用类似于page.tpl.php和node.tpl.php的自定义节点结构(可能会混淆扩展,在这里已经有一段时间了)来定义主题所包含的某些部分的结构,您可以让内容类型-节点显示您想要的任何信息,使用PHP、HTML和CSS。(就像所有该内容类型的对象的包装器一样),
在这三个选项中,您都可以显示个性化数据,这意味着您有全局变量,这些变量告诉您用户id、名称、角色等,以便从DB加载特定的数据并相应地呈现出来。
结论:内容类型使一切变得更容易组织,但是如果您只有一个实例(=节点)的类型/结构,您可以将代码放在一个"Page“中。
可以自由地要求更多的细节。
https://stackoverflow.com/questions/10087568
复制相似问题