Как найти все сообщения с определенным тегом в Ghost и перебрать их?


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

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

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

2 6

2 ответа:

В случае, если кто-то еще столкнется с этим, это теперь возможно. Вот как вы можете сделать это с помощью помощника get:

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

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

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

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

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

Как только помощник get будет выпущен, он станет простым помощником: {{#get 'tags'}}...do things with tags here...{{/get}}. Эта особенность находится в стадии активного развития.