Posted by darkdim on February 8, 2013 at 8:30am
1 follower
Jump to:
| Project: | Real Name |
| Version: | 6.x-1.5 |
| Component: | Code |
| Category: | bug report |
| Priority: | normal |
| Assigned: | Unassigned |
| Status: | active |
Issue Summary
Hi guys!
I have included a module REALNAME and found that the page type / blog /% user turn off the panel.
I found a similar issue in the topic, but they do not directly solve the problem with page_manager type blog.
This code overrides the function call($callbacks[$path]['page callback'] = 'realname_blog_page';), and it will lock page_manager
<?php
/**
* Implements hook_menu_alter().
*/
function realname_menu_alter(&$callbacks) {
$callbacks['user/%user_uid_optional']['title callback'] = 'realname_user_page_title';
// Adjust menu page callbacks to the real name alternatives.
foreach ($callbacks as $path => $callback) {
if (isset($callback['page callback'])) {
switch ($callback['page callback']) {
case 'user_view':
// Skip if the Page manager module is installed, which needs to
// override
if ($path == 'user/%user_uid_optional' && module_exists('page_manager') && !variable_get('page_manager_user_view_disabled', TRUE)) {
continue;
}
case 'user_edit':
case 'tracker_page':
case 'statistics_user_tracker':
case 'content_profile_page_edit':
$callbacks[$path]['page callback'] = 'realname_' . $callback['page callback'];
break;
case 'contact_user_page':
$callbacks[$path]['page callback'] = 'realname_contact_user';
break;
case 'blog_page_user':
$callbacks[$path]['page callback'] = 'realname_blog_page';
break;
}
................
?>//$callbacks[$path]['page callback'] = 'realname_blog_page';
If you disable this override will be called:
<?php
/**
* Entry point for our overridden user view.
*
* This function asks its assigned handlers who, if anyone, would like
* to run with it. If no one does, it passes through to Drupal core's
* user view, which is user_page_view().
*/
function page_manager_blog_user($account) {
// Load my task plugin:
$task = page_manager_get_task('blog_user');
// Load the account into a context.
ctools_include('context');
ctools_include('context-task-handler');
$contexts = ctools_context_handler_get_task_contexts($task, '', array($account));
$output = ctools_context_handler_render($task, '', $contexts, array($account->uid));
if ($output !== FALSE) {
return $output;
}
module_load_include('inc', 'blog', 'blog.pages');
$function = 'blog_page_user';
foreach (module_implements('page_manager_override') as $module) {
$call = $module . '_page_manager_override';
if (($rc = $call('blog_user')) && function_exists($rc)) {
$function = $rc;
break;
}
}
// Otherwise, fall back.
return $function($account);
}
?>In realname implemented hook_page_manager_override but you need to add some changes:
<?php
/**
* Ask Page Manager to use our version of the node page view instead of
* Drupal's when falling back.
*/
function realname_page_manager_override($type) {
dpm($type);
if ($type == 'user_view') {
return 'realname_user_view';
+ } elseif ($type == 'blog_user') {
+ return 'realname_blog_user';
+ }
}
?>and
<?php
+function realname_blog_user($account) {
+ $output = blog_page_user($account);
+ drupal_set_title(t("@name's blog", array('@name' => $account->realname)));
+ return $output;
+}
?>
Comments
#1
@@ -165,13 +165,10 @@ function realname_menu_alter(&$callbacks) {
$callbacks[$path]['page callback'] = 'realname_' . $callback['page callback'];
break;
case 'contact_user_page':
$callbacks[$path]['page callback'] = 'realname_contact_user';
break;
- case 'blog_page_user':
- $callbacks[$path]['page callback'] = 'realname_blog_page';
- break;
}
}
}
// Remove the core user_search, if requested.
@@ -195,10 +192,12 @@ function realname_delegator_override($type) {
* Drupal's when falling back.
*/
function realname_page_manager_override($type) {
if ($type == 'user_view') {
return 'realname_user_view';
+ } elseif ($type == 'blog_user') {
+ return 'realname_blog_page_user';
}
}
/**
* Implements hook_ctools_context_converter_alter().
@@ -251,11 +250,11 @@ function realname_user_edit($account, $category = 'account') {
}
/**
* Intercept the user blog page.
*/
-function realname_blog_page($account) {
+function realname_blog_page_user($account) {
if (module_exists('blogtitle')) {
$output = blogtitle_blog_page_user($account);
} else {
$output = blog_page_user($account);
drupal_set_title(t("@name's blog", array('@name' => $account->realname)));
#2
sorry
Forgot the situation when the page manager is not enabled.
#3