2010-12-02 10 views
3

特定のビューのカスタムpage.tpl.phpを作成するにはどうすればよいですか?drupalビューのカスタムpage.tpl.php

私は、ビュー自体のスタイリングについては言及していません。ビューがレンダリングされるページだけです。

ありがとうございます。

@Keith Morgan - それはページです。

+1

アプローチをそれを残すことができ、使用しているビュー表示の種類に依存します。それは例えばページかブロックですか? – keithm

答えて

5

テンプレートファイルを作成して、ほとんどすべてのビュー出力のテーマをテーマにすることができます。あなたの場合は、あなたのページ表示のためのカスタムテンプレートを作成したいと思う。

ビューデザイナーで、[基本設定]の[テーマ]リンクをクリックします。ビュー全体をテーマ化するかどうか(view-view-example-page.tpl.phpなど)、各行(view-view-fields-exampleなど)に応じてテンプレートファイルの名前付けオプションがいくつか表示されます--page.tpl.php)などです。

カスタマイズする適切なテンプレートを/ sites/all/modules/views/themeからテーマにコピーし、必要に応じてカスタマイズします。

カスタムテンプレートファイルを作成したら、ビューデザイナのテーマリンクに戻り、デザインテンプレートが使用されていることを確認できます。あなたのテンプレートは太字にする必要があります。

これが役に立ちます。あなたのビューはwww.example.com/photosであれば、あなたのテーマで、ページphotos.tpl.phpを作成すると

function YOUR-THEME-NAME_preprocess_page(&$vars) { 

//allow template suggestions based on url paths. 
$alias = drupal_get_path_alias(str_replace('/edit','',$_GET['q'])); 
if ($alias != $_GET['q']) { $suggestions = array(); 
$template_filename = 'page'; 
foreach (explode('/', $alias) as $path_part) { 
$template_filename = $template_filename . '-' . $path_part; 
$suggestions[] = $template_filename; 
} 
$alias_array = explode('/', $alias); 
$variables['template_files'] = $suggestions; 

:私はこれは非常にうまく私のために働くようになったsillygwailoの提案を使用して

+11

OPはビューがアクティブで、ビュー自体は表示されていないときにページのテーマを指定するよう求めていませんか?ページが表示されたビューがある場合、一番上のテンプレートはview-view.tpl.phpから引き出されます。これはページ要素を含まないものです。これは、まだアクティブなページテンプレートに詰め込まれます。 – mpdonadio

1

ビューをページと見なすと、前処理でpage_manager_get_current_page()の結果を使用して、ビューがアクティブかどうかを判断し、適切な手順(ボディクラスのタック、テンプレートの提案の追加など)を行うことができます。

1

ディレクトリとDrupalはあなたのテンプレートとしてそれを使用します。

2

私のテーマのテンプレートフォルダに.tpl.phpを入れて救済した同様の問題がありました。 Drupalの7のビューのページ表示の命名規則は、ページです - パスツーview.tpl.php

2

私はtemplate.phpにテンプレートの提案を追加しましたDrupalの7テーマで:

function sovon_preprocess_page(&$variables) { 
if(views_get_page_view()) { 
    $variables['theme_hook_suggestions'][] = 'page__view';  
} 
} 

詳細については、http://api.drupalize.me/api/drupal/function/views_get_page_view/7およびhttp://drupal.org/node/223440#custom-suggestionsを参照してください。あなたのテーマディレクトリ内のその後

function <theme>_preprocess_page(&$variables) { 
    if (($views_page = views_get_page_view()) && $views_page->name === "galleries") { 
     $variables['theme_hook_suggestions'][] = 'page__views__galleries'; 
    } 
} 

、ページを作成 - ビュー - galleries.tpl.phpファイルを:

Drupalの7 template.phpで
+1

私はあなたの答えのシンプルさが好きでしたが、私はそれを上に構築するだろうと思った。私はそれも2歳以上だと分かっていますが、これは助けになるかもしれません。だから、私がやったことは、関数の内部をこれに変更することでした:\t if($ view = views_get_page_view()){ $ variables ['theme_hook_suggestions'] [] = 'ページビュー - '。 - >名前; } これはビュー名を取得し、接頭辞 "page-view-"とビュー名を持つテンプレートファイルを探します。この方法で、各ビューのif文を記述することなくこれを拡張することができます。 – Kirkland

7

パーAllartkのソリューション
。 drupalキャッシュとテンプレートをクリアする必要があります。 私は「ギャラリー」をビュー名として使用しました。

+4

これを必要とせず、 'drupal 7 is page-path-to-view.tpl.php'を使用してください。 – Duncanmoo

+1

@Duncanmoo - Amirのアプローチの利点は、命名規則に従えばテンプレートにビューが含まれていることを明示的に見ることができることです(例えば、page-node-mynode.tpl.phpのように)心配しています。私はビューのマシン名を使って上記と同様に組み合わせることができます。例えば、私のビューがhere/there/myviewに存在する場合、標準ページではなくpage-view-myview.tpl.phpを持つことができます--here - there - myview.tpl.php – BrynJ

0

確認済みの回答がうまくいかなかった場合(私にとってはそれがなかったため)、ページ - (urlname).tplを作成できます。PHPを使用して、あなたのテーマをスタイルすることができます。そして、あなたは...

 print render($page['content']); 

または

$ビュー= views_get_view( 'ビュー名')次のいずれかの方法であなたのビューをインポートすることができます。 $ view-> execute_display( 'default'、$ args);を出力します。

$ argsが単なる配列で、blank..youことができるだけで完全に

関連する問題