Удаление дублей новостей по доп полям или по заголовку новости + редирект с удаленных материалов

Сайты бывают разные, и если на киношках дублей материалов бывает не много, то на варезниках, особенно где настроен парсинг новостей, может быть большое количество полных дублей. Проблема ещё была и в том, что на сайте не использовались доп поля, и пришлось делать плагин для поиска дублей не только по доп полям, но и по заголовкам. Так же, чтобы удаленные материалы не давали пользователям и поисковым системам 404, была добавлена возможность ставить редирект с удаленных материалов пачки на новость, которая остается…


🎯 Основные возможности
1. Поиск дубликатов по двум критериям:
- 🔍 По дополнительным полям (xfields) - поиск дубликатов по значениям дополнительных полей
- 📝 По заголовкам (title) - поиск дубликатов по точному совпадению заголовков
2. Управление найденными дубликатами:
- ✅ Отправка на модерацию - перевод выбранных новостей в статус "На модерации"
- ❌ Удаление дубликатов - полное удаление выбранных новостей из базы данных
- 🔗 Автоматические редиректы - создание редиректов при удалении дубликатов
3. Гибкая настройка поиска:
- Фильтр по категориям - поиск только в выбранных категориях
- Настройка пагинации - отображение по 10, 20 или 50 групп дубликатов на странице
- Выбор дополнительных полей - автоматическое определение всех текстовых полей из xfields
🛠 Технические особенности
Поддержка разных версий DLE:
- Для DLE 19.0+: Использует JSON формат файла `xfields.json` и класс `DLEXFields`
- Для старых версий: Использует TXT формат файла `xfields.txt` и функцию `xfieldsdataload()`
- Автоматическое определение - плагин сам определяет версию DLE и использует соответствующие методы
Интеллектуальная обработка редиректов:
// Формат URL в DLE: /ID-alt_name.html
function getNewsUrl(/uploads/mini/noimage.jpg) {
if (!empty($alt_name)) {
return "/{$id}-{$alt_name}.html";
}
return "/{$id}.html";
}
Безопасное удаление с сохранением SEO:
- При удалении дубликата создается 301 редирект на оставшуюся новость
- Редиректы добавляются в стандартную таблицу DLE `{prefix}_redirects`
- Сохраняются все входящие ссылки на удаленные материалы
Подробное логирование:
- Все операции записываются в `engine/data/dubl_log.txt`
- Лог содержит:
- Дата и время операции
- ID пользователя
- Тип операции (удаление/модерация)
- Детальную информацию об удаленных новостях
- Информацию о созданных редиректах
- Параметры поиска
📊 Интерфейс плагина
1. Тип поиска - выбор между поиском по допполям или заголовкам
2. Дополнительное поле - список всех текстовых полей из xfields (показывается только при поиске по допполям)
3. Категория - фильтр по категориям (все категории или конкретная)
4. Количество на странице - настройка пагинации
5. Чекбокс "Добавлять редирект" - включение/выключение создания редиректов
Результаты поиска:
- Группировка дубликатов по общему значению
- Отображение для каждой новости:
- ID новости
- Заголовок с ссылкой
- Дата публикации
- Значение дублирующего поля
- Статус (опубликовано/на модерации)
- Чекбокс для выбора
⚙️ Установка
1. Установите плагин через стандартную систему DLE
2. В админ-панели появится новый раздел "Dubl"
🔧 Технические требования
PHP: 5.6 и выше
MySQL: 5.0 и выше
DLE: 13.0 и выше (полная поддержка с 19.0+)
🎨 Особенности реализации
// Автоматическое определение версии DLE
function loadXfieldsData($xfields_string) {
if (class_exists('DLEXFields')) {
return DLEXFields::xfieldsdataload($xfields_string);
} else {
return xfieldsdataload($xfields_string);
}
}
Интеллектуальная обработка:
- Группировка дубликатов по значениям
- Автоматическое определение оставшейся новости для редиректа
- Пакетная обработка данных для оптимизации памяти
Плагин полностью готов к использованию и представляет собой профессиональное решение для управления дубликатами контента в системе DLE с полным сохранением SEO-оптимизации и удобным интерфейсом для администраторов.
Автор изначального кода: @xirecx
Модификация: byroot
Скачать оригинальный плагин от @xirecx:
Скачать модифицированный плагин с поиском дублей па заголовку и возможностью создавать редиректы* на удаленные материалы:
*Редирект работает только с типом ЧПУ 1/2.
Все скриншоты новости:





