Перед обработкой страницы проанализируйте жидкие переменные в фронте YAML в Jekyll. - PullRequest
0 голосов
/ 11 октября 2018

Я использую jekyll-postfiles плагины, чтобы сделать мою жизнь проще.Этот плагин позволяет мне иметь статический контент в подпапках для моих сообщений в блоге.Например:

_posts/
├── 2018-10-10-a.md
└── 2018-10-11-b/
    ├── 2018-10-11-b.md
    └── b.png

И я могу использовать изображение в качестве локального файла в уценке: ![](b.png) в 2018-10-11-b.md.Этот плагин делает всю магию копирования файла и работы ссылок.

Но теперь я хочу использовать jekyll-seo-tag , и я хочу установить переменные YAML следующим образом:

---
image: "{{ page.url }}b.png"
---

Это просто для создания пользовательских метаданных в файле HTML, я не использую переменную в своем блоге.Но я не могу сделать эту работу.Переменная page.url liquid не раскрывается, и окончательные метаданные выглядят так:

<meta property="og:image" content="myBlog/%7B%7B%20page.url%20%7D%7D%2Fmap.png" />

вместо:

<meta property="og:image" content="myBlog/2018/10/11/b/b.png" />

Это свойство находится в head html-страницы.,Некоторые вопросы здесь, в StackOverflow, показывают, как получить переменную из исходного текста и проанализировать жидкую разметку в теле документа.Мне нужно разобрать разметку жидкости перед обработкой файла уценки.

Можно ли сделать так, чтобы передний материал YAML анализировал переменные жидкости перед обработкой файла?

1 Ответ

0 голосов
/ 14 октября 2018

Мне непонятно, почему передний вопрос должен содержать переменную.

В большинстве случаев вам не нужны переменные в начале.Я думаю, что это также имеет место в вашей ситуации.Я бы переместил переднюю переменную в файл макета.Таким образом, файл макета должен выглядеть следующим образом:

<meta property="og:image" content="myBlog/{{ page.url }}/{{ page.image }}" />

..., а внешний вид должен выглядеть следующим образом:

---
image: "b.png"
---

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

<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">

<title>{% if page.title %}{{ page.title }} | {% endif %}{{ site.title }}</title>
{% assign pagecontent_description = page.content | markdownify | replace: '.', '. ' | replace: '</h2>', ': ' | replace: '</h3>', ': ' | replace: '</h4>', ': ' | strip_html | strip_newlines | replace: '  ', ' ' | truncate: 160 %}
<meta name="description" content="{% if pagecontent_description.size > 10 %}{{ pagecontent_description }}{% else %}{{ site.description }}{% endif %}">

<link rel="shortcut icon" type="image/png" href="/img/icon-196x196.png">
<link rel="shortcut icon" sizes="196x196" href="/img/icon-196x196.png">
<link rel="apple-touch-icon" href="/img/icon-196x196.png">

<!-- Facebook and Twitter integration -->
<meta property="og:title" content="{{ page.title }}"/>
{% if page.image %}<meta property="og:image" content="{{ page.image }}"/>{% endif %}
<meta property="og:url" content="{{ site.url }}{{ page.url }}"/>
<meta property="og:type" content="article">
<meta property="og:image" content="{{ site.url }}{{ page.image }}"/>
<meta property="og:site_name" content="{{ site.title }}"/>
<meta property="og:description" content="{% if pagecontent_description.size > 10 %}{{ pagecontent_description }}{% else %}{{ site.description }}{% endif %}"/>

<meta name="twitter:card" content="summary">
<meta name="twitter:site" content="@{{ site.twitter_url }}">
<meta name="twitter:title" content="{{ page.title }}" />
{% if page.image %}<meta name="twitter:image" content="{{ site.url }}{{ page.image }}" />{% endif %}
<meta name="twitter:url" content="{{ site.url }}{{ page.url }}" />
<meta name="twitter:description" content="{% if pagecontent_description.size > 10 %}{{ pagecontent_description }}{% else %}{{ site.description }}{% endif %}" />

<link rel="canonical" href="{{ page.url | replace:'index.html','' | prepend: site.baseurl | prepend: site.url }}">
<link rel="alternate" type="application/rss+xml" title="{{ site.title }}" href="{{ "/feed.xml" | prepend: site.baseurl | prepend: site.url }}">
<link rel="sitemap" type="application/xml" title="Sitemap" href="{{ "/sitemap.xml" | prepend: site.baseurl | prepend: site.url }}" />

Если у вас есть какие-либо вопросы, пожалуйста, дайте мне знать.

...