私は 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);