2014-07-23 14 views
9

Ich benutze Assembly.io für eine einfache statische Website, aber habe Probleme mit dem Tag {{title}}. Hier ist ein grober Überblick über das Problem.Kontext von {{title}} in Master-Vorlage bei der Verwendung mehrerer Daten/JSON-Dateien mit Assembly

Hier ist meine layout.hbs:

<!DOCTYPE html> 
<html> 
    <head> 
    <title>{{title}}</title> 
    </head> 
    <body> 
    <!-- the body tag is used to "pull in" content from pages --> 
    {{> body }} 
    </body> 
</html> 

I 2 json Dateien für Daten:

foo1.json

{ 
    "title": "Hello world I am title 1" 
} 

foo2.json

{ 
    "title": "I am a different title" 
} 

Und ich habe 2 Seiten:

foo1.hbs

{{#foo1 }} 
{{> module1 }} 
{{> module2 }} 
{{> module3 }} 
{{/foo1 }} 

foo2.hbs

{{#foo2 }} 
{{> module1 }} 
{{> module2 }} 
{{> module3 }} 
{{/foo2 }} 

Mein gruntfile.js Schnipsel:

options: { 
    layout: "src/responsive/layouts/layout.hbs", 
    partials: 'src/responsive/modules/**/*.hbs', 
    data: 'src/responsive/data/**/*.json', 
    flatten: false 
}, 
pages: { 
    expand: true, 
    cwd: 'src/responsive/pages', 
    src: '**/*.hbs', 
    dest: 'src/' 
} 

Wenn ich 'grunt assemble' laufe bekomme ich keinen Seitentitel. Ich denke, das hat etwas mit Kontext zu tun, als ob ich {{title}} in layout.hbs zu {{foo1.title}} ändern oder {{foo2.title}} es funktioniert, aber dann beide Seiten erhalten den gleichen Titel wie sie diese Vorlage teilen.

Wie kann ich den Kontext von {{title}} in layout.hbs funktionieren für alle JSON-Dateien, die übergeben werden?

A.

+0

Ich habe versucht {{page.title}}, aber dann beide den Titel von foo1.json – Adi

+0

zurückgeben Ich habe auch versucht {{this.page.title}}, aber beide Ergebnisse gibt den Titel von foo1.json zurück. Wenn man Seiten kompiliert, verwendet es alle concat alle JSON-Dateien und verwendet sie für jede Seite? Ich dachte, es gäbe eine 1: 1-Beziehung zwischen Page und Json, wenn sie den gleichen Namen hätten? – Adi

+1

Sind Sie sicher über '{{page.title}}'? Es funktioniert bei mir richtig mit deinem Beispiel. – raidendev

Antwort

3

@Adi ich ein Setup repo here die Struktur enthält, die Sie beschrieben.

Ich habe gerade this code in layout.hbs geändert und es funktioniert wie erwartet.

Wenn Sie ein Repo haben, das wir betrachten können, könnte es helfen, das Problem aufzuspüren.

Hoffe, das hilft.

+0

Sie können das Repo hier finden: https://github.com/adrianjacob/assemble-546 Wenn Sie sich ansehen src/index.html und src/insurance/index.html können Sie sehen, dass sie nach dem Ausführen von 'grunt assemble' den gleichen Titel verwenden.Sie sollten jedoch unterschiedliche Titel haben, wenn Sie sich die json-Dateien ansehen. Prost, A. – Adi

+0

Momentan verwendet Assemble nur den Basisnamen der Dateien, um den Abgleich durchzuführen. Die zweite Indexdatei überschreibt also die Daten in der ersten Indexdatei. Außerdem haben Sie 'foo.json' im Versicherungsordner anstelle von' index.json'. Versuchen Sie, 'insurance/foo.hbs' 'insurance/index.hbs' zu ändern und Sie sollten den Titel ändern sehen. – doowb

+0

Was würden Sie tun, wenn Sie eine index.html und eine Versicherung/index.html rendern möchten? Gibt es einen Plan, den Abgleich auch anhand von Ordnern durchzuführen? – Adi