web-dev-qa-db-ja.com

ノードの「プレビュー」の改善

編集中のノードのプレビューを上書きする の方法は知っていますが、何らかの理由で「トリミングされた」部分にはノードのタイトルが表示され、「完全な」バージョンでは本体のみが表示されます。ノードのタイトルを「フル」バージョンでも表示できるようにしたいのですが。

オーバーライドしているテーマメソッドはtheme_node_preview($variables)です。

「トリミングされた」部分は、コンテンツタイプには関係ないため、実際には完全に削除しています。メソッドは次のようになります。

function theme_node_preview($variables) {
  $node = $variables['node'];

  $output = '<div class="preview">';

  $preview_trimmed_version = FALSE;

  $elements = node_view($node, 'full');
  $full = drupal_render($elements);

  $output .= $full;
  $output .= "</div>\n";

  return $output;
}
4
Matthew

ページプレビュー を試すこともできます。これは、ノードのシミュレートされた全ページプレビューを示します。

このモジュールは、ノード編集フォームのプレビュー領域をIFRAMEとして再実装し、ページのコンテキストへの反応として表示されるブロックなどの要素を含め、匿名ユーザーに表示されるように、編集されたコンテンツの全ページビューをレンダリングして表示します。

2
Les Lim

これはノードをプレビューする私のバージョンであり、役に立つかもしれません(ctoolsバージョン):

    function foo_preview_node($form, $form_state) {
      $node = clone ctools_object_cache_get('foo', 'node'); // get the latest node object from the cache
      $node->in_preview = TRUE;
      _field_invoke_multiple('load', 'node', array(NULL => $node)); // additional stuff from other modules
      field_attach_prepare_view('node', array(NULL => &$node), 'full'); // lets field types and formatters load additional data needed for display
      $build = @node_view($node, 'full');
      $form['preview'] = array(
          '#type' => 'item',
          // '#title' => 'optional title',
          '#markup' => drupal_render($build),
      );
      return $form;
    }

参照: http://drupal.org/node/1622952

1
kenorb