Saltar al contenido

Drupal: cómo publicar nodos no publicados mediante programación

Revisamos de forma completamente cada una de las secciones en nuestra web con el objetivo de enseñarte siempre información certera y actual.

Solución:

Utilizando db_query() es un método de Drupal 6, que no se usa en Drupal 7. Para lograr su trabajo, sugiero este código (sin ninguna consulta manual).

// load the node object
$node = node_load($nid);
// set status property to 1
$node->status = 1;
// re-save the node
node_save($node);

Si tiene más ID de nodo y desea publicar todos esos nodos, puede usar el siguiente código.

$nids = array();
// Load all nodes in one go for better performance.
$nodes = node_load_multiple($nids);
foreach ($nodes as $node) 
  // set status property to 1
  $node->status = 1;
  // re-save the node
  node_save($node);

cuando está utilizando node_load(), node_load_multiple() para cargar un (múltiple) noad (s), hay muchos ganchos que los módulos invocarían, como hook_node_load, gancho_nodo_operaciones, gancho_nodo_preparar, gancho_nodo_acceso. Pero al realizar una consulta directamente en el esquema Drupal, esos ganchos se ignorarán y generarán muchos problemas.

Las Consultas son:

db_query("UPDATE node SET `status` = '1' WHERE `nid` =:nid ;"
    ,array(':nid'=>$node->nid));

db_query("UPDATE node_revision SET `status` = '1' WHERE `nid` =:nid AND  `vid` =:vid;"
    ,array(':nid'=>$node->nid,'vid'=> $node->vid));

Simplemente use el código anterior si node_load() o node_load_multiple() no funcionan debido a que se está quedando sin memoria disponible.

Acuérdate de que puedes valorar este tutorial si te fue de ayuda.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)


Tags : / /

Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *