4

Drupal 7 では、ノードがパブリッシュされたときにプロセスを追加したいと考えています。そのノードの「公開」イベントが発生したときにトリガーされるにはどうすればよいですか?

ノード「発行」のフックはありますか?

4

4 に答える 4

3

Ayesh Kが書いているように、コア機能についても認識していません。彼の回避策は機能しますが、新しく作成されたノードがすぐに公開されるケースを見逃しています。

そこで、コードを拡張して関数にラップしました。

/**
 * Checks if a node is being published.
 *
 * @param object $node
 *   The node to check.
 *
 * @return bool
 *   TRUE if node is now published and
 *     1) was not published before or
 *     2) did not exist before;
 *   FALSE in all other cases.
 */
function MYMODULE_node_is_being_published(&$node) {

  if (isset($node->original)) {
    return (
      isset($node->original->status) && 
      $node->original->status == 0 && 
      $node->status == 1
    );
  }
  else {
    return $node->status == 1;
  }
}
于 2015-03-05T13:45:05.750 に答える
2

AyeshKの答えは良いです。また、Drupalを使用して公開イベントをトリガーすること
で別の方法を見つけました。"Rules"

于 2012-10-08T04:46:02.313 に答える
-2

トリガー関数がノード自体を更新するためのものである場合、関数 MYMODULE_node_update($node) を関数 MYMODULE_node_presave($node) に変更します

于 2014-10-13T10:19:27.817 に答える