Как найти все сообщения с определенным тегом в 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:
{{#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}}
. Эта особенность находится в стадии активного развития.