Usare Drupal da shell, PHP CLI
Una cosa utile può essere un CMS direttamente da shell, per esempio per inserire articoli o altre informazioni da altri script specializzati, oppure per fare test di carico dei CMS o altro ancora,
Ecco un esempio pratico:
< ?php $stdout = fopen('php://stdout', 'w'); // Site specific variables $username = "user"; $drupal_base_url = parse_url('http://drupal.ferzip.com'); $_SERVER['HTTP_HOST'] = $drupal_base_url['host']; $_SERVER['PHP_SELF'] = $drupal_base_url['path'].'/index.php'; $_SERVER['REQUEST_URI'] = $_SERVER['SCRIPT_NAME'] = $_SERVER['PHP_SELF']; $_SERVER['REMOTE_ADDR'] = NULL; $_SERVER['REQUEST_METHOD'] = NULL; require_once './includes/bootstrap.inc'; drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL); $handle = fopen ("php://stdin","r"); echo "Immetti il NID: "; $nid = fgets($handle); $node = node_load(array("nid" => $nid)); print_r($node); node_save($node); ?>
Questo semplice script non fa altro che avviare il core drupal chiedere il NID di che articolo caricare. Dopo l’iterazione con stdin (lo standard input , in genere la tastiera) , caricarlo fare il render via print_r e salvarlo.
L’unica differenza dalle API standard
require_once './includes/bootstrap.inc'; drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL);
è la dichiarazione delle variabili di SERVER necessarie alle API di drupal per il coretto caricamento
$username = "user";
$drupal_base_url = parse_url('http://drupal.ferzip.com');
$_SERVER['HTTP_HOST'] = $drupal_base_url['host'];
$_SERVER['PHP_SELF'] = $drupal_base_url['path'].'/index.php';
$_SERVER['REQUEST_URI'] = $_SERVER['SCRIPT_NAME'] = $_SERVER['PHP_SELF'];
$_SERVER['REMOTE_ADDR'] = NULL;
$_SERVER['REQUEST_METHOD'] = NULL;
.
Tag: Drupal
Channel on Metacafe