Как иметь переменные в Rich Text Editor

У меня есть документ о политике конфиденциальности, который одинаков на многих разных веб-сайтах. Я храню документ в типе содержимого документа с полем Rich Text, называемым «тело». Я хотел бы программно изменить имя и URL-адреса веб-сайта, не дублируя записи.

Я попытался использовать встроенные записи. Например, наличие другого типа контента с именем WebSite и двух полей: заголовка и URL-адреса. Но нет способа получить доступ к каждому конкретному полю в Rich Text, поэтому, когда я анализирую полезную нагрузку, я не знаю, когда использовать заголовок и когда использовать URL-адрес.

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

Каков наилучший способ добиться этого?


person chchrist    schedule 11.01.2020    source источник


Ответы (1)


Вы можете решить это несколькими способами.

Шорткоды, которые вы обычно видите в WordPress, могут быть использованы здесь с большим успехом. Например, размещение [[website_name]] или [[website_url]] в вашем тексте и анализ его во время рендеринга было бы очень простым способом добиться этого.

В качестве альтернативы, если вы пойдете по маршруту встроенного входа...

Если вы извлекаете контент через GraphQL, вы можете получить это, используя следующий синтаксис, вам нужно будет искать запись при разборе RichText, но это дает вам доступ к полям:

content {
    json
    links {
      entries {
        inline {
          sys {
            id
          }
          ... on SiteContentMention { // Have a fragment for each content type you can embed
            title
            url
          }
          __typename
        }
      }
    }
  }

Вы увидите нужные данные в объекте ссылок для этого поля, совпадающего с sys.id

Если вы получаете контент через обычный API доставки контента. Вы увидите нужные данные в поле верхнего уровня include, снова совпадающие с sys.id. Возможно, вам потребуется увеличить значение параметра include. Задокументировано здесь: https://www.contentful.com/developers/docs/references/content-delivery-api/#/reference/links/retrieval-of-linked-items

person Steve Vaughan    schedule 13.01.2020
comment
Да, это может сработать. Единственная проблема, которая у меня есть, это то, что он немного хрупкий. Поскольку я разместил вопрос, я прочитал эти статьи о микрокопиях, чего я хочу избежать, но, с другой стороны, может быть, это менее подвержено ошибкам? contentful.com/r/knowledgebase/dynamic-microcopy levelup.gitconnected.com/ contentful.com/blog/2019/05/31/ - person chchrist; 13.01.2020
comment
Я думаю, все сводится к тому, как вы управляете кодом, отображающим содержимое RichText. Если подход с коротким кодом кажется ненадежным из-за того, что существует множество сайтов, которые отображают содержимое RichText, и вам придется поддерживать каждый из них кодом, необходимым для отображения ссылок веб-сайта, тогда подход, описанный в этой статье, может работать лучше для вас. Если это общая кодовая база, то я бы сказал, что подход с коротким кодом хорош, если код введен неправильно в Contentful, то его легко обновить. - person Steve Vaughan; 13.01.2020