There is no module which entirely support to give the bread crumbs on the views pages. So I created one module and tried to contribute to the community which contributed a lot to my carrier. I end up to merge my code with the other contributed modules which provides the breadcrumbs.
Here is my sandbox project page:- https://drupal.org/sandbox/rakeshjames/2049937
1) views_breadcrumb.info
name = Views breadcrumb
description = Setting bread crumbs for all the view's pages.
dependencies[] = views
core = "7.x"
configure = admin/structure/block/manage/views_breadcrumb/views_breadcrumb_block/configure
2) views_breadcrumb.module
<?php
/**
* @file
* This module will provide a block that will helps to set the bread crumb
* for views pages.
*/
/**
* Implements hook_block_info().
*/
function views_breadcrumb_block_info() {
$blocks['views_breadcrumb_block'] = array(
'info' => t('Views breadcrumb block'),
'region' => 'sidebar_first',
'cache' => DRUPAL_CACHE_PER_PAGE,
'pages' =>BLOCK_VISIBILITY_LISTED,
);
return $blocks;
}
/**
*Implements hook_block_view().
*/
function views_breadcrumb_block_view($delta = '') {
$block = array();
switch ($delta) {
case 'views_breadcrumb_block':
global $user;
global $base_url;
$title_node_value = '';
$count = 0;
$block['subject'] = NULL;
$path = current_path();
$path_explodeArray = explode ("/", $path);
$array_count = count($path_explodeArray);
$last_value = intval($path_explodeArray[$array_count - 1]);
if (is_numeric($last_value)) {
$node = node_load($last_value);
if(empty($node)) {
$title_node_value = '';
}
else {
$title_node_value = $node->title;
}
for ($i = 0; $i < $array_count - 1; $i++) {
$arryTo_implode[$i] = $path_explodeArray[$i];
}
$path = implode("/", $arryTo_implode);
}
$access = db_query("SELECT access_callback FROM {menu_router} WHERE path LIKE '%$path%' AND page_callback LIKE '%views_page%'")->fetchField();
if (empty($access)) {
$block['content'] = drupal_set_message("Views breadcrumb block module only for views pages, please ".l('configure','admin/structure/block/manage/views_breadcrumb/views_breadcrumb_block/configure')." correctly.");
}
else {
$plid = db_query("SELECT plid FROM {menu_links} WHERE link_path LIKE '%$path%'")->fetchField();
for ($i = 0; $plid > -1; $i ++) {
if ($plid == 0){
$plid = -1;
}
else {
$result = db_query("SELECT plid, link_path, link_title FROM {menu_links} WHERE mlid = $plid");
foreach ($result as $value) {
$plid = $value->plid;
$data[$i]['link_path'] = $value->link_path;
$data[$i]['link_title'] = $value->link_title;
$data[$i]['plid'] = $value->plid;
$count++;
}
}
}
$breadcrumb[] = l('Home', $base_url);
for ($j = $count - 1; $j > -1; $j --) {
$breadcrumb[] .= l($data[$j]['link_title'], $data[$j]['link_path']);
$count_mlid_plid = $data[$j]['plid'];
}
if (empty($title_node_value)) {
$breadcrumb[] .= l(drupal_get_title(), $base_url.$_SERVER['REQUEST_URI']);
}
else {
$previous_link_path = db_query("SELECT router_path FROM {menu_links} WHERE link_path LIKE '%$path%'")->fetchField();
$previous_link_title = db_query("SELECT link_title FROM {menu_links} WHERE link_path LIKE '%$path%'")->fetchField();
$breadcrumb[] .= l($previous_link_title, $previous_link_path);
$breadcrumb[] .= t($title_node_value);
}
$output = drupal_set_breadcrumb($breadcrumb);
$block['content'] = $output;
}
break;
}
return $block;
}
3) README.txt
INSTALL
==========
1. Extract module into /sites/all/modules folder.
2. Enable "Views breadcrumb" and
"Views breadcrumb configuration" click the configuration button on /admin/modules page.
USAGE
==========
Go to admin/structure/block/manage/views_breadcrumb/views_breadcrumb_block/configure
and only do the steps follows,
1. Go to 'Show block on specific pages' option and select "Only the listed pages"
2. copy and paste the path of only views pages
3. Go to 'REGION SETTINGS' and put it into any of the regions.
4. Save block.
CREDITS
=========
Module was developed by Rakesh James (https://drupal.org/user/1177822,
http://3icube.com/)
Module development was not sponsored by anyone. It was created for the love of Drupal.
Here is my sandbox project page:- https://drupal.org/sandbox/rakeshjames/2049937
1) views_breadcrumb.info
name = Views breadcrumb
description = Setting bread crumbs for all the view's pages.
dependencies[] = views
core = "7.x"
configure = admin/structure/block/manage/views_breadcrumb/views_breadcrumb_block/configure
2) views_breadcrumb.module
<?php
/**
* @file
* This module will provide a block that will helps to set the bread crumb
* for views pages.
*/
/**
* Implements hook_block_info().
*/
function views_breadcrumb_block_info() {
$blocks['views_breadcrumb_block'] = array(
'info' => t('Views breadcrumb block'),
'region' => 'sidebar_first',
'cache' => DRUPAL_CACHE_PER_PAGE,
'pages' =>BLOCK_VISIBILITY_LISTED,
);
return $blocks;
}
/**
*Implements hook_block_view().
*/
function views_breadcrumb_block_view($delta = '') {
$block = array();
switch ($delta) {
case 'views_breadcrumb_block':
global $user;
global $base_url;
$title_node_value = '';
$count = 0;
$block['subject'] = NULL;
$path = current_path();
$path_explodeArray = explode ("/", $path);
$array_count = count($path_explodeArray);
$last_value = intval($path_explodeArray[$array_count - 1]);
if (is_numeric($last_value)) {
$node = node_load($last_value);
if(empty($node)) {
$title_node_value = '';
}
else {
$title_node_value = $node->title;
}
for ($i = 0; $i < $array_count - 1; $i++) {
$arryTo_implode[$i] = $path_explodeArray[$i];
}
$path = implode("/", $arryTo_implode);
}
$access = db_query("SELECT access_callback FROM {menu_router} WHERE path LIKE '%$path%' AND page_callback LIKE '%views_page%'")->fetchField();
if (empty($access)) {
$block['content'] = drupal_set_message("Views breadcrumb block module only for views pages, please ".l('configure','admin/structure/block/manage/views_breadcrumb/views_breadcrumb_block/configure')." correctly.");
}
else {
$plid = db_query("SELECT plid FROM {menu_links} WHERE link_path LIKE '%$path%'")->fetchField();
for ($i = 0; $plid > -1; $i ++) {
if ($plid == 0){
$plid = -1;
}
else {
$result = db_query("SELECT plid, link_path, link_title FROM {menu_links} WHERE mlid = $plid");
foreach ($result as $value) {
$plid = $value->plid;
$data[$i]['link_path'] = $value->link_path;
$data[$i]['link_title'] = $value->link_title;
$data[$i]['plid'] = $value->plid;
$count++;
}
}
}
$breadcrumb[] = l('Home', $base_url);
for ($j = $count - 1; $j > -1; $j --) {
$breadcrumb[] .= l($data[$j]['link_title'], $data[$j]['link_path']);
$count_mlid_plid = $data[$j]['plid'];
}
if (empty($title_node_value)) {
$breadcrumb[] .= l(drupal_get_title(), $base_url.$_SERVER['REQUEST_URI']);
}
else {
$previous_link_path = db_query("SELECT router_path FROM {menu_links} WHERE link_path LIKE '%$path%'")->fetchField();
$previous_link_title = db_query("SELECT link_title FROM {menu_links} WHERE link_path LIKE '%$path%'")->fetchField();
$breadcrumb[] .= l($previous_link_title, $previous_link_path);
$breadcrumb[] .= t($title_node_value);
}
$output = drupal_set_breadcrumb($breadcrumb);
$block['content'] = $output;
}
break;
}
return $block;
}
3) README.txt
INSTALL
==========
1. Extract module into /sites/all/modules folder.
2. Enable "Views breadcrumb" and
"Views breadcrumb configuration" click the configuration button on /admin/modules page.
USAGE
==========
Go to admin/structure/block/manage/views_breadcrumb/views_breadcrumb_block/configure
and only do the steps follows,
1. Go to 'Show block on specific pages' option and select "Only the listed pages"
2. copy and paste the path of only views pages
3. Go to 'REGION SETTINGS' and put it into any of the regions.
4. Save block.
CREDITS
=========
Module was developed by Rakesh James (https://drupal.org/user/1177822,
http://3icube.com/)
Module development was not sponsored by anyone. It was created for the love of Drupal.
Comments
Post a Comment