2013-11-09 1 views
6

iron-router를 사용할 때 HTML 제목을 가장 잘 설정하는 방법은 무엇입니까? 내가하고 싶은 것은 다음과 같습니다.iron-router를 사용할 때 HTML 제목을 설정하십시오

KAZOOM이 다시 HTML 제목을 설정하는 방법을 알 수 있습니까? 내가 그렇게하는 이유는 HTML 제목이 콘텐츠의 일부라고 생각하기 때문입니다. 그것을 생성 한 템플릿을 편집하여 페이지의 HTML 제목을 조정할 수 있으면 좋을 것입니다. 불행하게도 이것을 달성 할 수있는 확실한 방법은 없습니다. 내가 생각할 수있는 가장 가까운 것은 yield라고 이름 지어 질 것입니다. 그러면 제목은 경로에 의해 설정되고 템플릿에 의해 설정되지는 않습니다.

<template name="head"> 
    <head><title>{{this}}</title></head> 
    {{> menu}} 
</template> 

<template name="example"> 
    {{> head 'example page'}} 
    That's just an example page 
</template> 

<template name="foo"> 
    {{> head 'foo page'}} 
    Another example page with different HTML title 
</template> 

아주 좋은되지 않습니다 :

다른 가능성은 레이아웃 템플릿을 포기하고 항상 헤더를 포함하는 것입니다. 이 문제에 대한 적절한 해결책이 있습니까? 철 라우터 onAfterRun document.title이

+1

답변은 여기에서 찾을 수 있습니다 : http://stackoverflow.com/questions/14036248/meteor-setting-the-document-title –

답변

16

설정 :

var pageTitle = 'My super web'; 
Router.map(function() { 
    this.route('user', { 
     onAfterRun: function() { 
     document.title = 'User ' + this.params.name + ' - ' + pageTitle; 
     } 
    }); 
}); 

편집 :

사용자 정의 핸들 바 헬퍼 (클라이언트 코드)를 작성, 템플릿에 제목을 설정하려면 :

Handlebars.registerHelper("KAZOOM", function(title) { 
    if(title) { 
     document.title = title; 
    } else { 
     document.title = "Your default title"; 
    } 
}); 

템플릿으로 사용하십시오.

,451,515,
{{KAZOOM 'example page'}} 

또는 기본 제목

{{KAZOOM}} 

. 내가 iron-router 0.7.1을 사용하고

Router.route('/user', { 
    onAfterAction: function() { 
    document.title = 'page title'; 
    } 
}); 
+0

고마워요, 이것은 정적 제목에 적용됩니다. 나는 여전히 다른 모든 텍스트와 마찬가지로 템플릿에 제목을 설정하는 것을 선호합니다. – sba

+1

정적 제목이란 무엇입니까? 나는 대답을 업데이트했다. –

+3

패키지를 사용하지 않는 이유는 무엇입니까? [iron-router-title] (https://atmospherejs.com/ostrio/iron-router-title)? –

10

:

EDIT (26) Jully 2015 : 같은 새로운 철 라우터 것이 보일 것이다.

그리고는 libs/router.js 내 모든 경로를 처리

Router.onAfterAction(function() { 
     document.title = 'My Site - '+this.route.name; 
     } 
); 

이있다, 그래서 나는 모든 경로에 넣을 필요가 없습니다.

+0

this.route.getName()이 (가) 지금은 – IGx89

3

저는 title 속성을 경로 정의와 함께 저장하는 것을 선호합니다.

이 문제에 @nullpo에 의해이 도움이 https://github.com/iron-meteor/iron-router/issues/292#issuecomment-38508234

Router.route('/admin/users', { 
    name: 'admin_users', 
    template: 'admin_users', 
    title: 'User Manager' 
    data: function() { 
     return Meteor.users.find(); 
    }, 
    waitOn: function() { 
     return Meteor.subscribe('users_admin'); 
    } 
}); 

Router.after(function(){ 
    if (this.route.options.title) 
     document.title = this.route.options.title + ' - my cool site'; 
}); 

희망을 제안한 것처럼

.

+0

입니다. 나에게 가장 좋은 대답입니다!title 매개 변수가 반응 변수를 사용하면 재평가되지 않습니다. 그런 종류의 기능을 원한다면 무엇이 가장 좋은 해결책일까요? – Wonko