logo

パレット - カラフルに🎨

Palette — ビジュアルページビルダー、デザインの専門知識は不要です。

ライブデモ パレットをダウンロード

Scroll

Views のテーミング、view.tpl.php テンプレートの編集(フィールド、行、ブロック、ページ)。jQuery プラグイン EasySlider の接続

17/04/2025, by Ivan

この記事では、Drupal のクエリビルダーモジュール――Views モジュール(http://drupal.org/project/views――を探ります。Views を使うと、さまざまなコンテンツタイプのフィールド、コメント、タクソノミー用語、ユーザー情報、その他データベースからのデータを出力できます。また、グラフィカルなインターフェースも提供し、マウスを使って簡単にデータベースクエリを構築できます。

注意!!! easySlider を 1 時間以内に使いたい場合は、モジュールをインストールすることを強くお勧めします。この記事は主に、Views テンプレートのテーミング方法を理解する手助けをするためのものです。 easySlider を適切にスタイリングするには、CSS をカスタマイズする必要があります。

Views を設定して必要なフィールドを出力した後、それらを特定の方法で配置する必要がよくあります。これは出力テンプレートファイルを使って行います。デフォルトでは、これらのテンプレートはテーマフォルダーにあります。

Views で表示されるデータに EasySlider jQuery プラグインを設定しましょう。これには、すでに Views と統合されたモジュールがあります:http://drupal.org/project/easySlider

目的が単に画像をスライダー形式で出力することだけなら、モジュールをインストールすれば十分です。しかし、この記事は Views テンプレート の扱い方を理解する助けになります。

始めるには、ViewsCCKImagecache モジュールをインストールし、easySlider プラグインを こちら または他の任意のサイトからダウンロードする必要があります。プラグインを Drupal テーマにインストールする方法は、CCK フィールドを設定した後で後ほど説明します。

では、モジュールをインストールした状態で始めましょう:

1. 新しいコンテンツタイプを作成します。

2. コンテンツタイプに画像アップロードフィールドを追加して保存します。必要ならフィールドを並べ替えてもかまいません。

3. フィールド設定で、無制限の画像アップロードを許可し、画像の説明を有効にします。

4. 新しい「Banner」コンテンツタイプを使ってコンテンツ(ノード)をいくつか作成し、スライダーで使う画像をいくつかアップロードします。

5. 出力画像用の画像プリセットを作成します。たとえば、200x200 ピクセルのプリセットです。

6. 必要なプリセットサイズに合わせるために、「scale and crop(拡大縮小して切り抜き)」の画像エフェクトを追加します。

7. では、このフィールドを Views でブロック形式で表示しましょう。

新しい view を作成します。

8. 「Image(画像)」フィールドを追加し、グループ化とラベルを削除して、画像プリセットを選びます。

9. フィルターを設定します:
Content: Published(公開)— yes
Content: Type(タイプ)— Banner

Basic Settings(基本設定)で:
Style(スタイル): HTML List

view にブロック表示を追加します。

10. ブロックをテーマのリージョンに配置して、サイトに表示します。

この時点では、出力はまだスライダーのようには見えません。easySlider を統合しましょう。

11. easySlider プラグイン(先ほどリンクしたもの)を解凍します。2.html の例を使います。その CSS をテーマの style.css ファイルにコピーし、プラグインの画像をテーマの images フォルダーに移します。

12. easySlider1.5.js をテーマの js フォルダーにコピーします。テーマの .info ファイルでリンクします:

scripts[] = js/easySlider1.5.js

キャッシュをクリアします――これでファイルが読み込まれるはずです。

スライダープラグインの JS を調べると、適切に機能するためにどんなマークアップ構造を期待しているかがわかります。

13. ブラウザーのインスペクター(Firebug や Chrome DevTools など)を使ってブロックのマークアップを分析します。Views が、スライダーの邪魔になりかねない多くの余分な div を追加していることに気づくでしょう。

14. View の設定に戻り、「Theme: information」をクリックします。これにより、view のレンダリングに使われるテンプレートファイルが表示されます。

デフォルトの出力を上書きするために、テーマフォルダーに views-view-fields--view-banner.tpl.php という名前の新しいテンプレートファイルを作成します。

元の views-view-fields.tpl.php ファイルの内容をコピーし、整理を始めます――不要な div、span、区切り文字、ラベルを削除します。必要なもの(おそらく画像フィールドだけ)だけを出力します。

15. 新しいテンプレートを保存し、Drupal のキャッシュをクリアします。出力を調べます――これでよりすっきりし、<ul> の中に画像が入った <li> 項目だけが表示されるはずです。

16. views-view.tpl.phpviews-view--view-banner.tpl.php という名前のファイルで上書きし、<div class="view-content"> のようなラッパーを削除することもできます。

17. さらに多くのラッパーを削除するには、views-view-list.tpl.phpviews-view-list--view-banner.tpl.php で上書きします。

18. 最後に、ブロック周りのすべての余分な div を削除するには、block.tpl.php をカスタマイズします。テーマにこのファイルがまだない場合は、Block モジュールからコピーします。

block.tpl.php で、次のようなものを使ってバナーブロックを条件付きで <div id="slider"> で囲みます:

<?php if ($block->delta == 'views-banner-block_1'): ?>
  <div id="slider">
    <?php print $content; ?>
  </div>
<?php else: ?>
  <?php print $content; ?>
<?php endif; ?>

19. 再度キャッシュをクリアすると、出力は期待される構造に従うはずです:<div id="slider"><ul><li><img>...

20. EasySlider の初期化 JavaScript を、page.tpl.php にインラインで、または js/custom.js のような外部 JS ファイルに追加します:

$(document).ready(function() {
  $("#slider").easySlider();
});

21. すべてが整えば、EasySlider は機能するはずです。必要に応じて、レイアウト、余白、ナビゲーションボタンの CSS を調整してください。

結論:スライダーやカルーセルには既製のモジュールを使う方が簡単ですが、Views のテーミングとテンプレートの上書きを理解すれば、任意の jQuery プラグインを統合し、出力構造を完全に制御できます。