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

drupal.stackexchange https://drupal.stackexchange.com/questions/740

  •  16-10-2019
  •  | 
  •  

質問

モジュール内からビューテーブルをオーバーライドしようとしています。引数が何であるか、どのような順序であるかを見つけることはできません(私の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',
),
役に立ちましたか?

解決

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

それは本質的にすべてのビューをテーマにしている - あなたがデザインに合う何かでデフォルトのマークアップをオーバーライドすることです。

@見る http://www.group42.ca/theming_views_2_the_basics ビューテーマに関する優れたチュートリアルについては

編集

作成されたマークアップを完全に制御したい場合は、 これをテーマ間でポータブルにするためには、あなたが持っている唯一のオプションは、カスタムモジュールを作成することです。このカスタムモジュールにはテーマのコンポーネントがあり、ビューを使用して重いSQLを実行することもできます(または、SQLをハンドライティングすることもできます)

似たようなモジュールを見て、あなたを始めて、読み通してください hook_theme

他のヒント

オーバーライドするテーマ関数は、テンプレートされたテーマ関数です。これは、プリプロセス関数が呼び出され、変数がテンプレートに渡されることを意味します。プリプロース機能は少し異なります。単一の変数のみがそれに渡されるという点で、すべての変数を含む配列があるため、変数の順序は無関係です。

見る:

ビューを前処理する方がずっと良いです。

特定のディスプレイのみをオーバーライドする場合は、具体的にする必要があります。最初にビュー用のTPL.PHPファイルを作成する必要があります。特定のビューのテーマ情報を見て、どちらが必要かを把握できます。これが例です:

enter image description here次に、現在「テーブル」である行スタイルのテンプレートの提案を見つけたいと思います。

enter image description here

views-view-table.tpl.php オーバーライドします 毎日 テーブルスタイルの表示。このビューに固有のものにしたい場合は、(この場合)必要になります。 views-view-table - frontpage.tpl.php - あなたの見解があなたに与えているどんな提案でも「フロントページ」を置き換えてください。

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

このファイルを保存した後、Template.phpを開き、そのためにプリプロセッサを作成します。プレセッサの前に注意してください 動作しない ファイルがD6に存在することなく。例を握って、ここにいくつかのスタブコードがあります。

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

$ varsは参照によって渡されるため、適切なキーを操作して必要なことを行う必要があります。

実際には私にはほぼ正しいように見えます。モジュールで同じコードを使用しました。モジュールで自分のビューでテンプレートファイルをパッケージ化したかったのです。サイトは管理者に通常の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がピックアップされますが、PREPROCESS関数がTPLが使用する変数を設定しなかったため、TPLの欠落またはヌル変数に関するあらゆる種類のエラーが得られます。 。

ライセンス: CC-BY-SA帰属
所属していません drupal.stackexchange
scroll top