2017-04-30 8 views
3

Google 태그 관리자를 사용하여 일부 페이지에 스키마 JSON-LD 제품 리뷰를 추가하고있어 리소스를 찾을 수 없습니다. 문제에.JSON-LD 및 변수를 사용하여 여러 스키마 제품 검토를 사용하는 Google 태그 관리자 사용 방법

내가 겪고있는 문제는 GTM에 여러 요소가 있음을 어떻게 알 수 있고 JSON-LD에서 각각 고유 한 값으로 반복해야한다는 것입니다.

값을 얻기 위해 사용하는 방법은 CSS 선택기를 사용하고 있습니다.이 선택기는 일부 페이지에서는 20 번이나 다른 페이지에서는 30 번 나타날 수 있기 때문에 고유하지 않습니다. 변수는 Google GTM에서 가져옵니다. 모든 페이지에 Google 태그 관리자 사용자 정의 HTML을 사용하여

나는

<script> 
(function() { 

var data = { 

    // THIS APPEARS ONCE.  
    "@context": "http://schema.org", 
    "@type": "Product", 
    "name": "{{name}}", 
    "aggregateRating": 
    { 
     "@type": "AggregateRating", 
     "ratingValue": "{{rating}}", 
     "reviewCount": "{{ratingCount}}" 
    } 

    // THIS BLOCK OF CODE NEEDS TO BE REPEATED EVERYTIME VARIBLE {{customer}} IS FOUND 
    "review": [ 
     { 
     "@type": "Review", 
     "author": "{{customer}}", 
     "datePublished": "{{date}}", 
     "name": "{{desc}}", 
     "reviewBody": "{{say}}", 
     "reviewRating": { 
     "@type": "Rating", 
     "ratingValue": "{{customValue}}"   
    }] 
    } 

    var script = document.createElement('script'); 
    script.type = "application/ld+json"; 
    script.innerHTML = JSON.stringify(data); 
    document.getElementsByTagName('head')[0].appendChild(script); 
})(document); 
</script> 

는 슬프게도, 테스트 후, 나는 제복을 입은 방식으로 반복하는 JSON-LD의 검토 부분을 얻을 수 없습니다 해요 추가 할 수 있습니다. 사실 JSON에 검토 기간을 두 번 이상 부여 할 수는 없으며 코드와 GTM 설정이 잘못되어있을 수 있습니다.

변수는 다음과 같이 다음 CSS 선택기와 DOM 요소를 사용하여 Google 태그 관리자의 설정은 다음과 같습니다

enter image description here

는 때때로 그래서이 JSON에서 여러 항목이 필요로하는 페이지에 표시 여러 리뷰입니다, 현재 코드는 최대 1 개만 출력합니다.

질문 : 페이지에 제품 리뷰가 두 개 이상있는 경우 GTM에서 JSON-LD에 다른 리뷰를 추가하려면 어떻게해야합니까?

답변

2

사용자 정의 JavaScript 변수를 사용하여 값의 배열을 저장 한 다음이 배열의 요소를 JSON-LD의 값으로 설정할 수 있습니다.

function() {return document.querySelector('h1').innerText;} 

이의 당신이이 변수 H1의 이름을 것입니다 가정 해 봅시다 : 예를 들어

는이 기능을 사용자 정의 자바 스크립트 변수를 만들 수 있습니다 H1 태그의 텍스트를 얻을 수 있습니다. 그런 다음이 변수를 JSON-LD에서 {{h1}}과 같이 사용할 수 있습니다.

JSON-LD 코드는 맞춤 HTML 태그에 저장하고 위에서 언급 한 변수로 채울 수 있습니다. 그것은 요소의 배열을 반환합니다

function() {return document.querySelectorAll('h1');} 

하고이 배열을 통해 루프가 innerText와 얻을 수 있습니다하거나 각 요소를 살펴 : 당신은 당신이이 변수를 사용할 수있는 페이지에 두 개 이상의 H1이있는 경우

같은 : - https://netpeak.net/blog/modify-your-ppc-strategy-to-suit-voice-search/

{{h1}}[0].innerText 

날이 블로그 게시물의 예에 대한 내 생각을 보여 드리죠. 이 같은 페이지에서 모든 H2 헤더 (또는 리뷰 또는 아무것도를) 얻을 수 있습니다 :

var allh2 = document.querySelectorAll('h2'); 

GTM의 관점에서이 변수 지정 자바 스크립트가 될 수 또는 당신은 JSON-LD 한 사용자 정의 HTML 태그를 구축 할 수 있습니다.다음으로 이러한 헤더의 내부 텍스트를 저장하고 JSON-LD 표기법으로 객체로 모든 값을 밀어 빈 배열을 만들 :

var reviews = []; 
for(i = 0; i < allh2.length; i ++){ 
    reviews.push({'review':allh2[i].innerText}); 
} 

이제 "에 대한 JSON-LD 마크 업의 값으로 사용할 수있는 리뷰 변수가 리뷰 "키를 누릅니다.

+0

아이디어는 GTM을 사용하여 HTML에서 해당 값을 가져 오는 것입니다. –

+0

맞춤 자바 스크립트 변수를 사용하면이 작업을 수행 할 수 있습니다. – mrbubu

+0

제발, 귀하의 질문을 편집하고 제공된 코드를 사용하여 코드 데모를 포함 할 수 있습니까? 그렇지 않으면 대답이 저조하고별로 도움이되지 않습니다. GTM 문서를 기반으로 한 코드 또는 정답에 대한 답변을 찾고 있습니다. –