2013-08-28 2 views
0

ModX 웹 사이트로 데이터를 대량으로 가져올 수있는 프로젝트를 진행 중입니다.다른 동적 스 니펫을 제어하기위한 마스터 스 니펫

가져온 필드의 데이터를 표시 할 수 있어야하지만 클라이언트가 콘텐츠 리소스에 표시하려는 각 개별 필드를 배치 할 수 있어야합니다.

그래서 내 생각은 개별 필드를 각각 끌어 당기는 개별 스 니펫을 만드는 것이 었습니다.

그러나 잠재적으로 수백 개의 필드가 있기 때문에 많은 시간 동안 테이블을 쿼리해야하는 시스템에서 완전한 호그가 될 것입니다.

모든 필드를 가져 오는 "마스터 스 니펫"을 어떻게 만들 수 있습니까? 그렇지만 여전히 스 니펫처럼 사용할 수 있습니다.

예를 들어 ... 하나 개의 풀은 [[Rec1Field4]

를, [[Rec1Field3]], [[Rec1Field2]], Rec1Field1, Rec1Field2, Rec1Field3, Rec1Field4를 잡아하지만, [[Rec1Field1]]와 같은 콘텐츠 자원에서 사용 할 수 있도록

답변

1

또 다른 대안을 자리에 액세스 할 어디서나 간단한 [[+placeholder]]으로 템플릿 또는 중첩 된 청크에서 이렇게하면 사용자가 문자열 구문 분석을 수행하거나 복잡한 청크를 신경 쓰지 않고도 콘텐츠가 풍부한 텍스트 또는 원하는 곳에 태그를 배치 할 수 있습니다.

+0

어떻게하면 좋을까? 페이지에서 스 니펫을 호출 한 다음 내 자리 표시자를 배치 하시겠습니까? 나는이 방법을 시도하고 있지만 자리 표시자는 아무 것도 제시하지 않는다. – Kevin

+0

결코 신경 쓰지 않는다. 작동한다. – Kevin

2

다른 방법을 사용할 수 있습니다.

Modx에는 $modx->getChunk이라는 기능이 있습니다.이 기능을 사용하면 자리 표시자를 사용하여 청크를 가져 와서 자리 표시 자와 일치하는 키가있는 배열을 제공 할 수 있습니다. 이 자리 표시자는 키 값으로 대체됩니다.

이것은 분명히 원하는 것이 아니지만 이미 자리 표시자를 구문 분석 할 때 문자열을 사용하는 방법에 대한 작동 예제가 있습니다.

See this tutorial

그럼, 당신이 할 것은 이것이다 :

  1. 은 고객이 원하는 내용 필드에 자리 표시를 할 수 있도록 허용.

    [[parse_content_with_placeholders :

  2. 당신이 내용을 표시 할 수있는 템플릿에서
  3. 이 같은 사용자 정의 스 니펫 (snippet)를 호출? & 내용은 =`[[* 내용]이 조각에서`]

이 같은 않습니다 생성합니다, 당신의 코드에서 $modx->setPlaceholders(array('placeholder'=>'value', ...));을 사용

// Properties 
$props = array('Rec1Field1' => 'Foo','Rec1Field2' => 'Bar'); 

// Create the temporary chunk 
$uniqid = uniqid(); 
$chunk = $modx->newObject('modChunk', array('name' => "{tmp}-{$uniqid}")); 
$chunk->setCacheable(false); 

$output = $chunk->process($props, $content); 
+0

나는 혼란 스럽다고 생각합니다. 좀 더 자세히 설명해 주시겠습니까? – Kevin

+0

@ o7thWebDesign - 이해할 수없는 부분은 무엇입니까? – OptimusCrime

+0

벌써 긴 한 주 동안, 오늘 아침에이 신선한 것을 살펴 봤는데 그럴듯 해 보입니다. 시간이되면 주위를 망칠거야 ... 고마워. – Kevin