私のpage.tpl.php
私は自分のビューの1つを表示するためにこれを行っています。
print views_embed_view('teaserview', 'default');
これにより、次のHTML出力が得られます。
<span thmr="thmr_10">
<div class="view view-teaserview view-id-teaserview view-display-id-default view-dom-id-e051ba535ce9aac6cd9a0d564b3dbb29 contextual-links-region">
<div class="contextual-links-wrapper">
<span thmr="thmr_16">
<ul class="contextual-links">
<li class="views-ui-edit first last"><span thmr="thmr_17"><a href="/kbi/admin/structure/views/view/teaserview/edit/default?destination=node/3">Edit view</a></span></li>
</ul>
</span>
</div>
<div class="view-content">
<span thmr="thmr_15">
<div class="views-row views-row-1 views-row-odd views-row-first views-row-last">
<span thmr="thmr_14">
<span thmr="thmr_11"><span thmr="thmr_12"><span thmr="thmr_13"><img src="http://127.0.0.1/kbi/sites/default/files/teaser_2.jpg" width="1029" height="308" alt="" /></span></span></span></span>
</div>
</span>
</div>
</div>
</span>
しかし、本当に必要なのは
<img src="http://127.0.0.1/kbi/sites/default/files/teaser_2.jpg" width="1029" height="308" alt="" />
必要なデータのみを取得できるように、views_embed_view呼び出しを変更する可能性はありますか?
すべてのビューを変更する可能性があります.tpl.php
ファイルですが、これを行う簡単な方法があることを願っています。
セマンティックビューモジュールについても読みましたが、必要なマークアップのみを出力として取得するようにビューを構成する方法がわかりませんでした。効果がないようです。
私はそれを今大丈夫だと思います、これが最もエレガントな方法であるかどうか教えてください;)
views-view-[ViewName] .tpl.phpをテーマフォルダーにコピーして、次の変更を加えました。
<div class="<?php print $classes; ?>"> // delete this line
<?php print render($title_prefix); ?>
<?php if ($title): ?>
[...]
<?php if ($header): ?>
<div class="view-header"> // delete this line
<?php print $header; ?>
</div> // delete this line
<?php endif; ?>
[...]
<?php if ($rows): ?>
<div class="view-content"> // delete this line
<?php print $rows; ?>
</div> // delete this line
<?php elseif ($empty): ?>
次に、ビューエディターでいくつかの調整を行いました( セマンティックビュー モジュールをインストールしました)。
形式:セマンティックビュー
表示:意味ビュー:フィールド
フィールド設定:
複数のフィールド設定
[x]すべての値を同じ行に表示する
[x]単純なセパレーター(そして、セパレーターが出力に挿入されないように、セパレーターテキストフィールドを空にします)
書き換え結果:
[x] HTMLタグを取り除く
[x]空白を削除
特定のタグを保持する:(私の場合、画像フィールドを表示しているため、フィールドのコンテンツによってはこれが異なる場合があります)
->これは私にきれいを与えます
<img src="http://127.0.0.1/kbi/sites/default/files/teaser_2.jpg" width="1029" height="308" alt="" />
最後に。
ビューUIを介してビューに移動し、フィールドを確認する場合、フィールドのラッパーに[なし]を選択することで、フィールドからラッパーhtmlを構成/削除できます。あなたが望まないhtml離れた。また、ビューの管理画面に移動してツールにアクセスすると、「ビューの上にホバーリンクを表示しない」を確認できます。これにより、管理者タイプのアカウントから見たときに、すべてのビューの最初の編集部分が削除されます。 。
上記で必要なすべてのHTMLが削除されない場合は、上記のようにテンプレートを変更するか、views_embed_viewの代わりに次のようなものを使用できます。
$view = views_get_view('teaserview');
$display_id = 'default';
$view->set_display($display_id);
$view->execute();
これは実行されますが、ビューは表示されません...しかし、基本的には行オブジェクトの配列である$ view-> resultを作成するので、そこに移動して必要なものを印刷できます。
そこに何があるかを調べるには、
drupal_set_message('<pre>' . print_r($view->result, true) . '</pre>');
何が使えるかがわかります。
PSこれがうまくいったら、私はそれを前処理フックに入れて、このコードの一部またはすべてをpage.tplに入れる代わりに、この出力を変数に割り当てます...
PPS私はまた、テーマ開発者モジュールがそこに多くのhtmlをスローしていることも知っていると想定しています(これらすべてのthmr =がそうです)。
Fences モジュールを試してみてください、セマンティックビューの代替
Fencesは、各フィールドにHTML要素を指定するための使いやすいツールです。この要素の選択は、ティーザー、RSSフィード、ビューなど、フィールドが使用されるすべての場所に反映されます。フィールドを表示するたびに、同じHTML要素を何度も何度も再構成する必要はありません。
その特定のフィールド名のビューのスタイル設定を変更することでそれを行うことができます。 [フィールドHTMLのカスタマイズ]をオンにして、選択オプションから[なし]を選択します。