2

我对drupal很新。我的问题是该块是一致的并且不会改变。它似乎基于登录的用户而不是正在访问的页面(即,在多用户博客中,每个块都应该反映正在显示的博主的页面,而不是登录的用户。我想根据正在访问的页面显示的信息。谢谢!

4

3 回答 3

1

有两个流行的模块是用来做这种事情的。您想要的是让您的块知道他们的上下文,fx 哪个用户发布了博客文章等:

这些模块都非常复杂,如果你是 Drupal 的新手,你可能很难得到你想要的。

如果您对块进行了自定义编码,并且它们仅放置在节点上(博客文章),您可以很容易地加载节点并获取有关谁编写它的信息。您可以使用arg.

如果您使用视图创建了块,则需要使用关系从节点中提取用户信息,而不是从登录用户中提取数据。

于 2010-08-23T18:19:31.090 回答
0

最好使用视图模块来完成

供您参考,我已经包含了我创建的快速视图的转储,它只是从正在查看的页面中获取 uid,无论它是节点还是用户配置文件并获取任何内容(我已将其限制为 blog_posts,您可能需要调整它以适合您的类型)由正在查看的用户创建。

它创建一个自动块,该块应该是可用的块管理列表。

希望这是一个首发。为了使用它,下载并启用视图模块并导入以下代码,它将创建视图

$view = 新视图;
$view->name = 'recent_blogs';
$视图->描述='';
$视图->标签='';
$view->view_php = '';
$view->base_table = '节点';
$view->is_cacheable = FALSE;
$view->api_version = 2;
$view->disabled = FALSE; /* 将其编辑为 true 以使默认视图最初禁用 */
$handler = $view->new_display('default', 'Defaults', 'default');
$handler->override_option('fields', array(
  '标题' => 数组(
    '标签' => '标题',
    '改变' => 数组(
      'alter_text' => 0,
      '文本' => '',
      'make_link' => 0,
      '路径' => '',
      'link_class' => '',
      'alt' => '',
      '前缀' => '',
      '后缀' => '',
      '目标' => '',
      '帮助' => '',
      '修剪' => 0,
      '最大长度' => '',
      'word_boundary' => 1,
      '省略号' => 1,
      'html' => 0,
      'strip_tags' => 0,
    ),
    '空' => '',
    'hide_empty' => 0,
    'empty_zero' => 0,
    'link_to_node' => 1,
    '排除' => 0,
    'id' => '标题',
    '表' => '节点',
    '字段' => '标题',
    '覆盖' => 数组(
      '按钮' => '覆盖',
    ),
    '关系' => '无',
  ),
));
$handler->override_option('排序',数组(
  '创建' => 数组(
    '订单' => 'ASC',
    '粒度' => '秒',
    'id' => '创建',
    '表' => '节点',
    '字段' => '创建',
    '覆盖' => 数组(
      '按钮' => '覆盖',
    ),
    '关系' => '无',
  ),
));
$handler->override_option('arguments', array(
  'uid' => 数组(
    'default_action' => '默认',
    'style_plugin' => 'default_summary',
    'style_options' => 数组(),
    '通配符' => '全部',
    'wildcard_substitution' => '全部',
    '标题' => '',
    '面包屑' => '',
    'default_argument_type' => '用户',
    'default_argument' => '',
    'validate_type' => '无',
    'validate_fail' => '未找到',
    'break_phrase' => 0,
    '不是' => 0,
    'id' => 'uid',
    '表' => '用户',
    '字段' => 'uid',
    'validate_user_argument_type' => 'uid',
    'validate_user_roles' => 数组(
      '2' => 0,
      '3' => 0,
      '7' => 0,
      '4' => 0,
      '8' => 0,
      '9' => 0,
      '5' => 0,
      '6' => 0,
    ),
    '覆盖' => 数组(
      '按钮' => '覆盖',
    ),
    '关系' => '无',
    'default_options_div_prefix' => '',
    'default_argument_fixed' => '',
    'default_argument_user' => 1,
    'default_argument_php' => '',
    'validate_argument_node_type' => 数组(
      'blog_post' => 0,
      'member_org' => 0,
      'news_item' => 0,
      '项目' => 0,
      '事件' => 0,
      'promo_item' => 0,
      '讨论' => 0,
      '组' => 0,
      '页面' => 0,
      'uprofile' => 0,
      '面板' => 0,
      '书' => 0,
      '故事' => 0,
    ),
    'validate_argument_node_access' => 0,
    'validate_argument_nid_type' => 'nid',
    'validate_argument_vocabulary' => 数组(
      '1' => 0,
      '2' => 0,
      '4' => 0,
      '5' => 0,
      '3' => 0,
      '7' => 0,
      '6' => 0,
    ),
    'validate_argument_type' => 'tid',
    'validate_argument_transform' => 0,
    'validate_user_restrict_roles' => 0,
    'validate_argument_node_flag_name' => '*关系*',
    'validate_argument_node_flag_test' => '可标记',
    'validate_argument_node_flag_id_type' => 'id',
    'validate_argument_user_flag_name' => '*关系*',
    'validate_argument_user_flag_test' => '可标记',
    'validate_argument_user_flag_id_type' => 'id',
    'validate_argument_is_member' => 'OG_VIEWS_DO_NOT_VALIDATE_MEMBERSHIP',
    'validate_argument_group_node_type' => 数组(
      '组' => 0,
    ),
    'validate_argument_php' => '',
  ),
));
$handler->override_option('filters', array(
  '类型' => 数组(
    '操作员' => 'in',
    '值' => 数组(
      'blog_post' => 'blog_post',
    ),
    '组' => '0',
    '暴露' => 错误,
    '暴露' => 数组(
      '操作员' => 假,
      '标签' => '',
    ),
    'id' => '类型',
    '表' => '节点',
    '字段' => '类型',
    '覆盖' => 数组(
      '按钮' => '覆盖',
    ),
    '关系' => '无',
  ),
));
$handler->override_option('access', array(
  '类型' => '无',
));
$handler->override_option('cache', array(
  '类型' => '无',
));
$handler->override_option('title', '最近的博客');
$handler = $view->new_display('block', 'Block', 'block_1');
$handler->override_option('block_description', '');
$handler->override_option('block_caching', -1);
于 2010-08-24T15:59:06.863 回答
0

好的,继续前进...

还为我的块整理了上下文模块,我能够创建一个多用户 blogroll,根据他们在侧边栏中的博客页面上的 blogroll 为每个用户显示。

如果有人有兴趣,首先我按照这里的指示 http://drupal.org/node/123850

这是导出的视图,我进行了一些小调整以使其正常工作:

$view = new view;
$view->name = 'blogroll_page';
$view->description = 'blogroll_page';
$view->tag = '';
$view->view_php = '';


$view->base_table = 'node';
$view->is_cacheable = FALSE;
$view->api_version = 2;
$view->disabled = FALSE; /* Edit this to true to make a default view disabled initially */
$handler = $view->new_display('default', 'default', 'default');
$handler->override_option('relationships', array(
  'content_profile_rel' => array(
    'label' => 'Content Profile',
    'required' => 1,
    'type' => 'blogroll_view',
    'id' => 'content_profile_rel',
    'table' => 'users',
    'field' => 'content_profile_rel',
    'override' => array(
      'button' => 'Override',
    ),
    'relationship' => 'none',
  ),
));
$handler->override_option('fields', array(
  'field_url_url' => array(
    'label' => '',
    'alter' => array(
      'alter_text' => 0,
      'text' => '',
      'make_link' => 0,
      'path' => '',
      'link_class' => '',
      'alt' => '',
      'prefix' => '',
      'suffix' => '',
      'target' => '',
      'help' => '',
      'trim' => 0,
      'max_length' => '',
      'word_boundary' => 1,
      'ellipsis' => 1,
      'html' => 0,
      'strip_tags' => 0,
    ),
    'empty' => '',
    'hide_empty' => 0,
    'empty_zero' => 0,
    'link_to_node' => 0,
    'label_type' => 'none',
    'format' => 'default',
    'multiple' => array(
      'group' => 1,
      'multiple_number' => '',
      'multiple_from' => '',
      'multiple_reversed' => 0,
    ),
    'exclude' => 0,
    'id' => 'field_url_url',
    'table' => 'node_data_field_url',
    'field' => 'field_url_url',
    'override' => array(
      'button' => 'Override',
    ),
    'relationship' => 'none',
  ),
));
$handler->override_option('sorts', array(
  'title' => array(
    'order' => 'ASC',
    'id' => 'title',
    'table' => 'node',
    'field' => 'title',
    'override' => array(
      'button' => 'Override',
    ),
    'relationship' => 'none',
  ),
));
$handler->override_option('arguments', array(
  'uid' => array(
    'default_action' => 'default',
    'style_plugin' => 'default_summary',
    'style_options' => array(),
    'wildcard' => 'all',
    'wildcard_substitution' => 'All',
    'title' => '',
    'breadcrumb' => '',
    'default_argument_type' => 'php',
    'default_argument' => '',
    'validate_type' => 'me',
    'validate_fail' => 'ignore',
    'break_phrase' => 0,
    'not' => 0,
    'id' => 'uid',
    'table' => 'users',
    'field' => 'uid',
    'validate_user_argument_type' => 'either',
    'validate_user_roles' => array(
      '2' => 0,
      '4' => 0,
      '3' => 0,
    ),
    'me_redirect' => 0,
    'me_validate_user_argument_type' => 'either',
    'me_validate_user_roles' => array(
      '2' => 0,
      '4' => 0,
      '3' => 0,
    ),
    'override' => array(
      'button' => 'Override',
    ),
    'relationship' => 'none',
    'default_options_div_prefix' => '',
    'default_argument_fixed' => '',
    'default_argument_user' => 0,
    'default_argument_php' => 'if (arg(0) == \'node\' && is_numeric(arg(1))) {
    $node = node_load(arg(1));
    $uid = $node->uid;
}
return $uid;',
    'validate_argument_node_type' => array(
      'blog' => 0,
      'activitystream' => 0,
      'panel' => 0,
      'blogroll_view' => 0,
      'discussions' => 0,
      'jobs' => 0,
      'page' => 0,
      'photogallery' => 0,
      'profile' => 0,
      'story' => 0,
    ),
    'validate_argument_node_access' => 0,
    'validate_argument_nid_type' => 'nid',
    'validate_argument_vocabulary' => array(
      '3' => 0,
      '4' => 0,
      '1' => 0,
    ),
    'validate_argument_type' => 'tid',
    'validate_argument_transform' => 0,
    'validate_user_restrict_roles' => 0,
    'validate_argument_php' => '',
    'me_validate_user_restrict_roles' => 0,
  ),
));
$handler->override_option('filters', array(
  'status' => array(
    'operator' => '=',
    'value' => '1',
    'group' => '0',
    'exposed' => FALSE,
    'expose' => array(
      'operator' => FALSE,
      'label' => '',
    ),
    'id' => 'status',
    'table' => 'node',
    'field' => 'status',
    'override' => array(
      'button' => 'Override',
    ),
    'relationship' => 'none',
  ),
  'type' => array(
    'operator' => 'in',
    'value' => array(
      'blogroll_view' => 'blogroll_view',
    ),
    'group' => '0',
    'exposed' => FALSE,
    'expose' => array(
      'operator' => FALSE,
      'label' => '',
    ),
    'id' => 'type',
    'table' => 'node',
    'field' => 'type',
    'override' => array(
      'button' => 'Override',
    ),
    'relationship' => 'none',
  ),
));
$handler->override_option('access', array(
  'type' => 'none',
));
$handler->override_option('cache', array(
  'type' => 'none',
));
$handler->override_option('title', 'My Blogroll');
$handler->override_option('use_pager', '1');
$handler = $view->new_display('page', 'blogroll_Page', 'page_1');
$handler->override_option('path', 'blogroll');
$handler->override_option('menu', array(
  'type' => 'default tab',
  'title' => 'blogroll',
  'description' => 'list of your favourite blogs',
  'weight' => '0',
  'name' => 'navigation',
));
$handler->override_option('tab_options', array(
  'type' => 'tab',
  'title' => 'blogroll',
  'description' => 'a list of your favourite blogs',
  'weight' => '0',
  'name' => 'navigation',
));
$handler = $view->new_display('block', 'blogroll_Block', 'block_1');
$handler->override_option('block_description', '');
$handler->override_option('block_caching', -1);

祝你好运!

于 2010-08-25T15:50:08.427 回答