View Field, Insert View, View Reference, Block Reference, Insert Block: which to choose to embed a view in a page I have a view I would like to embed in a page with some other content. The page is for logged-in users only. I could make a page or a block version of the view. I could make a new content type or not for the page- it's not a big deal. So I could use Viewfield, Insert View, View Reference, Block Reference, Insert Block, EVA, and maybe some others to embed the view. I could even code a page template up with views_embed_view(), though I would prefer to use an existing module for ease of future maintenance. Using the view's header and footer fields is inadequate in this case, because I want the surrounding content to be easily editable?

Are there technical reasons to choose one of these modules over the others? For instance, do any of them have issues with caching or permissions? Or, for instance, Is there a reason not to use the view as a block?
Option 1:

Just create a page for the view.

You can set which permission or role should have access to the page.

If you need to display content above or below the view use the header and footer.

Option 2

Use hook_node_view() and views_embed_view() to add the view as a field to the node you want to target:

function hook_node_view($node, $view_mode, $langcode) {

  // Add whatever logic you want here to only target the nodes you want
  if($some_check == TRUE) {
    // Add a new field to the content array
    $node-&gt;content['view_field'] = array(
      // Render you view
      "#markup"=&gt; views_embed_view('view_name', 'view_display'),
    );   
  }
}


You say it's better to not write PHP for maintenance reasons. I would argue the exact opposite - it's much easier to version control code than it is configuration stored in the DB.