2015-05-21 10 views
6

Obecnie pracuję nad blogiem Ghost (Ghost jest następcą Wordpressa, który jest oparty na Node.js i innych różnych pakietach/bibliotekach na tej platformie), ale zastanawiam się, w jaki sposób będę mógł pobrać wszystkie posty, które mają określony znacznik w Ghost/Handlebars.js.Jak znaleźć wszystkie posty z konkretną etykietą w Ghost i iterować nad nimi?

Problem polega na tym, że konteksty Ghosta są zwykle hermetyzowane do tego stopnia, że ​​nie mogę wyodrębnić listy wszystkich postów opatrzonych określonym tagiem poza API; możliwe jest tylko iterowanie przez posty od index.hbs, a inne rozwiązania są nieco hacker-y lub wymagają większego korzystania z jQuery.

W jaki sposób mogę uzyskać listę lub tablicę wszystkich postów w Ghost, dzięki czemu mogę filtrować je według znaczników, a następnie iterować nad nimi? Próbowałem nawet {{#foreach posts}} i {{#has tag='WHATEVER'}}, ale ta metoda nie wydaje się działać po wyjęciu z pudełka. Jako początkujący Ghost i Handlebars, nie jestem pewien co robić.

Odpowiedz

10

W przypadku, gdy ktokolwiek znajdzie się w tym stanie, jest to teraz możliwe. Oto w jaki sposób można to zrobić za pośrednictwem pomocnika otrzymujemy:

{{#get "posts" filter="tags:tagname"}} 
    {{#foreach posts}} 
     <p>{{title}}</p> 
    {{/foreach}} 
{{/get}} 

{{#get "posts" filter="tags:[tag1, tag2]"}} 
    {{#foreach posts}} 
     <p>{{title}}</p> 
    {{/foreach}} 
{{/get}} 
+1

Tagi: [tag1, tag2] oznacza posty z Tag1 i/lub tag2 ... jak to zrobić za pomocą opcji filtrowania na słupach, które muszą posiadać obie? – dimitrieh

6

Uwaga: Ta odpowiedź była prawidłowa w chwili pisania. Pomocnik {{#get}} został dodany w listopadzie 2015 i jest domyślnie dostępny od Ghost 1.0 (sierpień 2017). Jest to udokumentowane tutaj: https://themes.ghost.org/docs/get

Odpowiedź Davida powinna być teraz zaakceptowaną odpowiedzią.


Wyświetlanie wszystkich tagów obecnie nie jest możliwe, jak wyjaśniono w theme documentation FAQ. Dotyczy to również funkcji get helper w mapie drogowej, która umożliwi to w przyszłości.

Jedną z dość hackowatych możliwości z aktualną wersją Ghosta jest użycie JavaScript do pobrania stron z kanałem RSS i przechodzenie przez każdą stronę przechwytywania tagów z każdego postu. To zadziała, ale warto pamiętać, że paginacja kanału RSS zniknie w przyszłej wersji (po tym, jak API stanie się w pełni dostępne, więc będzie ścieżka migracji).

Gdy zwolni się pomocnika, stanie się prostym pomocnikiem: {{#get 'tags'}}...do things with tags here...{{/get}}. Ta funkcja jest w trakcie aktywnego rozwoju.

Powiązane problemy