web-dev-qa-db-ja.com

ビューの出力からdivとspanを削除する

私の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ファイルですが、これを行う簡単な方法があることを願っています。

セマンティックビューモジュールについても読みましたが、必要なマークアップのみを出力として取得するようにビューを構成する方法がわかりませんでした。効果がないようです。

3
toxinlabs

私はそれを今大丈夫だと思います、これが最もエレガントな方法であるかどうか教えてください;)

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="" />

最後に。

1
toxinlabs

ビュー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 =がそうです)。

2
Jimajamma

Fences モジュールを試してみてください、セマンティックビューの代替

Fencesは、各フィールドにHTML要素を指定するための使いやすいツールです。この要素の選択は、ティーザー、RSSフィード、ビューなど、フィールドが使用されるすべての場所に反映されます。フィールドを表示するたびに、同じHTML要素を何度も何度も再構成する必要はありません。

1
Muneef Hameed

その特定のフィールド名のビューのスタイル設定を変更することでそれを行うことができます。 [フィールドHTMLのカスタマイズ]をオンにして、選択オプションから[なし]を選択します。

0
iyrin