CMS: синхронизировать ссылки на внутренние страницы в содержимом страницы - PullRequest
1 голос
/ 11 октября 2010

Я сделал эту скромную CMS в PHP (и Zend Framework).

Содержимое страницы опубликованного веб-сайта хранится в поле MySQL TEXT. При редактировании содержимого страницы можно создавать ссылки на другие внутренние страницы веб-сайта.

Слизни страниц (SEO uri's) также доступны для редактирования в CMS.

Каков хороший способ синхронизации внутренних ссылок в контенте, когда конечный пользователь CMS изменяет слаг страницы, с которым связана ссылка?

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

Заранее спасибо.

PS .: Это не должно быть указано в PHP / MySQL. Просто глобальная концепция, вероятно, подойдет, если только это не является чем-то непонятным, с которым PHP / MySQL, конечно, не в состоянии справиться.

Ответы [ 2 ]

1 голос
/ 12 октября 2010

Вот как к этому подходят некоторые системы управления контентом, и в целом это кажется наилучшим балансом по производительности во время выполнения, времени редактирования и управляемости:

Вести таблицу страниц и ссылок:

|PageID    |LinksToID    |
|----------|-------------|
|1         |2            |
|1         |3            |
  1. Когда вы сохраняете страницу (foo), найдите все ссылки на этой странице (не очень интенсивно), найдите, куда ссылается каждая из них (тривиально, поскольку, конечно, ваши страницы проиндексированы по URL, верно?).
  2. Заполните эту таблицу этой информацией (на странице 1 есть ссылки на страницы 2 и 3).
  3. Когда страница 3 будет переименована, вернитесь к этой таблице и вытяните все страницы, которые ссылаются на нее; найдите в их содержимом URL-адреса на странице 3, замените и обновите.

Не влияет на время выполнения, а влияние на время редактирования оптимизируется. И вы получите удобную, простую для запроса карту всех перекрестных ссылок на вашем сайте. Бонус!

0 голосов
/ 11 октября 2010

Опция 1:

Поиск содержимого для URL-адресов слагов при вставке / обновлении содержимого и сохранение их в таблице, которая связывает URL-адреса слагов с их идентификаторами и идентификатором содержимого.('slug_content_map')

Затем вы можете добавить метод, который заменяет старый URL-адрес slug новым URL-адресом slug в содержимом при обновлении URL-адреса, если содержимое имеет запись в 'slug_content_map'.

Вариант 2:

При вставке / обновлении содержимого замените URL-адреса slug строкой, такой как {slugId: 3}, а затем динамически замените ее при отображении содержимого.Этот метод имеет больше накладных расходов при отображении контента, так как вам придется искать слаг для его замены.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...