Контекстное редактирование фрагментов, связанных с другими фрагментами

#apostrophe-cms

#apostrophe-cms

Вопрос:

Я искал решение этой проблемы, и единственное, что я видел, это проблема на странице, контекстное редактирование областей, вложенных в элементы массива, не сохраняется. Я обновил apostrophe, но я видел, что это не решает мою проблему.

На моей странице фрагментов, где я показываю поля, результат объединения с другим фрагментом с apos.область o apos.singleton, и это подразумевает, что вы можете редактировать поля, но когда вы перезагружаете страницу или переходите к модальному, чтобы посмотреть, изменилось ли содержимое второго фрагмента, вы видите, что это не так. Но если вы измените содержимое фрагмента, соответствующего странице фрагмента, это, конечно, изменится.

Есть ли в любом случае, чтобы показать содержимое этого поля, но не давая пользователю возможности думать, что оно доступно для редактирования, потому что на самом деле оно не сохраняет изменения при обновлении страницы.

Редактировать

У меня есть этот код в mi indix.js

 module.exports = {
extend: 'apostrophe-pieces',
name: 'newsletter',
label: 'Newsletter',
pluralLabel: 'Newsletters',
addFields: [
  Other fields... ,
  {
    name: 'body',
    label: 'Newsletter Text',
    type: 'area',
    options: {
      widgets: {
        'apostrophe-rich-text': {
          toolbar: [ 'Styles', 'Bold', 'Italic', 'Link', 'Unlink', 'Anchor', 'Table',
           'BulletedList', 'Blockquote', 'Strike', 'Subscript', 'Superscript', 'Split'],
          styles:[
            { name: 'Title', element: 'h3' },
            { name: 'Meta', element: 'h5' }
          ]
        },
        'apostrophe-images': {}
      }
    }
  },
  {
    name: '_articles',
    label: 'Articles',
    type: 'joinByArray',
    withType: 'article',
  },
 ],
};
  

И в show.html на странице информационных бюллетеней у меня есть это

 {{ apos.singleton(article, 'body', 'locked-widget', {
     edit: false
  })
}}
  

Комментарии:

1. Я думаю, что мы пришли к выводу, что edit: false опция должна распространяться лучше. Я немного смущен тем, что у вас есть полная область с несколькими типами виджетов, но шаблон выводит синглтон другого типа. Я бы подумал, что шаблон будет an apos.area , оставляя тип виджета выключенным. Я говорю это, потому что, если вы хотите отобразить только определенный виджет из области соединяемого фрагмента, есть вспомогательные методы, которые могут помочь.

2. Например, есть apos.areas.richText помощник для извлечения всего форматированного текста из области. docs.apostrophecms.org/apostrophe/modules /…

3. Спасибо @alexbea, это сработало для меня! Но не то, чтобы я его использовал, у меня есть другой вопрос, как я могу сделать то же самое для изображений? Я искал некоторые apos.areas.images или что-то в этом роде, но я ничего не видел.

4. Помощники изображений описаны здесь: docs.apostrophecms.org/apostrophe/modules /. … Затем, используя apos.attachments.url то, что вы получаете от этого, вы можете получить URL-адрес изображения. docs.apostrophecms.org/apostrophe/modules /…

Ответ №1:

Изменения в потерянных областях сложнее диагностировать без ограниченного тестового примера, но достаточно просто поместить одноэлементную или (я думаю) область на страницу, но сделать ее недоступной для редактирования. Это будет выглядеть так:

   {{ apos.singleton(data.piece, 'example', 'locked-widget', {
    edit: false
  }) }}
  

Обновлено имя свойства в соответствии с комментарием Стюарта.

Комментарии:

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

2. Я думаю, что объект options должен выглядеть так { edit: false }

3. Да, просто { edit: false } , нет { controls: { edit: false } } . Кроме того, пожалуйста, поделитесь простым тестовым проектом, демонстрирующим исходную проблему, это может быть ошибка, о которой мы еще не знаем, но мне нужно увидеть ее в контексте.

4. @StuartRomanek Я изменил html на тот, который сейчас находится под вопросом. Но все равно создается впечатление, что вы можете его редактировать. Панель инструментов форматированного текста не отображается, возможно, когда вы говорите, что она недоступна для редактирования, не отображается панель инструментов, но должны отображаться строки, которые являются виджетом при наведении курсора мыши?

Ответ №2:

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

 {{ apos.areas.richText(article.body) }}
  

для меня это работает так же, как и для изображений.

 apos.attachments.url(...)