Меня уже неоднократно спрашивали в той или иной форме об импорте данных в блоголёт, в частности из xml файла wordpress, или упрощенного html файла, или например xml которые генерируют разные партнерки, типа магазинов, сайт знакомств и прочее. Писать под каждую задачу свой индивидуальный скрипт импорта мне кажется слишком накладным лично для меня - особой выгоды от подобной работы я не вижу, а это работа. Как же быть? Возникла мысль создать универсальный парсер xml для блоголёта, чтобы можно было каким то образом автоматизировать этот процесс для любого xml. И так начну разбор задачи.

Во первых для каждого xml необходимо знать элементы (теги) из которых надо будет делать индивидуальные посты. Например для rss это будет тег item, внутри которого теги раскладывать по свойствам поста - заголовок, контент, рубрики, теги, дата.

Вероятно потребуетстся некий мастер - первый шаг предварительный анализ структуры xml, где галочкой можно было бы пометить тег аналог поста, а также теги аналоги свойств поста. Для поста наверно следует показывать комбобокс полей. Необходим также шаблон собственно для текста поста - более чем вероятно, что контент будет импортироваться не один к одному, а с какими то вставками. Пример таких вставок - фортки анкет сайта знакомств.

Следующим шагом была бы автоматизация импорта на будущее: например раз в день/неделю/месяц скачивать от партнера xml импортировать на основе шаблона посты в блоголёт, расстановка отложенного постинга (посеять время публикации случайным образом, но чтобы например раз в день новый пост).

Задача мне кажется интересной, потому что не тривиальна и содержит возможную монетизацию. Скорее всего плагин будет бесплатный, но поддержка только платная, плюс платные готовые шаблоны, и еще что нибудь. Как пример работы будет импорт из wordpress - так или иначе я планировал сделать подобный импорт, только в частном случае.

Все настройки и шаблоны для конкретного xml можно будет хранить в ini файле: как раз буде указано какой тег за что отвечает, а также например формат - xml или html. Скорее всего так и сделаю, так как возни с мастером и его формами, обработкой форм будет много, когда как вполне очевидно после беглого просмотра xml что за что отвечает. Разве что сделать тестировщик настроек - на входе два файла xml и ini - а на выходе тестовая страница из 10 постов, которые не будут добавлены в существующую базу постов, а будут демонстрировать правильную или ошибочную работу настроек в ini файле.

Вот в таком виде пожалуй и сделаю, и даже добавлю это дело в ядро -будет на странице Обслуживание, страница Импорт.

Соответственно, необходимо и симметричный процесс - экспорт из блоголёта во внешний xml, сделанный по тем же самым принципам. Остается правда открытым вопрос про теги и рубрики: если их указывать в виде текста, а не виде массива чисел id, то их не нужно специально импортироват/экспортировать. Также является открытым вопрос об комментариях - их ведь можно тоже экспортировать/импортировать, хотя речь идет не про партнерки, а про импорт из wordpress. Но это тоже не есть проблема - достаточно в ini указать имя класса, например по умолчанию это будет TPost, а для комментов это TComment, чтобы создавать абсолютно любые объекты в блоголёте, не ограничиваясь только одними постами - не забыть для этого специально добавить кое какие методы для этих классов.

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