2015-05-21 4 views
6

В настоящее время я работаю над блогом Ghost (Ghost - преемник Wordpress), который основан на Node.js и других различных пакетах/библиотеках на этой платформе), но мне интересно, как я мог бы захватить все сообщения, имеющие определенный тег в Ghost/Handlebars.js.Как найти все сообщения с определенным тегом в Ghost и перебрать их?

Проблема заключается в том, что контексты Ghost обычно инкапсулируются до такой степени, что я не могу извлечь список всех сообщений с определенным тегом из API; это, по-видимому, возможно только для итерации по сообщениям от index.hbs, а другие решения - немного хакерские или требуют более широкого использования jQuery.

Как я могу получить список или массив всех сообщений в Ghost, чтобы я мог фильтровать их по тегу, а затем перебирать их? Я даже пробовал {{#foreach posts}} и {{#has tag='WHATEVER'}}, но этот метод, похоже, не работает из коробки. Как новичок в Ghost and Handlebars, я не уверен, что делать.

ответ

10

В случае, если кто-либо натолкнется на это, это теперь возможно. Вот как вы можете сделать это с помощью помощника ПОЛУЧАЕТЕ:

{{#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

теги: [tag1, tag2] означая сообщения с tag1 и/или tag2 ... как сделать это с возможностью фильтрации по должностям, которые должны быть и то и другое? – dimitrieh

6

Примечание: Этот ответ был верным на момент написания. Помощник {{#get}} был добавлен в ноябре 2015 года и доступен по умолчанию с Ghost 1.0 (Aug 2017). Здесь задокументировано: https://themes.ghost.org/docs/get

Ответ Дэвида теперь должен быть принятым ответом.


Список всех тэгов в настоящее время невозможен, как объясняется в theme documentation FAQ. Это также ссылается на функцию get helper в дорожной карте, которая позволит в будущем.

Один из немногих взломанных возможностей с текущей версией Ghost заключается в том, чтобы использовать JavaScript для получения страниц RSS-ленты и прокрутки каждой страницы, захватывающей теги из каждого сообщения. Это будет работать, но стоит иметь в виду, что разбиение на страницы RSS-канала исчезнет в будущей версии (после того, как API станет полностью доступным, поэтому будет путь миграции).

После освобождения помощника становится простым помощником: {{#get 'tags'}}...do things with tags here...{{/get}}. Эта функция находится в активной разработке.