2016-08-08 5 views
14

Tumblr 블로그의 모든 개별 게시물 페이지에 JavaScript 코드를 추가하고 싶습니다. 나는 다음과 같은 것을 가지고 있지만 어떤 페이지에도 나타나지 않을 것 같다. permalink 또는 개별적인 게시물 페이지. 게시물 블록을 삭제하거나 PermalinkPage 블록을 제거하는 방법으로 많은 변형을 시도했습니다. 여기서 내가 뭘 잘못하고 있니?Tumblr 블로그의 모든 색인이 아닌 페이지에 JavaScript를 추가하려면 어떻게합니까?

<!-- Start JS --> 
{block:Posts} 
    {block:PermalinkPage} 
    <script type='text/javascript'> 
    __config = { 
      {block:Date},date:'{Year}-{MonthNumberWithZero}-{DayOfMonthWithZero} {24HourWithZero}:{Minutes}:{Seconds}'{/block:Date} 
      {block:PostSummary},title:{JSPlaintextPostSummary}{/block:PostSummary} 
      {block:HasTags},tags:[{block:Tags}'{Tag}', {/block:Tags}],{/block:HasTags} 
      ,url:'{URLEncodedPermalink}' 
    }; 
    (function(){ 
     var s = document.createElement('script'); 
     s.type = 'text/javascript'; 
     s.src = document.location.protocol + '//example.com/example.js'; 
     (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(s); 
    })(); 
    </script> 
    {/block:PermalinkPage} 
{/block:Posts} 
<!-- END JS --> 
+0

왜 모든 페이지에 자바 스크립트를 추가하지 않으십니까? 그러면 최소한 – lharby

+0

에 캐싱됩니다. 자바 스크립트 앱은 foo.tumblr.com의 기본 페이지에서 실행해서는 안됩니다. foo.tumblr.com/EveryPageButSearch –

+0

에서보십시오 : http://ejdraper.com/2009/12/13/advanced-tumblr-customization/ (절반 이상). Tumblr 블록 indexPage는 서로 다른 유형의 색인 페이지를 참조합니다. tumblr 태그를 사용하여 검색 페이지를 타겟팅 할 수 있지만 코드를 생략하면 더 복잡합니다. jquery (바닐라 js로 이식 될 수 있다고 생각하는)를 사용하여이 문제를 해결할 수있는 방법을 알고 있지만 당연히 tumblr 태그에서 설정하는 것보다 더 해킹되고 강력하지는 않습니다. – lharby

답변

9

이렇게하면 JavaScript/프런트 엔드를 사용하여 해결할 수 있습니다. 경로의 URL이 비어 있거나 다음 기능을 실행할 수 있지만 다른 경우에는 기능을 실행하지 않는 search 동일 기본적으로 경우

var path = document.location.pathname; 
path = path.split("/")[1]; // Should return the primary directory 
path = path.toLowerCase(); // This should catch your.tumblr.com/Search and your.tumblr.com/search 
if(path === "" || path === "search")){ 
    console.log('Index or Search page'); 
}else{ 
    // Run your function here 
} 

.

그러나 내가 언급했듯이 이것은 100 % 강력하지 않습니다. 경로가 http://your.tumblr.com/# 일 수 있고 함수가 실패하므로 더 명확한 논리를 작성해야 할 수도 있습니다. 빈 문자열의 경우 path !== " "이라고 말할 수 있습니다.

나는 왜 모든 페이지에 이것을 가지고 있지 않은지 잘 모르겠습니다. 사용자가 사이트의 페이지에 연결되어 있고 인덱스 페이지를 통해 라우팅되지 않는 경우가 아니면 JavaScript 코드가 방대하지 않으면 색인 페이지에서 캐시 될 수 있습니다 (그러나 핫 링크 등의 경우 다른 모든 페이지에서도 계속 사용할 수 있습니다).

편집 아래의 코멘트를, 나는 테스트 텀블러 계정에 기본 예제를 만들었습니다.

코드는 다음과 같습니다

var path = document.location.pathname; 
    path = path.split("/")[1]; 
    path = path.toLowerCase(); 
    if(path === "" || path === "about"){ 
    $('body').css('background','#F09'); 
    console.log('Index or about page'); 
    }else{ 
    $('body').css('background','#FC0'); 
    console.log('Other page'); 
    } 

내가 사용 텀블러 페이지가 여기에 있습니다 : http://sg-test.tumblr.com/

(내가 검색 페이지가 있다고 생각하지 않습니다, 검색 기능을 사용하면 삽입 블록이다 또는 템플릿 내에서 활성화하고 모든 페이지에서 사용할 수 있습니다.)이 함수는 기본적으로 색인 페이지 (빈 기본 디렉토리) 또는 약 페이지 (필요하면 '검색'또는 다른 페이지로 대체)를 확인합니다.

콘솔 로그가 모든 페이지에 출력됩니다. 그리고 path가 index와 일치하거나 body color를 pink로 설정하면 다른 모든 페이지가 주황색이됩니다.

http://sg-test.tumblr.com/about이 논리에 의해 (분홍색 배경)

http://sg-test.tumblr.com/post/134796799695/post-title (오렌지 배경)

내 첫 번째 예에서와 같이, 경로 변수 요구 사항을 충족하는 경우 코드를 실행하는 기능을 적용하기 쉬워야한다 .

앞서 언급 한 것처럼 http://sg-test.tumblr.com/#에 문제가 있습니다. 이것은 여전히 ​​인덱스 페이지이지만 Tumblr이 홈 페이지에 매핑하더라도 빈 디렉토리에 대해서는 false를 반환합니다.

+0

색인 페이지에서 캐싱을해도 상관 없습니다. JS가 색인 또는 검색 페이지에서 실행되는 것을 원치 않습니다. 제가 이야기하는 경우, 사용자는 확실히 개별 게시물 페이지에 연결됩니다. 모든 페이지에 있지만 발사하지 않는 경우 Tumblr 태그로 가능합니까? –

+1

일반적으로 홈 페이지에는 tumblr 태그가 없습니다 (검색 페이지에 대한 태그가 있지만). 일반적으로 템플릿은 전체 사이트에 대한 코드 블록 중 하나입니다. 그래서 제안하는 솔루션은 모든 페이지에서 실행되지만 인덱스 또는 검색 페이지가 아닌 기준을 충족하는 경우에만 함수를 실행합니다. 제가 모범을 보이면 도움이 될까요? – lharby

+0

홈 페이지 이외의 다른 페이지에서 코드를 작동시킬 수 없습니다. 예가 매우 도움이 될 것입니다. console.log()는 홈 페이지에서도 실행되지 않습니다. –

-3

나는이 문제를 내 샌드 박스 블로그에 표시하여 문제가 무엇인지 파악하고 JS 콘솔을 확인할 때 이마 슬랩퍼를 사용했습니다.

{block:Date},date: 

date 앞에 쉼표를 제거하면 올바르게 작동합니다. 더 궁금한 점이 있으면 알려주세요.

+0

필드를 페어링하여 * url * 만 포함하도록 시도했지만 여전히 작동하지 않았습니다. –

+0

페이지를 확인하고 스크립트 태그가 전혀 삽입되지 않았습니까? 이 코드 영역에서 JS 콘솔에 오류가 있습니까? 왜냐하면 내가 앞에서 쉼표를 제거했을 때 스크립트 태그를 잘 삽입했기 때문입니다. – Ally

+0

예, 별도의 창에서 게시 페이지로 브라우저를 열었습니다. 변경 사항을 저장하고 편집기를 종료하고 100 % 확신 할 수 있으며 아직 JS가 표시되지 않습니다. 나는 포스트와 이미지 (foo.tumblr.com/image/123)를보고 JS를 보지 못했다. –