Легкое обновление CMS редактирует в файле с PHP - PullRequest
2 голосов
/ 18 июля 2011

Некоторые примеры «легких» систем управления контентом:

Их объединяет то, что вы просто добавляете определенное имя класса к частям вашей веб-страницы, которые хотите сделать редактируемыми. В серверной части они каким-то образом сохраняют отредактированные фрагменты обратно в файл, который вы редактировали (без базы данных).

Пример исходного контента и отредактированного контента:

Оригинальный код HTML

<div class="editable">

<ul>
<li>an</li>
<li>unordered list</li>
</ul>

</div>

Отредактированный HTML-код

<div class="editable">

<ol>
<li>an</li>
<li>ordered list</li>
</ol>

</div>

Интерфейс для меня довольно понятен, но как мне лучше использовать бэкэнд (PHP)?

Мне нужно убедиться, что динамический код PHP продолжает работать, поэтому я не могу просто обновить весь файл.

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

EDIT

Я заявил, что не хочу использовать PHP DOM, но все изменилось. И Surreal CMS, и CushyCMS используют его, что является хорошим показателем того, что это путь.

Проблема с PHP DOM, с которой я сталкиваюсь, заключается в том, что я не могу заменить только частью оригинального документа, отредактированного пользователем. При загрузке исходного файла PHP DOM будет делать нежелательные вещи с документом, такие как изменение метатега, преобразование одинарных кавычек в двойные кавычки, ...
Теперь, для отредактированной части это хорошо, но для остальной части документа это неприемлемо, поскольку это должно остаться нетронутым (пользователь не отредактировал это, верно).

Кажется, что Cushy и Surreal знают, как остановить PHP DOM от прикосновения к остальной части документа, но я не знаю. Так что, если вы знаете, дайте мне знать.

Ответы [ 3 ]

2 голосов
/ 19 июля 2011

Ваш вопрос немного расплывчат, но, возможно, это поможет вам:

Часть A: Редактирование

Чтобы отредактировать свои легкие страницы, вы должны добавить на страницу некоторый JavaScript. Этот javascript ищет все элементы с «редактируемым» классом и устанавливает их в редактируемые (посмотрите на свойство contentEditable для этого как на очень базовую отправную точку).

Сохраняйте некоторую идентификацию отредактированного элемента, например, id, xpath или индекс. Чтобы сохранить тексты, просто перенесите их на свой сервер.

Часть B: сохранение в файл

Вы можете хранить фрагменты в базе данных, но я предполагаю, что вы хотите изменить файл напрямую. Для этого вы просто заменяете содержимое каждого элемента на то, что вы получили через AJAX. Чтобы найти элементы в исходном коде, вы должны будете использовать что-то вроде PHP SimpleDOM (это также означает, что HTML-страницы являются действительными XHTML).

Просто найдите элемент, запишите изменения, запишите файл, все готово.

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

РЕДАКТИРОВАТЬ: только что увидел, что ваш "PHP-код должен продолжать работать" часть вопроса. Рассмотрим для этого какое-то волшебство с регулярными выражениями - замените каждый /(<?.*?>)/ текстовым заполнителем (например, "-PHPCODE- $ i-") и после обновления дерева dom замените эти заполнители обратно. В любом случае, тяжелая работа.

1 голос
/ 05 мая 2013

Когда вам нужно отредактировать всего несколько текстов, есть новая очень простая утилита CMS - Minorit .Его можно использовать на старых сайтах без изменения логики, без установки.

1 голос
/ 19 июля 2011

Ваш вопрос слишком расплывчат для лучшего пути, и мой путь может быть одним хорошим из 10 хороших способов, и они все еще не самый лучший. Для некоторых мой путь будет даже один из 100 плохих путей.

Об этом атрибуте class="editable": Вы не можете использовать эти серверные части с PHP. Я не знаю этих легких CMS, но они, вероятно, используют Javascript / AJAX, который нацелен на класс и, возможно, добавляет кнопку редактирования.

UDPATE Да, действительно, эти "легкие CMS" изменяют файл веб-страницы. Ну, вот в чем дело. Это не CMS, а онлайн-редакторы HTML. В этом случае best - это DOM Document, который по какой-то причине вам не нужен.

...