web-dev-qa-db-ja.com

モジュールのビューテーブルレイアウトのオーバーライド

モジュール内からビューテーブルをオーバーライドしようとしています。引数が何であり、どのような順序であるかを見つけることができません(私のhook_theme funcの場合)。ビュー/テーマからテーマファイルをコピーし、変更は行いませんでした。誰が何がうまくいっていないのか知っていますか?そして、引数の値は下にあるべきですか?

私のテーマ構成は現在:

'views_view_table__opportunities_mentions' => array(
  'arguments' => array(
    'view' => NULL, 
    'title' => NULL, 
    'header' => NULL, 
    'fields' => null, 
    'class' => null, 
    'row_classes' => null, 
    'rows' => null
  ),
  'template' => 'views-view-table--opportunities-mentions',
  'original hook' => 'views_view_table',
  'path' => drupal_get_path('module', 'smd') . '/theme',
),
4
lordg

テーマビューの最も簡単な方法は、問題の特定のビューを編集し、下にスクロールして「テーマ情報」のリンクを見つけることです。この画面は、現在使用しているテーマテンプレートのビューと、この出力を上書きするためにテーマで作成できるテンプレートを正確に示します。

それは本質的にすべてのビューのテーマです-あなたのデザインに合うものでデフォルトのマークアップを上書きします。

@see http://www.group42.ca/theming_views_2_the_basics ビューのテーマに関する優れたチュートリアル

[〜#〜]編集[〜#〜]

生成されたマークアップを完全に制御したい場合、およびこれをテーマ間で移植できるようにするには、カスタムモジュールを作成するしかありません。このカスタムモジュールにはテーマ設定可能なコンポーネントを含めることもでき、ビューを使用して重いSQLを実行することもできます(またはSQLを手書きするだけでもかまいません)。

始めるために同様のモジュールを見て、読み通す hook_theme

3
wiifm

ビューを前処理する方が良いでしょう。

特定の表示だけを上書きしたい場合は、具体的に指定する必要があります。まず、ビューのtpl.phpファイルを作成する必要があります。特定のビューのテーマ情報を見て、どちらが必要かを判断できます。次に例を示します。

enter image description here 次に、現在「テーブル」である行スタイルのテンプレートの提案を検索します。

enter image description here

views-view-table.tpl.phpは、テーブルスタイルを持つeveryビューをオーバーライドします。このビューだけに限定したい場合は、(この場合)views-view-table--frontpage.tpl.php-'frontpage'を、ビューからの提案に置き換えます。

実際には、このファイルをテーマディレクトリに作成する必要があります。しかし、このファイルには何を入れますか?まあ、その「スタイル出力」リンクをクリックするだけで、そのファイルに直接コピーして貼り付けることができるコードが表示されます。

このファイルを保存した後、template.phpを開いて、プリプロセッサを作成します。 D6にファイルが存在しないと、プリプロセッサが機能しないことに注意してください。以下は、例に沿ったスタブコードです。

function [theme-name]_preprocess_views_view_table__frontpage(&$vars) {
  // manipulate the $vars here
  ...
}

$ varsは参照によって渡されるため、適切なキーを操作するだけで、必要な操作を実行できます。

0
sirkitree

実際にはほとんど正しいように見えますが、モジュールで同じコードを使用しました。モジュールファイルのビューにテンプレートファイルをパッケージ化したかったのです。サイトは管理者用に通常のbartikテーマを使用しており、CSSを追加するためにそのテーマを編集したくありませんでした。

私が間違っていると思うのは次のとおりです。

'views_view_table__opportunities_mentions' => array(
  'arguments' => array(
  'view' => NULL, 
  'title' => NULL, 
  'header' => NULL, 
  'fields' => null, 
  'class' => null, 
  'row_classes' => null, 
  'rows' => null
),
'template' => 'views-view-table--opportunities-mentions',
'base hook' => 'views_view_table',
'path' => drupal_get_path('module', 'smd') . '/theme',
),

original hookではなく、base hookにする必要があることに注意してください。これには、ビューに独自の前処理関数があり、tplに正しく配線される必要があります。それを正しく設定しないと、とにかくカスタムtplを取得しますが、プリプロセス関数がtplが使用する変数を設定しなかったため、tplの欠落またはnull変数に関するあらゆる種類のエラーが発生します。 。

0
stockli

オーバーライドするテーマ関数は、テンプレート化されたテーマ関数です。つまり、前処理関数が呼び出され、変数がテンプレートに渡されます。前処理関数は少し異なり、単一の変数のみが渡されます。つまり、すべての変数を含む配列なので、変数の順序は関係ありません。

見る:

0
googletorp