gro*_*ter 2 api search bootstrapping drupal
我创建了一个自定义导入和导出,目前作为外部脚本(通过bootstrap),我打算以更通用的方式创建一个模块.
我正在为nagios和我们的主机管理和nagios配置btw构建一个前端.也许它可能对其他环境有用(网络管理)
现在我需要知道如何获取x类型的所有节点的列表?
我想避免直接SQL.
我得到的一个建议是制作一个rs并解析它,但是我接受了drupal db十几次来提取各种节点,所以对一件事做一个Web请求感觉很奇怪
所以我正在寻找的新手drupal dev只是指向这个任务的基本搜索模块api的指针
TIA florian
为什么要避免使用SQL?
如果你想获得有关db中的内容的信息,比如x类型的所有节点,获取它的唯一方法是通过SQL查询,除非你已经提取了数据.
像这样的查询
db_query("SELECT title, nid FROM {node} WHERE type = 'x';");
Run Code Online (Sandbox Code Playgroud)
不应该是破坏你的表现的东西.
编辑:
您提供的链接来自Drupal 7,因此您必须小心阅读此内容.原因是在Drupal 7中,不仅可以使用db_query哪个基本上是php函数的包装器mysql_query,pg_query.它有点不同并且使用它,您不必使用db_specific代码.无论如何,Drupal 7的新功能有点像ORM.我没有详细阅读它,但想法是你可以使用对象上的命令构建查询.这可能就是你所追求的.但是,Drupal 7还没有为生产站点做好准备.仍然存在许多关键问题和安全问题.所以这在一段时间内不可能存在.
编辑2:
如果你想获得节点标题和正文,这就是你应该做的:
$type = 'x';
$query = db_query("SELECT r.nid, r.title, r.body FROM {node} AS n
LEFT JOIN {node_revisions} AS r ON r.nid = n.nid
WHERE type = '%s';", array($type));
$nodes = array();
while ($node = db_fetch_object($query)) {
$nodes[$node->nid] = $node;
}
Run Code Online (Sandbox Code Playgroud)
如果要从db中提取数组而不是对象,则可以使用db_fetch_array而不是db_fetch_object`.