Вопрос:

Как установить заголовок / мета-описание Ghost Blog Custom Routes.yaml в моем шаблоне?

ghost-blog

207 просмотра

2 ответа

1013 Репутация автора

Используя файл Ghost blog rout.yaml, можно использовать блок коллекций, чтобы создать собственную коллекцию, созданную из некоторых тегов и / или других данных. Вы также можете указать этой коллекции использовать собственный шаблон темы, см .:

  1. https://docs.ghost.org/tutorials/creating-content-collections/
  2. https://docs.ghost.org/concepts/routing/#content-structure

Например:

collections:
  /example/:
    permalink: /example/{slug}/
    controller: channel
    filter: tag:example-tag
    template:
      - example

Все вышеперечисленное работает, и моя коллекция правильно использует мой новый exampleфайл темы.

Проблема в том, что в отличие от теговой страницы (для example-tag) моя новая пользовательская коллекция не имеет легко документированного способа работы с заголовком и т. Д.

Он не извлекает описание заголовка / мета из тега, использованного для создания коллекции (что было бы хорошо для коллекций, созданных из отдельных тегов). В попытке обойти это я попробовал несколько {{#has}}утверждений, но не могу понять, в какой контекст будет вписываться пользовательский маршрут.

В приведенном выше примере router.yaml заголовок пользовательской коллекции заканчивается как «Имя моего сайта (Страница 1)», а мета-описание отсутствует.

Эта проблема также распространяется на данные Open Graph, в которых указан идентичный заголовок, а также нет описания для пользовательской коллекции.

Я полагаю, что для этого можно использовать свойство данных, присоединенное к файлу rout.yaml (см .: https://docs.ghost.org/concepts/routing/#data ), но я не нашел решение на данный момент.

Хотя мои первоначальные попытки найти решение не увенчались успехом, это лучшая ссылка, которую я видел на эту проблему:

  1. https://forum.ghost.org/t/dynamic-routing-page-post-data-context-in-default-hbs-nested-navigation-on-custom-collections/4204
  2. https://github.com/TryGhost/Ghost/issues/10082
Автор: Necevil Источник Размещён: 03.02.2019 12:08

Ответы (2)


0 плюса

2116 Репутация автора

Это возможно только с помощью обходного пути, описанного в выпуске: https://github.com/TryGhost/Ghost/issues/10082

Обычно делают следующее:

  1. Пример создания страницы (с примером slug ) и заполните заголовок и описание метаданных, которые вы хотите
  2. в router.yaml измените определение вашей коллекции / пример / добавьте следующее: data: page.exampleчтобы связать корень вашей коллекции с указанной страницей
  3. Теперь в вашем определении шаблона example.hbs вы можете использовать, например, {{#page}} {{content}} {{/page}}тег для вставки содержимого со своей страницы. Вы можете сделать это также в шаблоне default.hbs, который включен в ваш файл example.hbs. Так что замените: <title>{{meta_title}}</title>в default.hbs следующим:
{{#unless page}}
  <title>{{meta_title}}</title>
{{else}}
  {{#page}}
    <title>{{meta_title}}</title>
    <meta name="description" content="{{meta_description}}"/>
  {{/page}}
{{/unless}}

Это установит конкретный заголовок / описание для корневых страниц вашей коллекции в общем виде. Генерировать метаданные schema.org можно аналогичным образом. К сожалению, метаданные Facebook и Twitter сделать не так просто, так как {{ghost_head}}тег default.hbs уже вставляет метаданные сайта на эту страницу. Последнее замечание: кроме того, {{meta_title}}и {{meta_description}}я полагаю, вы можете использовать все поля метаданных, определенные здесь .

Автор: Marek Gregor Размещён: 20.02.2019 02:44

0 плюса

752 Репутация автора

Я нашел способ обойти.

  1. Вы создаете страницу с именем exampleв инструменте Ghost Admin.
  2. Настройте маршруты (вместо коллекций) в routs.yaml следующим образом:
routes:
  /example/:
    controller: channel
    filter: tag:example-tag
    template: example
    data: page.example

Page.example будет использовать метаданные этой страницы в Ghost.

Автор: xiaoke Размещён: 21.05.2019 11:58
Вопросы из категории :
32x32