Revisioning モジュールを使用してコンテンツのリビジョンを処理し、適切なコンテンツを生成するためにユーザーが表示しているノードのvidを必要とするカスタムブロックを作成しています。これを取得するためにmenu_get_object()を使用しようとしていましたが、リビジョンのないノードでは正常に機能します。
[最新の表示]タブで確認しているドラフトの保留中のリビジョンがある場合、menu_get_object()から取得するnode-> vidは、「最新」バージョンではなく「最新」バージョンのvidです。実際にユーザーに表示されているバージョンのvidを取得するための最良の方法は何ですか?
私は、Revisioningモジュールを調べて、チェックがどのように行われているかを確認し、モジュールのヘルパー関数で使用できるように調整しました。最初にmenu_get_object()
を使用してノードをロードしてから、次のコードを呼び出します。
function _get_correct_revision($node) {
if (module_exists('revisioning')) {
if (_revisioning_load_op($node, 'view') == REVISIONING_LOAD_LATEST) {
$vid_to_load = revisioning_get_latest_revision_id($node->nid);
$node = node_load($node->nid, $vid_to_load);
}
}
return $node->vid;
}
リビジョンのプロジェクトページには、node_loadがリビジョンに関連するいくつかの追加の属性を提供することが記載されています。
$node->is_pending;