目次
キーテイクアウト
ビュースタイルプラグインは、
ご覧のとおり、これはブートストラップタブに必要なマークアップです。もちろん、関連するブートストラップスタイルとスクリプトが最初にテーマにロードされていることを確認せずに機能しません。
Drupal 8
ビューに変数をビューに追加するにはどうすればよいですか。テーマの.Themeファイルのプリプロセス関数を使用して行われます。関数は、pattermed theme_name_preprocess_views_view__view_name__display_idに従う必要があります。変数の配列である単一の引数を実行する必要があります。このアレイに新しい変数を追加でき、Twigテンプレートで利用可能になります。 Drupal 8にカスタムスタイルのプラグインを作成すると、Drupal管理インターフェイスを介してビューで使用できます。ビューを編集して、フォーマットセクションに移動します。フォーマット設定をクリックして、リストからカスタムスタイルのプラグインを選択します。ビューを保存した後、カスタムスタイルプラグインを使用してレンダリングされます。 Drupal 8のカスタムスタイルプラグインは、ビューをレンダリングする責任があります。入力として行の配列が必要で、レンダリング配列を返します。レンダリング配列には、使用する小枝テンプレートを指定する#Themeキー、およびテンプレートに渡す必要がある変数を含める必要があります。 🎜> Drupal 8のビューテンプレートをデバッグすると、Twigデバッグ機能を使用して実行できます。デバッグオプションをtrueに設定して、services.ymlファイルでTwigデバッグを有効にします。次に、テンプレートを使用するページを表示すると、どのテンプレートファイルが使用されているかを表示するHTMLソースコードにコメントが表示され、それらをオーバーライドするために使用できるテンプレートファイル名を提案します。 Drupal 8のビューテンプレートで条件論的ロジックを使用します。 Twigコードでは、IFキーワードを使用して条件をテストし、条件が真か偽かに応じて異なるマークアップまたはコードを含めることができます。 8?
ホームページ バックエンド開発 PHPチュートリアル Drupal 8のテーマビュー - カスタムスタイルプラグイン

Drupal 8のテーマビュー - カスタムスタイルプラグイン

Feb 15, 2025 pm 12:02 PM

Drupal 8のテーマビュー - カスタムスタイルプラグイン

Drupal 8のテーマビュー - カスタムスタイルプラグイン

ビューはDrupal 8 Coreにあります。私たちは皆、今ではそれを知っています。 TwigはDrupal 8の新しいテンプレートエンジンです。これも知っています。しかし、2番目を使用してビューをテーマにするために、最初のものとプログラム的に相互作用する方法を知っていますか?他のサブシステムのようなオーバーライドビューテンプレートは別として、ビュープラグイン(ディスプレイ、スタイル、行、フィールド)の形式でより強力な代替手段を利用できます。 この記事では、Drupal 8のビュー用のカスタムスタイルプラグインを作成する方法を調べます。Bootstrapタブマークアップを目標として使用し、ビュー結果にタブ付き出力を実装します。ビュー構成では、スタイル設定により、どのフィールドがタブナビゲーションコピーとして使用されるかを指定し、それぞれのタブパンに表示される残りのフィールドを残します。基本的に、各ビューの結果はタブを表します。そのため、この例は、数回以上の結果があるビューには適していません。主な目標は、Drupal 8で独自のビュースタイルプラグインを作成する方法を説明することです。

プロジェクトでBootstrapを使用する方法の詳細については説明しません。ただし、アセットのドキュメントページ、または匿名のユーザーがjQueryがページにロードされていることから利益を得ることができることを確認する方法に関するこの記事を確認できます。事前に書くコードを表示したい場合は、デモモジュール内のこのリポジトリで見つけることができます。

キーテイクアウト

  • Drupal 8コアにはビューが含まれるようになりました。Twigは新しいテンプレートエンジンです。ビュープラグイン(ディスプレイ、スタイル、行、フィールド)は、オーバーライドビューテンプレートの強力な代替品を提供します。このガイドでは、Drupal 8のビュー用のカスタムスタイルプラグインを作成する方法を説明します。ブートストラップタブマークアップ。
  • カスタムスタイルプラグインの作成には、モジュールのプラグイン/ビュー/スタイルフォルダー内でプラグインクラスを構築することが含まれます。このクラスは、StylePluginBaseクラスから拡張され、プラグインのID、タイトル、ヘルプ、テキスト、テーマ、表示タイプを定義する@ViewsStyle Annotationが含まれています。スタイルプラグインはリストのレンダリングを担当し、ほとんどのディスプレイタイプで使用できます。
  • カスタムスタイルプラグインの作成の最後の部分には、テーマ関数を定義し、Twigテンプレートファイルを作成することが含まれます。 .moduleファイル内で定義されているテーマ関数は、デフォルトで$ Viewオブジェクトと結果の$行をテンプレートに渡します。 Twigテンプレートファイルは、プラグインの出力のレンダリング方法を制御します。カスタムスタイルのプラグインが作成されたら、Drupal管理インターフェイスを介して有効になり、形式設定から選択してビューを使用して使用できます。
  • スタイルプラグインは何ですか?

ビュースタイルプラグインは、

リスト

をレンダリングする責任があります。コアスタイルのプラグインの注目すべき例は、ほとんどのディスプレイタイプ(ページ、ブロックなど)で使用できる独自のスタイルプラグインを作成し、フィールドロープラグインを使用しましょう。 ブートストラップタブスタイルプラグイン 最初のステップは、モジュールのプラグイン/ビュー/スタイルフォルダーにあるプラグインクラスを作成することです。 drupalプラグインのタイプは、Antationでいくつかの基本的な構成が渡されたIS ViewsStyleのインスタンスを作成しています。明らかなものは別として、私たちは言及する価値のあるテーマとdisplay_typesキーを持っています。最初のテーマは、このスタイルプラグインがデータをレンダリングするために使用するテーマ機能を宣言し、2番目はこのスタイルを使用できるディスプレイプラグインの種類を宣言します(この場合、それ以外の場合はカスタムタイプを指定しないすべてのディスプレイタイプ:通常)。このプラグインタイプのすべての利用可能な注釈構成の詳細については、DrupalviewSannotationViewsStyle Annotationクラスをご覧ください。

2つのクラスプロパティを使用すると、スタイルは行プラグインを使用しているが、グループ化が許可されていないことを宣言します。親クラスをチェックして、このように指定できる他のオプションの詳細を確認してください。たとえば、私たちが拡張しているクラスは、Styleプラグインでフィールドを使用できることを既に宣言しています。 前述のように、2つのメソッドを使用して、プラグインオプションを作成し、フォーム要素を作成して、どのフィールドがタブナビゲーションとして機能するかを指定できるようにします。現在のディスプレイハンドラー($ this-> displayhandler)を使用して、サイトビルダーが追加した利用可能なすべてのビューフィールドをロードできます。そして、この新しいフォーム要素は、スタイル設定フォームで利用できます:

Drupal 8のテーマビュー - カスタムスタイルプラグイン StylePluginBaseクラスから拡張しているため、これ以上のことは何もありません。マークアップ出力の場合、実行されたビューから関連する変数を受信するDEMO_BOOTSTRAP_TABSテーマに依存できます。必要に応じて、レンダリングメソッドのいずれかをオーバーライドして、より多くの変数を追加したり、テーマを変更したり、必要なものを変更したりできます。特に、テンプレートが受信する変数を処理するプリプロセッサを実装するため、デフォルトには優れています。

テーマ

通常のようにDEMO_BOOTSTRAP_TABSテーマを定義する時が来ました(.MODULEファイル内):

スタイルプラグインは、$ Viewオブジェクトと結果の$行をデフォルトでテンプレートに渡します。これらの変数がテンプレートに送信される前に(必要に応じて)、これらの変数を少し処理するのはプリプロセッサ次第です。

<span>namespace Drupal<span>\demo\Plugin\views\style</span>;
</span><span>use Drupal<span>\Core\Form\FormStateInterface</span>;
</span><span>use Drupal<span>\views\Plugin\views\style\StylePluginBase</span>;
</span>
<span>/**
</span><span> * A Views style that renders markup for Bootstrap tabs.
</span><span> *
</span><span> * <span>@ingroup views_style_plugins
</span></span><span> *
</span><span> * @ViewsStyle(
</span><span> *   id = "bootstrap_tabs",
</span><span> *   title = @Translation("Bootstrap Tabs"),
</span><span> *   help = @Translation("Uses the Bootstrap Tabs component."),
</span><span> *   theme = "demo_bootstrap_tabs",
</span><span> *   display_types = <span>{"normal"}
</span></span><span> * )
</span><span> */
</span><span>class BootstrapTabs extends StylePluginBase {
</span>
  <span>/**
</span><span>   * Does this Style plugin allow Row plugins?
</span><span>   *
</span><span>   * <span>@var <span>bool</span>
</span></span><span>   */
</span>  <span>protected $usesRowPlugin = TRUE;
</span>
  <span>/**
</span><span>   * Does the Style plugin support grouping of rows?
</span><span>   *
</span><span>   * <span>@var <span>bool</span>
</span></span><span>   */
</span>  <span>protected $usesGrouping = FALSE;
</span>
  <span>/**
</span><span>   * <span>{@inheritdoc}
</span></span><span>   */
</span>  <span>protected function defineOptions() {
</span>    <span>$options = <span>parent::</span>defineOptions();
</span>    <span>$options['tab_nav_field'] = array('default' => '');
</span>    <span>return $options;
</span>  <span>}
</span>
  <span>/**
</span><span>   * <span>{@inheritdoc}
</span></span><span>   */
</span>  <span>public function buildOptionsForm(&$form, FormStateInterface $form_state) {
</span>    <span><span>parent::</span>buildOptionsForm($form, $form_state);
</span>    <span>$options = $this->displayHandler->getFieldLabels(TRUE);
</span>    <span>$form['tab_nav_field'] = array(
</span>      <span>'#title' => $this->t('The tab navigation field'),
</span>      <span>'#description' => $this->t('Select the field that will be used as the tab navigation. The rest of the fields will show up in the tab content.'),
</span>      <span>'#type' => 'select',
</span>      <span>'#default_value' => $this->options['tab_nav_field'],
</span>      <span>'#options' => $options,
</span>    <span>);
</span>  <span>}
</span><span>}
</span>
ログイン後にコピー
では、ここで何が起こっているのですか?まず、使用するフィールド名のスタイルプラグインオプションを確認します(ビューを構成するときに選択されたもの)。そこにいない場合、私たちは戻りますが、Template_Preprocess_Views_View_Unformatted関数がすでにうまくいくというデフォルトのプレ前処理を少し前に行う前ではありません。だから私たちはそれに委任します。次に、ビューの結果をループして、タブナビゲーション用のコンテンツの配列を作成します。このために、デフォルトのビューViews_view_fieldテーマ関数を使用して、選択したフィールドをレンダリングします。最後に、この配列をテンプレートに渡し、フォーマットのないリストスタイルのデフォルトのプリプロセッサも実行します。

テンプレート

<span>/**
</span><span> * Implements hook_theme().
</span><span> */
</span><span>function demo_theme($existing, $type, $theme, $path) {
</span>  <span>return array(
</span>    <span>'demo_bootstrap_tabs' => array(
</span>      <span>'variables' => array('view' => NULL, 'rows' => NULL),
</span>      <span>'path' => drupal_get_path('module', 'demo') . '/templates',
</span>    <span>),
</span>  <span>);
</span><span>}
</span>
ログイン後にコピー
Drupal 8では、テーマ機能はなく、すべてがTwigテンプレートで処理されています。それでは、モジュールのテンプレートフォルダーでDemo-Bootstrap-Tabs.html.twigファイルがどのように見えるかを見てみましょう:

ご覧のとおり、これはブートストラップタブに必要なマークアップです。もちろん、関連するブートストラップスタイルとスクリプトが最初にテーマにロードされていることを確認せずに機能しません。

最初にレンダリングするのは、タブナビゲーションアイテム(NAV変数から)です。この配列をループしている間、ループインデックス値も使用して、最初のアイテムをアクティブとしてデフォルトし、一意のIDを使用して以下のタブコンテンツペインをターゲットにすることができます。アイテムの実際の値については、プリプロセッサで作成したレンダリングアレイを印刷するだけで、Drupalはそれをレンダリングします。そうは言っても、ここで使用するフィールドが比較的短いことを確認することはおそらく良い考えです。リンクとプレーンマークアップがなければ。タイトルはおそらくうまく機能するでしょう。しかし、これはそれに応じてビューを構成する問題です。 ナビゲーションの下で、実際のビュー行を印刷して、同じループインデックスを使用して最初の行をアクティブタブペーンとしてデフォルトし、上記のナビゲーションが可視性を制御できるように一意に識別します。コンテンツについては、row.content変数全体(Template_preprocess_views_view_unformatted内で準備されています)を印刷し、ビューにすべてのフィールドを含みます。また、ナビゲーションに使用したフィールドを含めない場合は、ビュー構成の表示からそれを除外することができます。ナビゲーションにまだ表示されます(そこに明示的に印刷するため)が、メインのタブペーンには表示されません。

結論

そしてそこに私たちはそれを持っています。ビュー結果をブートストラップタブとして出力するスタイルプラグインを表示します。今必要なのは、Bootstrapアセットがロードされていることを確認し、新しいスタイルプラグインを使用するようにビューを構成するだけです。これは多くの結果を持つビューを意図したものではなく、スタイルプラグインを作成する方法を示す例としてのみ機能します。 質問、コメント、または提案がある場合は、以下に残してください!

Drupal 8

のテーマビューに関するよくある質問

Drupal 8でカスタムスタイルのプラグインを作成するには、Drupal 8にカスタムスタイルのプラグインを作成するには、いくつかのステップが含まれます。まず、まだ新しいモジュールを持っていない場合は、新しいモジュールを作成する必要があります。次に、モジュールのSRC/プラグイン/ビュー/スタイルディレクトリで、カスタムスタイルプラグインのPHPファイルを作成します。ファイルには、StylePluginBaseクラスを拡張し、@ViewsStyleアノテーションを含むクラスを含める必要があります。注釈は、プラグインのID、タイトル、およびヘルプテキストを定義します。クラスで必要なメソッドを定義した後、Drupal管理インターフェイスを介して新しいスタイルプラグインを有効にできます。 Drupal 8は、通常、プラグイン定義、プラグインクラス、テンプレートファイルの3つの重要なコンポーネントで構成されています。プラグインの定義は、@viewsstyleアノテーションを介して提供され、プラグインのID、タイトル、ヘルプテキストが含まれています。プラグインクラスは、StylePluginBaseクラスを拡張し、プラグインの動作を制御するメソッドを定義します。テンプレートファイルは、プラグインの出力のレンダリング方法を制御するTwigファイルです。のデフォルトビューテンプレートをオーバーライドするにはどうすればよいですか?ファイルの名前は、パターンViews-view– [view-name] - [display-id] .html.twigに従う必要があります。このファイルでは、ビューをレンダリングするために使用する必要があるHTMLマークアップおよびTwigコードを定義できます。ファイルを作成した後、Drupal Cacheをクリアして変更を確認します。

>

ビューに変数をビューに追加するにはどうすればよいですか。テーマの.Themeファイルのプリプロセス関数を使用して行われます。関数は、pattermed theme_name_preprocess_views_view__view_name__display_idに従う必要があります。変数の配列である単一の引数を実行する必要があります。このアレイに新しい変数を追加でき、Twigテンプレートで利用可能になります。 Drupal 8にカスタムスタイルのプラグインを作成すると、Drupal管理インターフェイスを介してビューで使用できます。ビューを編集して、フォーマットセクションに移動します。フォーマット設定をクリックして、リストからカスタムスタイルのプラグインを選択します。ビューを保存した後、カスタムスタイルプラグインを使用してレンダリングされます。 Drupal 8のカスタムスタイルプラグインは、ビューをレンダリングする責任があります。入力として行の配列が必要で、レンダリング配列を返します。レンダリング配列には、使用する小枝テンプレートを指定する#Themeキー、およびテンプレートに渡す必要がある変数を含める必要があります。 🎜> Drupal 8のビューテンプレートをデバッグすると、Twigデバッグ機能を使用して実行できます。デバッグオプションをtrueに設定して、services.ymlファイルでTwigデバッグを有効にします。次に、テンプレートを使用するページを表示すると、どのテンプレートファイルが使用されているかを表示するHTMLソースコードにコメントが表示され、それらをオーバーライドするために使用できるテンプレートファイル名を提案します。 Drupal 8のビューテンプレートで条件論的ロジックを使用します。 Twigコードでは、IFキーワードを使用して条件をテストし、条件が真か偽かに応じて異なるマークアップまたはコードを含めることができます。 8?

Drupal 8のビューでページャーをカスタマイズすることは、Drupal管理インターフェイスを介して実行できます。ビューを編集して、ポケットベルセクションに移動します。ここでは、使用するページャーの種類を選択し、ページごとに表示するアイテムの数を設定し、他のポケットベル設定を構成できます。

以上がDrupal 8のテーマビュー - カスタムスタイルプラグインの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

JSON Web Tokens(JWT)とPHP APIでのユースケースを説明してください。 JSON Web Tokens(JWT)とPHP APIでのユースケースを説明してください。 Apr 05, 2025 am 12:04 AM

JWTは、JSONに基づくオープン標準であり、主にアイデンティティ認証と情報交換のために、当事者間で情報を安全に送信するために使用されます。 1。JWTは、ヘッダー、ペイロード、署名の3つの部分で構成されています。 2。JWTの実用的な原則には、JWTの生成、JWTの検証、ペイロードの解析という3つのステップが含まれます。 3. PHPでの認証にJWTを使用する場合、JWTを生成および検証でき、ユーザーの役割と許可情報を高度な使用に含めることができます。 4.一般的なエラーには、署名検証障害、トークンの有効期限、およびペイロードが大きくなります。デバッグスキルには、デバッグツールの使用とロギングが含まれます。 5.パフォーマンスの最適化とベストプラクティスには、適切な署名アルゴリズムの使用、有効期間を合理的に設定することが含まれます。

セッションのハイジャックはどのように機能し、どのようにPHPでそれを軽減できますか? セッションのハイジャックはどのように機能し、どのようにPHPでそれを軽減できますか? Apr 06, 2025 am 12:02 AM

セッションハイジャックは、次の手順で達成できます。1。セッションIDを取得します。2。セッションIDを使用します。3。セッションをアクティブに保ちます。 PHPでのセッションハイジャックを防ぐための方法には次のものが含まれます。1。セッション_regenerate_id()関数を使用して、セッションIDを再生します。2。データベースを介してストアセッションデータを3。

PHP 8.1の列挙(列挙)とは何ですか? PHP 8.1の列挙(列挙)とは何ですか? Apr 03, 2025 am 12:05 AM

php8.1の列挙関数は、指定された定数を定義することにより、コードの明確さとタイプの安全性を高めます。 1)列挙は、整数、文字列、またはオブジェクトであり、コードの読みやすさとタイプの安全性を向上させることができます。 2)列挙はクラスに基づいており、トラバーサルや反射などのオブジェクト指向の機能をサポートします。 3)列挙を比較と割り当てに使用して、タイプの安全性を確保できます。 4)列挙は、複雑なロジックを実装するためのメソッドの追加をサポートします。 5)厳密なタイプのチェックとエラー処理は、一般的なエラーを回避できます。 6)列挙は魔法の価値を低下させ、保守性を向上させますが、パフォーマンスの最適化に注意してください。

確固たる原則と、それらがPHP開発にどのように適用されるかを説明してください。 確固たる原則と、それらがPHP開発にどのように適用されるかを説明してください。 Apr 03, 2025 am 12:04 AM

PHP開発における固体原理の適用には、次のものが含まれます。1。単一責任原則(SRP):各クラスは1つの機能のみを担当します。 2。オープンおよびクローズ原理(OCP):変更は、変更ではなく拡張によって達成されます。 3。Lischの代替原則(LSP):サブクラスは、プログラムの精度に影響を与えることなく、基本クラスを置き換えることができます。 4。インターフェイス分離原理(ISP):依存関係や未使用の方法を避けるために、細粒インターフェイスを使用します。 5。依存関係の反転原理(DIP):高レベルのモジュールと低レベルのモジュールは抽象化に依存し、依存関係噴射を通じて実装されます。

PHPでの後期静的結合を説明します(静的::)。 PHPでの後期静的結合を説明します(静的::)。 Apr 03, 2025 am 12:04 AM

静的結合(静的::) PHPで後期静的結合(LSB)を実装し、クラスを定義するのではなく、静的コンテキストで呼び出しクラスを参照できるようにします。 1)解析プロセスは実行時に実行されます。2)継承関係のコールクラスを検索します。3)パフォーマンスオーバーヘッドをもたらす可能性があります。

REST APIデザインの原則とは何ですか? REST APIデザインの原則とは何ですか? Apr 04, 2025 am 12:01 AM

Restapiの設計原則には、リソース定義、URI設計、HTTPメソッドの使用、ステータスコードの使用、バージョンコントロール、およびHATEOASが含まれます。 1。リソースは名詞で表され、階層で維持される必要があります。 2。HTTPメソッドは、GETを使用してリソースを取得するなど、セマンティクスに準拠する必要があります。 3.ステータスコードは、404など、リソースが存在しないことを意味します。 4。バージョン制御は、URIまたはヘッダーを介して実装できます。 5。それに応じてリンクを介してhateoasブーツクライアント操作をブーツします。

PHPで例外を効果的に処理する方法(試して、キャッチ、最後に、スロー)? PHPで例外を効果的に処理する方法(試して、キャッチ、最後に、スロー)? Apr 05, 2025 am 12:03 AM

PHPでは、Try、Catch、最後にキーワードをスローすることにより、例外処理が達成されます。 1)TRYブロックは、例外をスローする可能性のあるコードを囲みます。 2)キャッチブロックは例外を処理します。 3)最後にブロックは、コードが常に実行されることを保証します。 4)スローは、例外を手動でスローするために使用されます。これらのメカニズムは、コードの堅牢性と保守性を向上させるのに役立ちます。

PHPの匿名クラスとは何ですか?また、いつ使用できますか? PHPの匿名クラスとは何ですか?また、いつ使用できますか? Apr 04, 2025 am 12:02 AM

PHPの匿名クラスの主な機能は、1回限りのオブジェクトを作成することです。 1.匿名クラスでは、名前のないクラスをコードで直接定義することができます。これは、一時的な要件に適しています。 2。クラスを継承したり、インターフェイスを実装して柔軟性を高めることができます。 3.使用時にパフォーマンスとコードの読みやすさに注意し、同じ匿名のクラスを繰り返し定義しないようにします。

See all articles