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