drupal anywhere:使用API,提高性能

论坛: 

本文适用于drupal6\drupal 7\drupal 8.

感性认识一下drupal,这里会出现一些编程,是drupal anywhere 的核心,如果用drupal不想自己编程的话,那可以不要考虑再使用drupal了

1.手动发表一篇文章,。发表完后记下它的url. 例如,如果url是http://www.yourdomain/node/1  , 那我们需要的只是这个最后的数字,我们叫他node id .   以 nodeid=1为例吧

2.在drupal的安装根目录下,复制index.php改为为node.php(什么都可以,只要是php结尾),只需要下面几行,其它行都删除

drupal6 比较简单:

<?php

require_once ‘./includes/bootstrap.inc’;
drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL);

print_r(node_load(1));

?>

drupal 7是这样的

//下面的D7代码我是放在一个/demo/test.php的文件中的,所以要第一行$dir=dirname(__DIR__)得到根目录绝对地址

$dir=dirname(__DIR__);chdir($dir);
define(‘DRUPAL_ROOT’, $dir);
require_once DRUPAL_ROOT . ‘/includes/bootstrap.inc’;
drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL);

drupal 8 使用是一样的,不过头部多些代码:

require_once __DIR__ . ‘/core/includes/bootstrap.inc’;

_drupal_bootstrap_configuration();
_drupal_bootstrap_kernel();
_drupal_bootstrap_page_cache();
_drupal_bootstrap_database();
//_drupal_bootstrap_variables();
//require_once DRUPAL_ROOT . ‘/’ . settings()->get(‘session_inc’, ‘core/includes/session.inc’);
//drupal_session_initialize();
require_once DRUPAL_ROOT . ‘/core/includes/common.inc’;
_drupal_bootstrap_code();
//_drupal_bootstrap_full();
$node=node_load(1);
print_r($node);
$node=NULL;

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~`

//下面是另一个例子 ,修改文章内容

require_once __DIR__ . ‘/core/includes/bootstrap.inc’;

_drupal_bootstrap_configuration();
_drupal_bootstrap_kernel();
_drupal_bootstrap_page_cache();
_drupal_bootstrap_database();
_drupal_bootstrap_variables();
//require_once DRUPAL_ROOT . ‘/’ . settings()->get(‘session_inc’, ‘core/includes/session.inc’);
//drupal_session_initialize();
require_once DRUPAL_ROOT . ‘/core/includes/common.inc’;
_drupal_bootstrap_code();
//_drupal_bootstrap_full();
$node=node_load(1);
$node->title=$node->title.” 2″;
node_save($node);
print_r($node);
$node=NULL;

 

这一步成功的话,drupal anywhere 就成功了一小步了,如果够熟悉php的话,你现在已经能自由的调用drupal的所有文章信息了。

再进一步,修改一下,增加一句php的输出语句“print”,只输出任意想要输出的行

<?php

require_once ‘./includes/bootstrap.inc’;
drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL);

$node=node_load(1);

print $node->nid;

?>

如此简单的一行就搞定了,何必去看烦人的说明文档?自由的输出文章了,何必再学themes?

drupal的界面很丑,而官方提供的模板更丑,但现在你已经能自由的调出文章了,随便在网上找个漂亮的静态模板,就可以利用drupal的后台发文章,而自由设计文章在任何页面的任何地方显示了。

如果再能自由输入文章了,那drupal不就搞定一小半了吗?对的。

到这里,希望你千万别急着去了解每一行代码的意思,照做然后有个印象就行了,drupal anywhere 主要目的并不是去学习drupal,而是利用drupal而已,将drupal 当工具,正如你有必要去了解一个板手是怎么制作出来的吗,你知道什么时候该用板手就行了。

node_load就是一个常用的API,你可以通过http://api.drupal.org/ 了解更多的drupal api

将node_load换成这个页面的其它api试试吧,这样就又进一大步了。

本文转载于医学博士黎浩江的网站,收录保存使用,感谢浩江。