ビューとdrupal 7を使用しています。引数をURLで渡し、これをビューページのタイトルとして使用します。これは、タイトルの上書きチェックボックスを使用することで可能です。しかし、私はこのタイトルを変更したいと思います。つまり、コンテンツのフォーマットとトリミングを行い、タイトルとして必要なものだけを表示します。どうすればできますか。
ビューとdrupal 7を使用しています。引数をURLで渡し、これをビューページのタイトルとして使用します。これは、タイトルの上書きチェックボックスを使用することで可能です。しかし、私はこのタイトルを変更したいと思います。つまり、コンテンツのフォーマットとトリミングを行い、タイトルとして必要なものだけを表示します。どうすればできますか。
回答:
私が間違えなければ、ユーザーインターフェースからそれを行うことはできません。ただし、カスタムモジュールにフックを実装し、使用可能な変数を取得して、独自のロジックを適用し、必要なタイトルを設定できます。
Drupalで表示するページのタイトルを設定する例を見つけることができます。
function HOOK_views_pre_render(&$view) {
if ($view->name == 'taxonomy_term' && $view->current_display == 'page') {
drupal_set_title('Your Page Title');
}
}
うまくいくものを見つけた
function MYMODULE_views_pre_render(&$view) {
if ($view->name == 'menu') {
$view->build_info['title'] = "TEST TITLE";
}
}
少し異なるコンテキストで同様の質問がありました。いつ、どこでパネルはビューからタイトルを取得しますか?
私の解決策は
function foo_views_pre_view (&$view, &$display_id, &$args)
{
$view->display[$view->current_display]->display_options["title"] =
$view->display[$view->current_display]->handler->options["title"] = "Foo";
}
$view->display['default']->handler->options['title']
ではなく変更する必要がありました$view->current_display
。
使用できます$view->set_title()
。
function mymodule_preprocess_views_view(&$variables) {
$view = $variables['view'];
if ($view->name == 'machine_name' && $view->current_display == 'display_machine_name') {
$view->set_title('New Display Title');
}
}
別のモジュールを使用する代わりに、使用しているテーマに次のコードを追加しました。
/**
* THEME_PREPROCESS_VIEWS_VIEW
* @param type $vars
*
*/
function MYTHEME_preprocess_views_view(&$vars) {
// view block
if ($vars['view']->name == 'viewName') {
//update your title
$vars['view']->build_info['title'] = '---Title---';
}
}
MYTHEMEを、使用しているテーマのマシン名に置き換えます。テーマのtemplate.phpファイルに示したコードを追加します。
同じ問題があります。以下は私のために働いた唯一のコードです。
function MYMODULE_NAME_preprocess_views_view(&$vars) {
// If it is the view you want to change
if ($vars['view']->name == 'MYMODULE_NAME') {
// Override view's title, drupal_set_title() was not working
$vars['view']->build_info['title'] = 'MY CUSTOM TITLE';
}
}
「mymodule」モジュールを作成し、hook_views_pre_build()
実装を使用したと想定します。
このステップでビューのタイトルを変更できるかどうかはわかりませんが、他の可能性があるかもしれません。
まず、ページタイトル(現在ビューページによって生成されている)を変更しようとしている場合は、を追加してみますdrupal_set_title('My new title');
。
function mymodule_views_pre_build(&$view) {
if ($view->name == 'view_machine_name') {
drupal_set_title('New title');
}
}
これは実際にはビュータイトルを変更しませんが、ページタイトルを上書きするのに役立ちます。それが機能しない場合は、フックがフックの後にページタイトルを出力することを意味し、別のフックを見つける必要があります。
別の解決策は、ビューの引数をタイトルとして使用することです。ビューにはこの機能が組み込まれており、引数設定にそのためのフィールドがあります。ビューが提供するデフォルトの分類法ビューの最初の引数で確認できます。これは良い例です。