web-dev-qa-db-ja.com

ビューの最初のアイテムをカスタマイズする

私のホームページのブロックとして、私は出力しようとしています:

<ul>
  <li><a><img><p>Node 1</p></a></li>
  <li><a>Node 2</a></li>
  <li><a>Node 3</a></li>
  <li><a>Node 4</a></li>
</ul>

ここで、各<li>はノード、および各ノードに接続されたCCKフィールドによって提供される画像/テキストを表します。

現在、ブロックビューを使用してノード2〜4を出力し、アタッチメントビューを使用して最初のノードを次のように表示しています: http://www.agileapproach.com/blog-entry/the-views2 -attachment-display

問題は、私の出力が次のようになることです。

<div class="attachment attachment-before">
  <div class="view view-homepage-news ..">
    <div class="item-list">
      <ul>
        <li class="views-row ...">  
          <a><img><p>Node 1</p></a>            
        </li>
      </ul>
    </div>  
  </div> <!-- /.view -->
</div>
<div class="item-list">
  <ul>
    <li class="views-row ..."><a>Node 2</a></li>
    <li class="views-row ..."><a>Node 3</a></li>
    <li class="views-row ..."><a>Node 4</a></li>
  </ul>
</div>

その出力は目的に合わせて曲げることができますが、多くのテンプレートと構成が必要になります。また、唯一のオプションでない限り、CSSやJavaScriptを使用して出力を変更しないようにしたいと思います。

これを踏まえて、出力を必要なものに近づける最も簡単な方法は何ですか?

編集:カスタムフィールドのphpコードフィールドで使用している大まかなphpコードは次のとおりです(ジェレミーフランス語の提案に基づいています:ここに私のコードで使用していますPHPコードカスタムフィールド:

<?php
  ++$static;
  if ($static == 1) {
    $nd=node_load($data->nid);
    $img_path = imagecache_create_path('news_image_thumbnail', $nd->field_image[0]['filepath']);
    print '<a><img src="' . $img_path . '"><p>Node 1</p></a>';
  } else {
    print "<a>Node $static</a>";
  }
?>
7
Daniel Nitsche

views custom field を使用して何かを行うことができます。

PHPフィールドを追加し、必要なマークアップ(要素を含まない)を表示するためだけに取得し、行番号1の値のみを出力します。

5
Jeremy French

私はこれを行うために、次のような前処理関数を個人的に使用しています。

function HOOK_preprocess_views_view_fields(&$vars) {
  if ($vars['view']->name == 'VIEW_NAME' && $vars['view']->row_index == 1) {
    // Do stuff here.
  }
}
8
Decipher

あなたの質問を正しく理解しているかどうかはわかりませんが、 Semantic Views モジュールを使用できると思います。 [基本設定]の[スタイル]を[セマンティックビュー]に設定すると、セマンティックビューの設定に[ファーストクラス属性]を設定するオプションが表示され、テーマのスタイルでビューの最初のリストアイテムをターゲティングできます。 cssファイル。

6
Jay

最も簡単な解決策は、カスタムテンプレートを使用することです。それは多くの仕事である必要はありませんが。ビューインターフェースで利用可能なテーマ情報を使用して、変更する必要のあるテンプレートを確認できます。あなたがする必要があるのは、最初のノードの余分なアイテムを印刷するためのコードを追加することだけです。ビューは各行をループするため、簡単です。

4
googletorp