경로에서 % nid 위치에서 뷰를 시작하는 방법은 무엇입니까?


11

일부 노드를 보여주는 포트폴리오가 있습니다 (views3 + views slideshow using cycle). 모든 것이 잘 작동합니다. 기본 경로 /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하고 제공된 값 을 표시하도록 구성하고 그에 따라 URL을 모방 할 수 있습니다.

예를 들어 / portfolio? nid_is_greater_than = 3

그런 다음 CSS로 필터를 숨길 수 있습니다.


이미 사용중인 인수가 없으며이 여분의 인수가 처리를 망칠 수 없다면 노출 된 필터 대신 인수 (컨텍스트 필터)를 사용합니다.
Alfred Armstrong

필드 값을 컨텍스트 필터 값 과 비교할 방법이 없습니다 .
magtak

좋은 지적. 이전 의견을 게시했을 때 잠이 들었을 것입니다. 죄송합니다.
Alfred Armstrong

0

당신의 문제는 구조에 관한 것이 아니라 URL 경로가 아니라 클라이언트에서 URL 조각으로 / portfolio # slide- [nid]로 해결하는 것이 좋습니다.

JavaScript view view of slideshow + cycle을 읽지 못했지만 슬라이드 쇼를 초기화 할 때 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.