(パスから)%nidの位置からビューを開始する方法は?


11

一部のノードを表示するポートフォリオがあります(views3 +サイクルを使用したスライドショーを表示)。すべて正常に動作/portfolioします。それにアクセスするためのデフォルトのパスがあります。

ただし、スライドごとにパスを設定しようとしています。ビュー/portfolio/%nidで使用%nidして、最初に表示されたスライドをこのノードIDにデフォルト設定したいと思います。

誰でもそれがどのように可能か知っていますか?UIを試してみましたが、十分ではないと思います。

回答:


1

jQueryのサイクルオプションがあり startingSlideと呼ばれるが。デフォルトでは、次のように0に設定されています。startingSlide:0

私が正しく覚えている場合は、ビューUIからjQuery Cycleにオプションを追加できる詳細設定用のタブ/テキストエリアがあります。たとえば、そこに「startingSlide:5」を追加できると思います。

どのスライドが開始スライドであるかを調べ(%nidをビューのどの行に変換するか)、それをHTML要素として追加する必要があります。それが整ったら、jQueryでフェッチして、jQuery Cycleオプションとして追加できます。どちらが最善の方法かはわかりませんが、次のようなことができると思います。

    function MYMODULE_views_pre_render(&$view) {
      if($view->name == "MYVIEW") {
        $view->attachment_after = $startingslide;
      }
    }

もちろん$ startingslideを見つけるためにコードを追加する必要があります。$ view-> resultの中を見て、引数である行を見つけます。これが$ startingslideになります。オブジェクトを検索するには、ビューでdpm()を使用します。

これがお役に立てば幸いです。あなたがやったことを教えてください:)


0

公開されたフィルターをビューに追加しgreater than、提供された値をNIDで表示するように構成し、それに応じてURLを模倣することができます。

たとえば/ portfolio?nid_is_greater_than = 3

次に、CSSでフィルターを非表示にします。


私は公開されたフィルターではなく引数(コンテキストフィルター)を使用します-既に使用中の引数がなく、この追加の引数がそれらの処理を台無しにしない限り。
アルフレッドアームストロング

フィールド値をコンテキストフィルター値と比較する方法がわかりません。
magtak 2013年

いい視点ね。以前のコメントを投稿したとき、半分眠っていたに違いありません。
アルフレッドアームストロング

0

あなたの問題は見た目に関するものなので、サーバーやURLパスではなく、URLフラグメントを使用してクライアントで解決することをお勧めします:/ portfolio#slide- [nid]。

スライドショー+サイクルのビューのjavascriptコードは読んでいませんが、スライドショーの初期化時にURLフラグメントを読み取る動作を採用するのは非常に簡単だと思います。または、使用できるような実装済みのロジックがすでに存在する...


0

ビューのフィールドセクションで「出力結果の書き換え」オプションを使用するのはどうですか?

  1. ビューで、(画像)フィールドの構成>結果の書き換えに移動します
  2. [このフィールドをリンクとして出力する]チェックボックスをオンにします
  3. リンクパス(nid /)とその他の詳細を入力します
  4. 「適用」をクリックします
  5. ビューを保存

お役に立てれば。


0

node_view()その場合、ビューはディスプレイを通過し、行のマークアップには関与しません。

必要なことを行う最も簡単な方法は、を実装hook_preprocess_node()し、現在のコンテキストでビューを探し、ノードがその表示の一部としてレンダリングされている場合は、いくつかの変更を行うことです。

これをみて:

function MYMODULE_preprocess_node(&$vars) {
  if (!empty($vars['view']) && $vars['view']->view_name == 'foo') {
    $nid = $vars['node']->nid;
    $vars['extra_link'] = l('Some text', "node/$nid");
  }
}

あなたのnode.tpl.phpファイルではあなたがアクセスするでしょう$extra_link.

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.