2

私は drupal で非常に新しいです。私の問題は、ブロックが一貫しており、変化していないことです。アクセスしているページではなく、サインインしているユーザーに基づいているようです (つまり、マルチユーザー ブログでは、各ブロックは、サインインしているユーザーではなく、表示されているブロガーのページを反映する必要があります。アクセスされているページに基づいて表示される情報。

4

3 に答える 3

1

この種のことを行うために作られた 2 つの人気のあるモジュールがあります。あなたが望むのは、ブロックがそのコンテキスト、どのユーザーがブログ投稿を投稿したかなどを認識できるようにすることです:

これらのモジュールはどちらも非常に複雑で、Drupal を初めて使用する場合は、必要なものを取得するのに苦労する可能性があります。

ブロックをカスタム コーディングし、それらがノード (ブログ投稿) にのみ配置されている場合、ノードを簡単に読み込んで、誰がそれを書いたかに関する情報を取得できます。を使用してこれを行うことができますarg

ビューを使用してブロックを作成した場合は、ログインしているユーザーからデータを取得するのではなく、リレーションシップを使用してノードからユーザー情報を取得する必要があります。

于 2010-08-23T18:19:31.090 に答える
0

わかりました、すぐに移動します...

また、ブロックのコンテキスト モジュールを整理し、サイドバーのブログ ページのブログロールに基づいて各ユーザーに表示されるマルチユーザー ブログロールを作成することができました。

誰かが興味を持っている場合は、まずここの指示に従いました 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 に答える
0

これは、views モジュールで行うのが最適です

ご参考までに、私が作成したクイック ビューのダンプを含めました。ノードまたはユーザー プロファイルのどちらであるかに関係なく、表示されているページから uid を取得し、コンテンツを取得するだけです (blog_posts に限定しています)。あなたのタイプに合うようにジグする必要があるかもしれません) 表示されているユーザーによって作成されました。

ブロック管理リストにあるはずの自動ブロックを作成します。

うまくいけば、これはスターターです。これを使用するには、ビュー モジュールをダウンロードして有効にし、以下のコードをインポートすると、ビューが作成されます

$view = 新しいビュー;
$view->name = 'recent_blogs';
$view->description = '';
$view->tag = '';
$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,
      'max_length' => '',
      'word_boundary' => 1,
      '省略記号' => 1,
      'html' => 0,
      'strip_tags' => 0,
    )、
    '空' => '',
    'hide_empty' => 0,
    'empty_zero' => 0,
    'link_to_node' => 1,
    「除外」=> 0、
    'id' => 'タイトル',
    'テーブル' => 'ノード',
    'フィールド' => 'タイトル',
    'オーバーライド' => 配列(
      'ボタン' => 'オーバーライド',
    )、
    '関係' => 'なし',
  )、
));
$handler->override_option('sorts', array(
  '作成' => 配列(
    '注文' => '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,
      'ニュース_アイテム' => 0,
      'プロジェクト' => 0,
      'イベント' => 0,
      'プロモーションアイテム' => 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(
  'タイプ' => 配列(
    'operator' => 'in',
    '値' => 配列(
      'blog_post' => 'blog_post',
    )、
    'グループ' => '0',
    「露出」=> FALSE、
    '公開' => 配列(
      「演算子」=> FALSE、
      'ラベル' => '',
    )、
    '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 に答える