3

4 つのフィールドを取得する単純なビューがあります。基本的には、特定のコンテンツ タイプのフィールドを取得します。フィールドは次のとおりです。
CSS クラス (プレーン テキスト)
画像 (画像)
タイトル
本文

かなり単純なもの。ビューを作成しましたが、特殊な方法で出力する必要があり、ビルドからのカスタム マークアップと組み合わせて、この出力がどのように機能するかを判断できません。各行をコンテナーにラップする必要があり、各行は独自のコンテナーに分割されます。次のコードを見てください。

   <div id="homepage-folio-portlets">
    <div class="homepage-folio-portlet [CSS class]">
     <div class="homepage-folio-portlet-image"><img src="[Image]" width="450" height="330" alt="" class="[CSS class]-image" /></div>
     <div class="homepage-folio-portlet-text">
      <strong>[Title]</strong>
      <p>[Body]</p>
     </div>
    </div> <!-- /homepage-folio-portlet -->
   </div> <!-- /homepage-folio-portlets -->

そのため、コンテナー、homepage-folio-portletsがあり、その内部でビューを反復処理して、行からの CSS クラスを含む返された各行に対してクラスhomepage-folio-portletを使用して新しいコンテナーを作成します。

私の最大のハードルは、.tpl ファイルまたは template.php のテーマ関数を作成する方法を見つけることです。命名規則は理解していますが、中に入るとどうすればよいかわかりません。どちらの方法でも、行出力がコンテンツの CSS クラスを認識できるようにするために、template.php で少し魔法をかける必要があると感じていますが、誰にもわかりません。任意のヘルプと指示をいただければ幸いです。

4

3 に答える 3

3

前述のビデオを見た後、私がやろうとしていることを達成する方法が少し明確になりました. 最大の「あーはは」は、「行スタイル出力」テンプレートのデフォルト コードが foreach ループのために混乱していたことです。ループなしで、このファイルに適合すると思われる方法で各フィールドを単純に出力できることを認識していませんでした。このビデオでは、次の省略形の $fields['ID-of-field']->content を使用してフィールドを個別に参照する方法を示しました。「ID-of-field」を取得するには、特定のビューの「Theming information」オプション ペインにある「Display output」、「Style output」、および「Row style output」リンクをスクロールします。

ビューの編集画面にある「テーマ情報」を使用して、「行スタイル出力」の最も具体的な .tpl を決定し、それを作成して作成しました。この場合は、view-view-fields--my-view-name- -default.tpl.php。

view-view-fields--my-view-name--default.tpl.php - 行出力 .tpl ファイル
(フィールドをループする代わりに、必要なフィールドがわかっているため、デフォルトの foreach を使用しなくなりました。私が適切だと思うとにかくそれらを出力するだけです)

   <div id="homepage-folio-portlets">
    <div class="homepage-folio-portlet <?php print $fields['CSS_class']->content ?>">
     <div class="homepage-folio-portlet-image"><img src="<?php print $fields['Image']->content ?>" width="450" height="330" alt="" class="<?php print $fields['CSS_class']->content ?>-image" /></div>
     <div class="homepage-folio-portlet-text">
      <strong><?php print $fields['Title']->content ?></strong>
      <p><?php print $fields['Body']->content ?></p>
     </div>
    </div> <!-- /homepage-folio-portlet -->
   </div> <!-- /homepage-folio-portlets -->

その後、「Style output」と「Display output」の .tpl ファイルを少し再帰して、Drupal が追加する余分なマークアップをすべて取り除きました。私が本当に気にかけたのは、スタイル .tpl で $row (foreach ループを使用) を出力し、表示 tpl で $rows を出力することだけだったことに注意してください。それは私が望むものを正確に出力しており、私はこれ以上幸せになることはできません. 最後に、それはいくつかの意味を成しています。うまくいけば、これは他の多くの人々に役立ちます。

参考までに…

views-view-unformatted--my-view-name--default.tpl.php - スタイル .tpl ファイル
(各行が出力されるように、ここに foreach ループを保持したい)

<?php foreach ($rows as $id => $row): ?>
 <?php print $row; ?>
<?php endforeach; ?>

views-view--my-view-name--default.tpl.php - .tpl ファイルを表示する

<?php print $rows; ?>

余分なマークアップをすべて削除すると、管理リンクなどのビューに固有の重要なものが失われますが、私の目的では問題ありません。

于 2010-12-07T00:25:31.663 に答える
1

ビューの [編集] タブで、[基本設定] の下にある [テーマ:] を探し、[情報] リンクをクリックします。次に、「デフォルト: テーマ情報」セクションで、太字のファイル名は、そのビューの特定のサブセクションのテーマに現在使用されているものです。他の名前は、デフォルトを上書きするために使用できる「提案」であり、最も具体的なものから最も具体的なものへと並べられています。

あなたの場合、まず、「行スタイルの出力」をオーバーライドしたいようです。

  1. 「Row style output」リンクをクリックし、デフォルトのテンプレート コードをコピーします。
  2. このスタイルをすべてのビュー、このビュー、このビューの特定の表示などに使用するかどうかに基づいて、行スタイルに使用する推奨ファイル名の 1 つを選択します。
  3. 手順 1 でコピーしたコードを、手順 2 で選択したファイル名に貼り付けます。
  4. 必要に応じてコードを編集して、特定のクラスを追加します
  5. [テンプレート ファイルの再スキャン] をクリックして、テンプレート キャッシュを再構築します。
  6. カスタマイズする追加のサブテンプレートについて、手順 1 ~ 5 を繰り返します。
于 2010-12-06T21:19:40.173 に答える
0

行のテンプレート ファイルを使用してみましたか? ビューモジュール(管理者)に表示されるはずです。ビューを作成するときに、左側の下のボックスにある [情報] をクリックします。テンプレート キャッシュを更新する必要があります (これを行うためのボタンが表示されます)。

于 2010-12-06T21:19:32.487 に答える