私は drupal で非常に新しいです。私の問題は、ブロックが一貫しており、変化していないことです。アクセスしているページではなく、サインインしているユーザーに基づいているようです (つまり、マルチユーザー ブログでは、各ブロックは、サインインしているユーザーではなく、表示されているブロガーのページを反映する必要があります。アクセスされているページに基づいて表示される情報。
3 に答える
この種のことを行うために作られた 2 つの人気のあるモジュールがあります。あなたが望むのは、ブロックがそのコンテキスト、どのユーザーがブログ投稿を投稿したかなどを認識できるようにすることです:
これらのモジュールはどちらも非常に複雑で、Drupal を初めて使用する場合は、必要なものを取得するのに苦労する可能性があります。
ブロックをカスタム コーディングし、それらがノード (ブログ投稿) にのみ配置されている場合、ノードを簡単に読み込んで、誰がそれを書いたかに関する情報を取得できます。を使用してこれを行うことができますarg
。
ビューを使用してブロックを作成した場合は、ログインしているユーザーからデータを取得するのではなく、リレーションシップを使用してノードからユーザー情報を取得する必要があります。
わかりました、すぐに移動します...
また、ブロックのコンテキスト モジュールを整理し、サイドバーのブログ ページのブログロールに基づいて各ユーザーに表示されるマルチユーザー ブログロールを作成することができました。
誰かが興味を持っている場合は、まずここの指示に従いました 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);
幸運を!
ご参考までに、私が作成したクイック ビューのダンプを含めました。ノードまたはユーザー プロファイルのどちらであるかに関係なく、表示されているページから 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);