ferzip.com

Ti serve un programmatore sistemista freelance…contattami!

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;

.

  • Share/Bookmark
Tag: Drupal

Leave a Reply

Get Adobe Flash playerPlugin by wpburn.com wordpress themes