Skip to content

Instantly share code, notes, and snippets.

@opi
Created January 15, 2015 10:29
Show Gist options
  • Save opi/5200c4ff5c298ad3103e to your computer and use it in GitHub Desktop.
Save opi/5200c4ff5c298ad3103e to your computer and use it in GitHub Desktop.
Drupal list all public views urls (page & feed)
<?php
// Views page and feeds list
$views = array();
foreach (views_get_enabled_views() as $view_name => $view) {
// Filter views having no display
if (count($view->display) > 1 && (strpos($view_name, 'admin') === FALSE)) {
$views[$view_name] = array(
'#theme' => 'item_list',
'#title' => $view->human_name,
'#items' => array(
'pages' => array(
'data' => '<h4>' . t("Pages") . '</h4>',
'children' => array()
),
'feeds' => array(
'data' => '<h4>' . t("Feeds") . '</h4>',
'children' => array()
)
)
);
$has_display = FALSE;
foreach ($view->display as $display_name => $display) {
if ($display->display_plugin == 'page') {
$has_display = TRUE;
$views[$view_name]['#items']['pages']['children'][] = l(
(!empty($display->display_options['title'])) ? $display->display_options['title'] : $display->display_title,
$display->display_options['path']
) . ' : /' . $display->display_options['path'];
}
elseif ($display->display_plugin == 'feed') {
$has_display = TRUE;
$views[$view_name]['#items']['feeds']['children'][] = l(
(!empty($display->display_options['title'])) ? $display->display_options['title'] : $display->display_title,
$display->display_options['path']
) . ' : /' . $display->display_options['path'];
}
}
if (!$has_display) {
unset($views[$view_name]);
}
else {
if (empty($views[$view_name]['#items']['pages']['children'])) {
unset($views[$view_name]['#items']['pages']);
}
if (empty($views[$view_name]['#items']['feeds']['children'])) {
unset($views[$view_name]['#items']['feeds']);
}
}
}
}
// $views is now a render array, ready to be return in a block or in a page
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment