私のホームページのブロックとして、私は出力しようとしています:
<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>";
}
?>
views custom field を使用して何かを行うことができます。
PHPフィールドを追加し、必要なマークアップ(要素を含まない)を表示するためだけに取得し、行番号1の値のみを出力します。
私はこれを行うために、次のような前処理関数を個人的に使用しています。
function HOOK_preprocess_views_view_fields(&$vars) {
if ($vars['view']->name == 'VIEW_NAME' && $vars['view']->row_index == 1) {
// Do stuff here.
}
}
あなたの質問を正しく理解しているかどうかはわかりませんが、 Semantic Views モジュールを使用できると思います。 [基本設定]の[スタイル]を[セマンティックビュー]に設定すると、セマンティックビューの設定に[ファーストクラス属性]を設定するオプションが表示され、テーマのスタイルでビューの最初のリストアイテムをターゲティングできます。 cssファイル。
最も簡単な解決策は、カスタムテンプレートを使用することです。それは多くの仕事である必要はありませんが。ビューインターフェースで利用可能なテーマ情報を使用して、変更する必要のあるテンプレートを確認できます。あなたがする必要があるのは、最初のノードの余分なアイテムを印刷するためのコードを追加することだけです。ビューは各行をループするため、簡単です。