dimayakovlev.ru


Прямое редактирование содержания страниц в GetSimple CMS

Для хранения текстового контента и всех данных страниц веб-сайта в GetSimple CMS используется формат XML. При этом каждой странице соответствует свой XML-документ, содержащий в себе полный набор данных страницы.

В свою очередь, XML-документы страниц хранятся в виде отдельных текстовых (xml) файлов в файловой системе веб-сервера. Это значит, что редактирование данных выбранной страницы, хранящихся в соответствующем XML-документе, может быть выполнено напрямую, с использованием доступного текстового редактора, не обращаясь к использованию графического пользовательского веб-интерфейса редактора страниц GetSimple CMS или иного специализированного программного обеспечения. При этом можно не только изменять уже содержащиеся в XML-документе данные, но и добавлять новые, не прибегая для к разработке и использованию дополнительных плагинов.

Для понимания процесса редактирования и добавления собственных данных в XML-документах страниц веб-сайта, необходимо рассмотреть стандартный XML-документ, формируемый GetSimple CMS версии 3.3 при создании новой страницы:

<?xml version="1.0" encoding="UTF-8"?>
<item>
  <pubDate>Sun, 13 Nov 2016 20:25:49 +0300</pubDate>
  <title><![CDATA[XML]]></title>
  <url><![CDATA[xml]]></url>
  <meta><![CDATA[xml, язык, документ, разметка]]></meta>
  <metad><![CDATA[eXtensible Markup Language - расширяемый язык разметки]]></metad>
  <menu><![CDATA[XML]]></menu>
  <menuOrder><![CDATA[1]]></menuOrder>
  <menuStatus><![CDATA[Y]]></menuStatus>
  <template><![CDATA[template.php]]></template>
  <parent><![CDATA[]]></parent>
  <content><![CDATA[&lt;p&gt;XML разрабатывался как язык с простым формальным синтаксисом, удобный для создания и обработки документов программами и одновременно удобный для чтения и создания документов человеком, с подчёркиванием нацеленности на использование в Интернете. Язык называется расширяемым, поскольку он не фиксирует разметку, используемую в документах: разработчик волен создать разметку в соответствии с потребностями к конкретной области, будучи ограниченным лишь синтаксическими правилами языка.&lt;/p&gt;
]]></content>
  <private><![CDATA[]]></private>
  <author><![CDATA[dmitry]]></author>
</item>

С физической точки зрения, представленный XML-документ состоит из сущностей, содержание которых – символы. При этом символы разделятся на два типа: символьные данные и разметка. К разметке принадлежат теги, обозначающие границы элементов, а также последовательности символов, обрамляющие секции CDATA. Оставшаяся часть документа, не принадлежащая к разметке, составляет символьные данные XML-документа.

С логической точки зрения, представленный XML-документ, состоит из корневого элемента и вложенных в него элементов, содержащих символьные данные.

В общем случае в XML-документах символьные данные могут находиться внутри элементов как непосредственно, так и в специальных секциях CDATA, использование которых является одним из решений проблемы неоднозначности разметки, которая заключается в том, что употребление разметочных символов <, > и & внутри символьных данных, затрудняет распознавание конструкций разметки. Кроме использования секций CDATA, рассмотренная проблема решается при формировании символьных данных путём замены перечисленных разметочных символов соответствующими специальными сущностями: &lt;, &gt; и &amp;.

Как видно из приведённого примера, в GetSimple CMS при сохранении в XML-документ символьных данных, для большинства элементов используются секции CDATA.

Кроме того, существуют правила, определяющие допустимые в языке XML форматы имён для элементов. А именно: все имена должны начинаться с буквы, символа нижнего подчёркивания или двоеточия и продолжаться только допустимыми для имён символами – буквами, входящими в секцию букв кодировки Unicode, арабскими цифрами, дефисами, знаками подчёркивания, точками и двоеточиями. При этом имена элементов не могут начинаться со строки «xml» не зависимо от регистра символов. Данное ограничение связано с тем, что такие имена зарезервированы для использования консорциумом W3C.

Зная перечисленные правила и ограничения, можно перейти непосредственно к редактированию XML-документа соответствующей страницы веб-сайта. При этом важно, чтобы используемый текстовый редактор обладал поддержкой кодировки UTF-8, которая используется при создании XML-документов в GetSimple CMS.

Например, если стоит задача изменить заголовок страницы, время последнего изменения страницы и назначить новый шаблон оформления, необходимо изменить содержание стандартных элементов title, pubDate и template, то есть изменить их символьные данные. При этом элементы title и template содержат символьные данные внутри секций CDATA, в то время, как символьные данные элемента pubDate находятся непосредственно внутри элемента.

После внесения всех требуемых изменений, достаточно сохранить XML-документ и проверить корректность отображения соответствующей страницы веб-сайта в браузере.

Добавление собственных нестандартных элементов в XML-документы страниц может быть продиктовано различными потребностями в представлении и описании контента. Например, при создании новой страницы, GetSimple CMS сохраняет в качестве автора страницы учётную запись пользователя, используя для этого элемент XML-документа author. Однако при выводе имени автора страницы желательно использовать настоящее имя, для хранения которого необходимо добавить в XML-документ новый элемент - это может быть элемент с именем authorName. Кроме того, при заимствовании публикуемого на странице контента, может потребоваться добавление дополнительных элементов, таких как адрес веб-сайта автора, адрес электронной почты, Skype и т.п.

Для получения данных, хранящихся в нестандартных элементах XML-документов страниц, могут использоваться стандартные функции GetSimple CMS returnPageField() и getPageField(). Например, для получения значения элемента authorName, заданного для текущей страницы, в файле шаблона оформления страницы может быть использован PHP-код:

<?php
  echo '<p>Автор: '.returnPageField(get_page_slug(false), 'authorName').'</p>';
?>

Однако, при внесении изменений в содержание XML-документов страниц веб-сайта вручную, кэшированные данные страниц не обновляются. Это приводит к тому, что при использовании функций, работающих с кэшированными данными страниц, например рассмотренных, returnPageField() и getPageField(), будут возвращаться устаревшие данные. Эта проблема решается путём удаления, автоматически создаваемого GetSimple CMS, файла /data/other/pages.xml, содержащего кэш данных всех страниц веб-сайта. Исключение составляет внесение изменений в содержание элемента content, после которого удаление кэшированных данных не требуется.

Не смотря на удобство и широкие возможности, предоставляемые рассматриваемым методом управления содержанием страниц веб-сайта, главным недостатком ручного редактирования XML-документов с добавлением дополнительных элементов, является потеря данных хранящихся в этих элементах, происходящая при последующем редактировании и сохранении соответствующих страниц с использованием графического пользовательского веб-интерфейса панели управления GetSimple CMS. В качестве одного из возможных вариантов решения данной проблемы может рассматриваться использование плагина Custom Fields, настроенного для работы с необходимым набором дополнительных элементов XML-документов страниц веб-сайта.

Следует иметь в виду, что все дополнительные элементы XML-документов страниц при необходимости могут быть удалены, но удаление стандартных элементов может привести к возникновению ошибок в работе системы управления контентом, а также к возможной потере данных и нарушению структуры веб-сайта. Для того, чтобы чётко отделить дополнительные элементы от стандартных, предотвращая их возможное ошибочное удаление, на этапе проектирования веб-сайта могуть быть определены специальные правила именования дополнительных элементов, например, с использованием специальных префиксов.

Таким образом, используя возможность ручного редактирования содержания XML-документов, соответствующих страницам веб-сайта, возможно перейти к полному управлению содержанием веб-сайта без использования графического пользовательского веб-интерфейса панели управления системы управления контентом GetSimple CMS. Кроме того, данный подход позволяет автоматизировать процессы создания или внесения множественных изменений в страницы веб-сайта, используя специализированное программное обеспечение.

Отдельно стоит отметить, что рассмотренная простота и доступность работы с контентом веб-сайта при прямом редактировании XML-документов, демонстрирует практическое преимущество использования flat file системы управления контентом, избавляя пользователя от необходимости работы с системами управления базами данных.