Включите частичные рули, когда они существуют на основе контекста в Ghost - PullRequest
0 голосов
/ 11 марта 2020

У меня есть настроенная тема для Ghost . Я иногда навещаю приглашенного автора. Мне бы хотелось иметь возможность включать любое количество пользовательских ссылок на страницу авторов для каждого автора.

Мне известно соглашение authors-{{slug}}.hbs, которое я мог бы использовать для создания полной пользовательской страницы для каждого автора, но поддерживать это кошмар.

Вместо этого я пытался включить частичное, когда оно существует. Согласно документам руля {{#> partial }} должно работать. Но это работает, когда я знаю точное имя частичного.

Мне нужно, чтобы имя частичного было динамическим c в зависимости от контекста. В моем случае призрачный слизень для автора. Согласно документам на руль мне нужно передать функцию ...

enter image description here

Я пробовал несколько способов, но gscan не любит их всех:

 {{#> (concat "partials/socials-" slug) }}
 {{#> (concat "partials/socials-" (lookup . 'slug')) }}
 {{#> concat "partials/socials-" (lookup . 'slug') }}
 {{#> "partials/socials-{{slug}}" }}
 {{#> partials/socials-{{slug}} }}

Все дают мне:

Checking theme compatibility...

Your theme has 1 error!
----

Errors
------
Important to fix, functionality may be degraded.

- Error: Templates must contain valid Handlebars
Files: author.hbs

1 Ответ

2 голосов
/ 12 марта 2020

Вы раньше использовали блоки контента? Это способ повторно использовать шаблонный код, но он по-прежнему допускает настройку, это метод, используемый в Casper, из которого вы разветвились. Проверьте эти строки здесь в page.hbs: https://github.com/jessehouwing/jessehouwingnl-Casper/blob/customized/page.hbs#L58 -L65

, а также эту строку, показанную в default.hbs: https://github.com/jessehouwing/jessehouwingnl-Casper/blob/customized/default.hbs#L127

Что вы можете сделать, это создать собственный шаблон автора, который наследует существующий шаблон author.hbs. В этом примере я собираюсь создать собственную страницу автора для автора 'ghost', создав author-ghost.hbs:

{{!< author}}

{{#contentFor "links"}}
  <ul>
    <li><a href="https://example.com">Example link</a></li>
    <li><a href="https://example.com">Example link</a></li>
    <li><a href="https://example.com">Example link</a></li>
  </ul>
{{/contentFor}}

Приведенный выше код наследует author.hbs и создает блок с именем links. Затем в исходном шаблоне author.hbs мы можем добавить ссылку на блок, где мы хотим, чтобы содержимое блока отображалось:

{{{block "links"}}}

Это не только вставит код в пользовательский шаблон автора, но и Также изменится без вывода, если для автора нет пользовательского шаблона автора.

Надеюсь, это поможет!

...