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

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

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

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

2 ответа

Решение

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

{{#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 (август 2017 года). Это задокументировано здесь: https://themes.ghost.org/docs/get

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


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

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

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

Другие вопросы по тегам