[support] views (menu-items for views) available on certain conditions

Larry Garfield larry at garfieldtech.com
Tue Mar 13 00:32:06 UTC 2007


On Monday 12 March 2007 2:53 pm, Earl Miles wrote:
> Bèr Kessels wrote:
> > Hello
> >
> > I have a view (table listing certain nodes) wich appears on
> > /node/123/applications its path is /node/$arg/applications
> >
> > if $node 123 is of type Foo, the page /node/123/applications makes sense,
> > for all other types it does not.
> >
> > I would like to know if I can make that view 'active' or accessible, or
> > appear as a tab, for only the node types where $node->type of 132 is
> > 'Foo'. An alternative could be to not show the menu-item if the view is
> > empty.
> >
> > Note, that I am not looking at filters or arguments. Filters and
> > arguments only define what nodes appear in the table on the
> > /node/123/applications, they don't dictate wether the view is available.
> >
> > Its for Drupal 4.7.
>
> You need to uncheck 'page' and create the menu item yourself. I think the
> userreview module does something like this.
>
> In the dev version of Drupal 5 I've expanded the $arg functionality, but I
> didn't backport that work to 4.7.

It actually doesn't matter if you check page or not, as long as you don't 
create a menu item from the view itself.  The code I use for the custom menu 
entry is something like this (needs to be in !$may_cache):

if (arg(0) == 'node' && is_numeric(arg(1))) {
  $node = node_load(arg(1));
  if ('page' == $node->type) {
    $items[] = array(
      'path' => "node/{$node->nid}/foo",
      'title' => t(Foos'),
      'callback' => 'views_view_page',
      'callback arguments' => array('viewname', $node->nid),
      'type' => MENU_LOCAL_TASK,
    );
  }
}

-- 
Larry Garfield			AIM: LOLG42
larry at garfieldtech.com		ICQ: 6817012

"If nature has made any one thing less susceptible than all others of 
exclusive property, it is the action of the thinking power called an idea, 
which an individual may exclusively possess as long as he keeps it to 
himself; but the moment it is divulged, it forces itself into the possession 
of every one, and the receiver cannot dispossess himself of it."  -- Thomas 
Jefferson


More information about the support mailing list