Image Cleaner is a free module for ocStore/OpenCart designed to locate and delete unused images from the /image/catalog/ directory. This module helps keep your website optimized by freeing up disk space, removing images that are not linked to products, categories, banners, manufacturers, informational pages, or blogs.
The module has been thoroughly tested on a live website running on a local server and virtual hosting with ocStore 3.0.3.7 + PHP 7.3. It integrates into the admin panel, adding a menu item called "Image Cleanup" to initiate the scanning and deletion of unused images.
Image Cleaner Utility is a straightforward module for ocStore (or OpenCart) online stores, designed to find and remove unnecessary images from the /image/catalog/ directory.
If you're unfamiliar with PHP, databases, FTP, or OCMOD, this document should guide you. Feel free to ask questions or consult a coding specialist.
Why is this needed? When you add products, categories, or banners to your store, images are saved in the /image/catalog/ directory. If you delete a product, its images may remain, becoming "junk" that takes up server space. Image Cleaner identifies these files and allows you to delete them via the admin panel without diving into code.
Important for beginners: Always back up your website (all files + database) before using this module! Use FileZilla for files and phpMyAdmin for the database to ensure you can recover if something goes wrong.
Over time, online stores accumulate images that are no longer used. These files consume server space and can slow down or complicate backups. Image Cleaner safely removes such files, keeping your store efficient.
- Scans the
/image/catalog/directory for unused images. - Deletes identified files with action confirmation.
- Maintains a whitelist of critical files that cannot be deleted (
placeholder.png,no_image.png, store logo). - Checks HTML descriptions of products, pages, and blogs for used images.
- Displays scan and deletion results directly in the admin panel.
- Includes CSRF token protection (
user_token). - Verifies file permissions before deletion.
- Multilingual support, adding a menu item named:
- "Image Cleanup" (English).
- "Уборка в картинках" (Russian).
- "Очищення зображень" (Ukrainian).
- OCMOD: The module currently does not use OCMOD (ocStore/OpenCart’s modifier system). Installation requires manually copying files and making a simple code edit in one file (see "Detailed Installation Instructions").
- Future OCMOD support is not planned; basic code-reading skills are sufficient, or consult someone with coding knowledge.
admin/
├── controller/
│ └── tool/
│ └── image_cleaner.php # Module logic
├── language/
│ ├── en-gb/tool/image_cleaner.php # English localization
│ ├── ru-ru/tool/image_cleaner.php # Russian localization
│ └── uk-ua/tool/image_cleaner.php # Ukrainian localization
└── view/
└── template/
└── tool/
└── image_cleaner.twig # Interface display template
Ensure your store meets these requirements for the module to work:
- ocStore/OpenCart: Version 3.0.3.7. If using a different version (e.g., OpenCart 3.x), test on a site copy.
- PHP: Version 7.3. Check in the admin panel: "System" → "Server Info" → locate "PHP Version."
- File Access: Requires FTP (via FileZilla) or access through your hosting panel (cPanel, DirectAdmin, etc.).
- File Permissions: The
/image/catalog/directory must be readable and writable (permissions 755 for folders, 644 for files, sometimes 777). - Database: MySQL or MariaDB, accessible via phpMyAdmin.
- Blog Module (Optional): If using OCTemplates blog (tables
oct_blogarticle_***), the module will check its images.
How to check PHP version?
- Log into the admin panel.
- Navigate to "System" → "Server Info."
- Look for "PHP Version." If it’s not 7.3, ask your hosting provider to update.
Follow these steps to ensure the module works correctly, even if you're a complete beginner.
- Visit the project page on GitHub: https://github.com/webitproff/oc-image_cleaner.
- Click "Code" → "Download ZIP."
- Extract the archive on your computer.
- Advanced users can use Git:
git clone https://github.com/webitproff/oc-image_cleaner.git.
- Copy the contents of the
upload/folder from the archive to the root directory of your ocStore/OpenCart site. - Simply copy the
adminfolder into your site’s root directory. - Note: Copying does not overwrite existing engine files.
- Open the file
admin/controller/common/column_left.php.
- Locate the line:
$this->load->language('common/column_left');
- After it, add:
$this->load->language('tool/image_cleaner'); // Loads language translations for the module
- Find the
$data['menus'][]array (the admin menu list). After the first menu item (usually Dashboard):// Menu $data['menus'][] = array( 'id' => 'menu-dashboard', 'icon' => 'fa-dashboard', 'name' => $this->language->get('text_dashboard'), 'href' => $this->url->link('common/dashboard', 'user_token=' . $this->session->data['user_token'], true), 'children' => array() );
- Add the following code after it:
// Start Image Cleaner menu item $data['menus'][] = array( 'id' => 'menu-tool-image-cleaner', 'icon' => 'fa fa-trash-o', 'name' => $this->language->get('image_cleaner_title'), 'href' => $this->url->link('tool/image_cleaner', 'user_token=' . $this->session->data['user_token'], true), 'children' => array() ); // End Image Cleaner menu item
- This adds the "Image Cleanup" menu item with a trash icon to the admin panel’s left column.
To make the module visible and functional, assign permissions:
- In the admin panel, go to System → Users → User Groups.
- Find the group to grant access to (usually
Administrator) and click Edit. - In the tabs:
- Access Permission
- Modify Permission
- Check the box for:
in both lists.
tool/image_cleaner - Click Save. Users in this group will now see and use the module.
- Ensure the
/image/catalog/folder has read and write permissions. - Typically, permissions of
755are sufficient. If the module cannot see or delete files, temporarily set to777.
- In the admin panel, go to System → Tools → Cache Manager.
- Clear both the system cache and template cache.
- In the admin panel, locate the "Image Cleanup" menu item.
- Click it to open the module interface.
- Click the "Check" button.
- The module scans the
/image/catalog/directory and analyzes the database to identify unused images. - A list of unused images will appear after scanning.
- If you’re sure you want to delete unused images, click the "Delete" button.
- A warning will appear, as deletion is irreversible.
- After confirmation, files not in use (and not in the whitelist) will be deleted.
- Results will display: successfully deleted files and any that couldn’t be deleted.
- Before deleting, always back up the
/image/catalog/folder. - This ensures you can restore files if important images are accidentally deleted.
- Checks database tables:
product,product_image,category,banner_image,manufacturer,information_description,product_description,oct_blogarticle,oct_blogarticle_description. - Extracts image paths from
imagefields. - Analyzes HTML descriptions of products, pages, and blogs for
<img src>and<a href>tags containing/catalog/. - Creates a list of used images, removing duplicates.
- Compares files in
/image/catalog/with this list. - Files not in the database and not in the whitelist are considered unused.
- Upon deletion confirmation, files are removed if write permissions are available.
Files that are never deleted:
catalog/placeholder.pngcatalog/no_image.png- Store logo (
config_logo)
- Version: 2.0.1
- Compatibility: ocStore 3.0.3.7, OpenCart 3.x
- PHP: 7.3
- Uses CSRF token (
user_token) for security. - Checks file permissions before deletion.
- Verifies table existence before SQL queries.
- Deletion is irreversible—always create a backup.
- Custom modules with images may not be accounted for.
- OCT Blog support requires
oct_blogarticleandoct_blogarticle_descriptiontables.
The core logic, written in PHP.
- Loads translations:
$this->load->language('tool/image_cleaner'). - Sets page title: "Cleanup Unused Images."
- Creates button links:
- "Check" →
action=scan - "Delete" →
action=delete
- "Check" →
- Loads the page template:
image_cleaner.twig.
- Collects all used images from the database:
- Tables:
product,product_image,category,banner_image,manufacturer,oct_blogarticle,oct_blogarticle_image. - Fields:
image(e.g.,catalog/product.jpg). - Descriptions:
information_description,product_description,oct_blogarticle_description(searches for<img src="catalog/...">).
- Tables:
- Compares with files in
/image/catalog/. - If
$delete = true, deletes unused files. - Returns a list of results (file paths or messages).
- Queries database tables, e.g.:
SELECT image FROM oc_product;
- Parses HTML descriptions using regular expressions (
preg_match_all) to find paths (src,href). - Normalizes paths:
$p = str_replace('\\', '/', $p); // Replaces \ with / $p = ltrim($p, '/'); // Removes leading / if (strpos($p, 'image/') === 0) { $p = substr($p, strlen('image/')); // Removes image/ }
- Traverses
/image/catalog/usingRecursiveIteratorIterator. - Ignores whitelisted files (
placeholder.png,no_image.png, logo).
Located in: admin/language/*/tool/image_cleaner.php (ru-ru, en-gb, uk-ua).
Example (English):
$_['image_cleaner_title'] = 'Image Cleanup'; // Menu title
$_['heading_title'] = 'Cleanup Unused Images'; // Page title
$_['text_check'] = 'Check'; // Button
$_['text_delete'] = 'Delete'; // Button
$_['text_warning'] = 'Delete all unused images? This action is irreversible!';For other languages, similar files exist. To add a new language, create a file in admin/language/language_code/tool/.
- Title:
{{ heading_title }} - Buttons:
- "Check":
{{ scan_url }} - "Delete":
{{ delete_url }}with confirmation
- "Check":
- Results area:
<pre>with scrolling - Backup warning:
{{ text_backup }} - GitHub link:
{{ image_cleaner_github }}
- Adds the menu item to the admin panel.
- Loads translations and creates a link with a trash icon (
fa-trash-o). - Requires manual file editing since OCMOD is not used.
- Checks database tables:
- Standard:
product,product_image,category,banner_image,manufacturer - OCTemplates Blog:
oct_blogarticle,oct_blogarticle_image
- Standard:
- Extracts image paths (e.g.,
catalog/product.jpg) fromimagefields. - Parses HTML in descriptions:
- Fields:
information_description,product_description,oct_blogarticle_description - Searches for
<img src="catalog/...">andhref="catalog/..."usingpreg_match_all - Also searches for paths like
image/catalog/...
- Fields:
- Removes duplicates and normalizes paths.
- Compares with files in
/image/catalog/usingRecursiveIteratorIterator.
- Protected files:
catalog/placeholder.png,catalog/no_image.png - Store logo checked via:
$query_logo = $this->db->query( "SELECT value FROM oc_setting WHERE key = 'config_logo' AND store_id = 0 LIMIT 1" );
- Logo is added to the whitelist if it exists.
- Checks file permissions:
is_writable - Deletes via
unlink - Status:
- ✅ — Success
- ❌ — Error
- Uses
user_tokenfor CSRF protection. - Checks table existence before queries:
$check = $this->db->query("SHOW TABLES LIKE '" . DB_PREFIX . "table'");
- Ignores empty descriptions and nonexistent folders.
- ocStore/OpenCart 3.0.3.7
- PHP 7.3 or higher
- Readable and writable
/image/catalog/folder - Required database tables
- Scan:
tool/image_cleaner?action=scan&user_token=... - Delete:
tool/image_cleaner?action=delete&user_token=...
- webitproff — GitHub
- Date: October 12, 2025
- Project: oc-image_cleaner
BSD License
- Create issues: GitHub Issues
- Pull requests are welcome.
Image Cleaner — это бесплатный модуль для ocStore/OpenCart, предназначенный для поиска и удаления неиспользуемых изображений из папки /image/catalog/. Этот модуль помогает поддерживать ваш сайт оптимизированным, освобождая дисковое пространство, удаляя изображения, которые не используются на сайте, например, не привязанные к товарам, категориям, баннерам, производителям, информационным страницам или блогам.
Модуль десятки раз проверялся на работем сайте на локальном сервере и виртуальном хостинге в паре ocStore 3.0.3.7 + PHP 7.3.
Модуль интегрируется в административную панель и добавляет пункт меню «Уборка в картинках», через который можно запускать проверку и удаление неиспользуемых изображений.
Image Cleaner Utility — это простой модуль для интернет-магазина на ocStore (или OpenCart), который помогает найти и удалить ненужные картинки из папки /image/catalog/.
Если вы не знаете, что такое PHP, база данных, FTP или OCMOD — этот документ должен помочь. Всегда можно задать вопрос или обратиться к любому специалисту-кодеру.
Зачем это нужно? Когда вы добавляете товары, категории или баннеры в магазин, изображения сохраняются в папке /image/catalog/. Если вы удаляете товар, его картинки могут остаться — это "мусор", который занимает место на сервере. Image Cleaner находит такие файлы и позволяет их удалить через админ-панель, не копаясь в коде.
Важно для новичков: Сделайте резервную копию сайта (все файлы + база данных) перед использованием! Используйте FileZilla для файлов и phpMyAdmin для базы данных. Это спасёт, если что-то пойдёт не так.
При работе с интернет-магазином со временем накапливаются изображения, которые больше нигде не используются. Они занимают место на сервере и могут замедлять или делать невозможным резервное копирование сайта. Image Cleaner позволяет безопасно удалить такие файлы.
- Сканирование папки
/image/catalog/на наличие неиспользуемых изображений. - Удаление найденных файлов с подтверждением действия.
- Белый список критически важных файлов, которые нельзя удалять (
placeholder.png,no_image.png, логотип магазина). - Проверка HTML-описаний товаров, страниц и блогов для поиска используемых изображений.
- Отображение результатов проверки и удаления прямо в админ-панели.
- Защита с помощью CSRF-токена (
user_token). - Проверка прав на файлы перед удалением.
- Многоязычная поддержка. Добавляет в админ-панель пункт меню с названием:
- "Уборка в картинках" (русский).
- "Image Cleanup" (английский).
- "Очищення зображень" (украинский).
- OCMOD: На данный момент модуль не использует OCMOD (систему модификаторов ocStore/OpenCart). Установка требует ручного копирования файлов и простейшей правки кода в одном файле (см. раздел "Подробная инструкция по установке"). В будущем, для Image Cleaner Utility поддержка OCMOD также не планируется, достаточно, если вы хоть не много можете читать код, а если нет - то стоит обратиться к такому человеку.
admin/
├── controller/
│ └── tool/
│ └── image_cleaner.php # Логика модуля
├── language/
│ ├── en-gb/tool/image_cleaner.php // английская локализация модуля
│ ├── ru-ru/tool/image_cleaner.php // русская локализация модуля
│ └── uk-ua/tool/image_cleaner.php // украинская локализация модуля
└── view/
└── template/
└── tool/
└── image_cleaner.twig # Шаблон отображения интерфейса управления утилитой
Чтобы модуль работал, ваш магазин должен соответствовать этим требованиям:
- ocStore/OpenCart: Версия 3.0.3.7. Если у вас другая версия (например, OpenCart 3.x), протестируйте на копии сайта.
- PHP: Версия 7.3. Проверьте в админке: "Система" → "Информация о сервере" → найдите "PHP Version".
- Доступ к файлам: Нужен FTP (через FileZilla) или доступ через панель хостинга (cPanel, DirectAdmin и т.д.).
- Права на файлы: Папка
/image/catalog/должна быть доступна для чтения и записи (права 755 для папок, 644 для файлов, иногда 777). - База данных: MySQL или MariaDB, доступ через phpMyAdmin.
- Модуль блога (опционально): Если используете OCTemplates блог (таблицы
oct_blogarticle_***), модуль проверит и его изображения.
Как узнать версию PHP?
- Зайдите в админку.
- Перейдите: "Система" → "Информация о сервере".
- Найдите строку "PHP Version". Если не 7.3, попросите хостинг обновить.
Ниже описаны шаги для абсолютного новичка, чтобы модуль заработал корректно.
- Перейдите на страницу проекта на GitHub: https://github.com/webitproff/oc-image_cleaner
- Нажмите кнопку "Code" → "Download ZIP".
- Распакуйте архив на вашем компьютере.
- Либо для продвинутых можно использовать Git:
git clone https://github.com/webitproff/oc-image_cleaner.git
- Скопируйте содержимое папки
upload/из архива в корневую директорию вашего сайта, где установлен ocStore/OpenCart. Просто тупо папкуadminкопируем в папку сайта. - При копировании, текущие файлы движка не перезаписываются!
- Откройте файл
admin/controller/common/column_left.php. - Найдите строку:
$this->load->language('common/column_left');- После неё добавьте следующий код:
$this->load->language('tool/image_cleaner'); // строка загрузки языковой локализации image_cleaner (Загружает переводы для модуля) - Найдите массив $data['menus'][] (это список пунктов меню админки). После первого пункта (обычно Dashboard, Панель стану, Панель состояния)::
// Menu
$data['menus'][] = array(
'id' => 'menu-dashboard',
'icon' => 'fa-dashboard',
'name' => $this->language->get('text_dashboard'),
'href' => $this->url->link('common/dashboard', 'user_token=' . $this->session->data['user_token'], true),
'children' => array()
);- После неё добавьте следующий код:
// start пункт меню утилиты image_cleaner
$data['menus'][] = array(
'id' => 'menu-tool-image-cleaner',
'icon' => 'fa fa-trash-o',
'name' => $this->language->get('image_cleaner_title'),
'href' => $this->url->link('tool/image_cleaner', 'user_token=' . $this->session->data['user_token'], true),
'children' => array()
);
// end пункт меню утилиты image_cleaner- Это добавит пункт меню "Уборка в картинках" с иконкой корзины в левую колонку админки.
Чтобы модуль был виден и функционален, нужно выдать права пользователям:
-
В админ-панели перейдите в Система → Пользователи → Группы пользователей.
-
Найдите группу, которой нужно дать доступ (обычно
Администратор), и нажмите Изменить. -
Вкладки:
- Доступ к модулям (Access Permission)
- Права на изменение (Modify Permission)
-
В обоих списках поставьте галочку напротив:
tool/image_cleaner
- Нажмите Сохранить. После этого пользователи группы смогут видеть модуль в меню и использовать его функционал.
- Убедитесь, что папка
/image/catalog/имеет права на чтение и запись. - Обычно достаточно прав
755. Если модуль не видит файлы или не может их удалить, можно временно выставить777.
- В админ-панели ocStore перейдите в Система → Инструменты → Очистка кэша.
- Нажмите кнопки очистки кэша системы и кэша шаблонов.
- В админ-панели найдите пункт меню «Уборка в картинках».
- Кликните по нему, откроется интерфейс модуля.
- Нажмите кнопку «Проверить».
- Модуль просканирует папку
/image/catalog/и проанализирует базу данных, чтобы определить, какие изображения не используются. - После завершения сканирования появится список неиспользуемых изображений.
- Если вы уверены, что хотите удалить неиспользуемые изображения, нажмите кнопку «Удалить».
- Появится предупреждение, так как удаление необратимо.
- После подтверждения удалятся файлы, которые не используются, кроме тех, что находятся в белом списке.
- Результаты удаления отобразятся на экране: файлы, удаленные успешно, и файлы, которые не удалось удалить.
- Перед удалением обязательно сделайте резервную копию папки
/image/catalog/. - Это позволит восстановить файлы, если случайно будут удалены нужные изображения.
- Модуль проверяет наличие таблиц базы данных:
product,product_image,category,banner_image,manufacturer,information_description,product_description,oct_blogarticle,oct_blogarticle_description. - Извлекает все пути изображений из полей
image. - Анализирует HTML-описания товаров, страниц и блогов для поиска всех
<img src>и<a href>с/catalog/. - Создает список всех используемых изображений и удаляет дубликаты.
- Сравнивает файлы в папке
/image/catalog/с этим списком. - Файлы, отсутствующие в базе и не входящие в белый список, считаются неиспользуемыми.
- При подтверждении удаления файлы удаляются, если есть права на запись.
Файлы, которые никогда не удаляются:
catalog/placeholder.pngcatalog/no_image.png- Логотип магазина (
config_logo)
- Версия: 2.0.1
- Совместимость: ocStore 3.0.3.7, OpenCart 3.x
- PHP: 7.3
- Использует CSRF-токен (
user_token) для защиты от атак - Проверяет права на файлы перед удалением
- Проверяет наличие таблиц перед выполнением SQL-запросов
- Удаление необратимо — обязательно создавайте резервную копию
- Кастомные модули с изображениями могут не учитываться
- Поддержка OCT Blog только при наличии таблиц
oct_blogarticleиoct_blogarticle_description
Это "мозг" модуля, написан на PHP.
- Загружает переводы:
$this->load->language('tool/image_cleaner'). - Устанавливает заголовок страницы:
Очистка неиспользуемых изображений. - Создаёт ссылки для кнопок:
- "Проверить" →
action=scan - "Удалить" →
action=delete
- "Проверить" →
- Загружает шаблон страницы:
image_cleaner.twig.
- Собирает все используемые изображения из базы данных:
Таблицы:
product,product_image,category,banner_image,manufacturer,oct_blogarticle,oct_blogarticle_image.
Поля:image(например,catalog/product.jpg).
Описания:information_description,product_description,oct_blogarticle_description(ищет<img src="catalog/...">). - Сравнивает с файлами в
/image/catalog/. - Если
$delete = true, удаляет ненужные файлы. - Возвращает список результатов (пути файлов или сообщения).
- Проверяет таблицы базы данных, например:
SELECT image FROM oc_product;
- Парсит HTML-описания с помощью регулярных выражений (
preg_match_all) для поиска путей (src,href). - Нормализует пути:
$p = str_replace('\\', '/', $p); // Заменяет \ на / $p = ltrim($p, '/'); // Убирает ведущий / if (strpos($p, 'image/') === 0) { $p = substr($p, strlen('image/')); // Убирает image/ }
- Обходит папку
/image/catalog/с помощьюRecursiveIteratorIterator. - Игнорирует файлы из белого списка (
placeholder.png,no_image.png, логотип).
Расположение: admin/language/*/tool/image_cleaner.php (ru-ru, en-gb, uk-ua).
Пример (русский):
$_['image_cleaner_title'] = 'Уборка в картинках'; // Название в меню
$_['heading_title'] = 'Очистка неиспользуемых изображений'; // Заголовок
$_['text_check'] = 'Проверить'; // Кнопка
$_['text_delete'] = 'Удалить'; // Кнопка
$_['text_warning'] = 'Удалить все неиспользуемые изображения? Это действие необратимо!';Для английского и украинского языков аналогично. При добавлении нового языка создайте файл в
admin/language/код_языка/tool/.
- Заголовок:
{{ heading_title }} - Кнопки:
- "Проверить":
{{ scan_url }} - "Удалить":
{{ delete_url }}с подтверждением
- "Проверить":
- Область результатов:
<pre>с прокруткой - Предупреждение о бэкапе:
{{ text_backup }} - Ссылка на GitHub:
{{ image_cleaner_github }}
- Добавляет пункт меню в админку.
- Загружает переводы и создаёт ссылку с иконкой корзины (
fa-trash-o).
Если модуль не использует OCMOD, файл редактируется вручную.
- Проверяет таблицы базы данных:
- Стандартные:
product,product_image,category,banner_image,manufacturer - Блог OCTemplates:
oct_blogarticle,oct_blogarticle_image
- Стандартные:
- Извлекает пути изображений (например,
catalog/product.jpg) из полейimage. - Парсит HTML в описаниях:
- Поля:
information_description,product_description,oct_blogarticle_description - Ищет
<img src="catalog/...">иhref="catalog/..."с помощьюpreg_match_all - Также ищет пути вида
image/catalog/...
- Поля:
- Убирает дубликаты и нормализует пути (см. выше).
- Сравнивает с файлами в
/image/catalog/с помощьюRecursiveIteratorIterator.
- Файлы, которые нельзя удалять:
catalog/placeholder.png,catalog/no_image.png - Логотип магазина проверяется так:
$query_logo = $this->db->query( "SELECT value FROM oc_setting WHERE key = 'config_logo' AND store_id = 0 LIMIT 1" );
- Логотип добавляется в белый список, если он существует.
- Проверяет права файла:
is_writable - Удаляет через
unlink - Статус:
- ✅ — успешно
- ❌ — ошибка
- Использует
user_tokenдля защиты от CSRF - Проверяет существование таблиц перед запросами:
$check = $this->db->query("SHOW TABLES LIKE '" . DB_PREFIX . "table'");
- Игнорирует пустые описания и несуществующие папки
- ocStore/OpenCart 3.0.3.7
- PHP 7.3 или выше
- Папка
/image/catalog/с правами на чтение и запись - Необходимые таблицы в базе данных
- Сканирование:
tool/image_cleaner?action=scan&user_token=... - Удаление:
tool/image_cleaner?action=delete&user_token=...
- webitproff — GitHub
- Дата: 12 октября 2025
- Проект: oc-image_cleaner
BSD License
- Создавайте issue: GitHub Issues
- Pull request приветствуются
Модуль ищет файлы в папке catalog (место, где хранятся картинки для товаров, категорий, баннеров и т.д.). Он проверяет, используются ли эти файлы на сайте (например, в товарах, статьях или настройках). Если файл нигде не нужен, скрипт может его удалить, а заодно убрать пустые папки, где эти файлы лежали.
Важно: Скрипт работает с любыми файлами в папке catalog (не только с картинками, такими как .jpg или .png, но и с другими файлами — .pdf, .txt, и т.д.). Однако на практике в папке catalog обычно хранятся только изображения, так как это стандартная папка для картинок в ocStore.
- Скрипт заходит в папку
catalog, которая обычно находится по пути вроде:/путь_к_сайту/image/catalog/. - Если этой папки нет, он выдаёт сообщение:
"Папка catalog не найдена, я не могу ничего сделать!"— и останавливается.
- Скрипт собирает список используемых файлов (в основном — картинок), которые упомянуты на сайте.
- Он смотрит в базе данных и проверяет:
- Картинки товаров (фото в карточках товаров).
- Картинки категорий (фото для разделов, типа "Одежда").
- Картинки баннеров, производителей, блогов (если они есть).
- Ссылки на файлы в текстах — например:
<img src="catalog/photo.jpg">или<a href="catalog/file.pdf">.
- Все найденные пути (
catalog/photo.jpg,catalog/file.pdfи т.д.) записываются в список нужных. - Есть белый список — файлы, которые нельзя удалять:
catalog/placeholder.pngcatalog/no_image.png- Логотип сайта (например,
catalog/logo.png), если он указан в настройках.
- Скрипт проходит по всем файлам в папке
catalogи её подпапках. - Для каждого файла проверяется:
- Есть ли его путь в списке нужных?
- Входит ли файл в белый список?
- Если нет — файл считается ненужным.
Ответ: Скрипт может удалить любой файл в папке catalog, если он не используется на сайте и не входит в белый список. Это могут быть не только картинки (.jpg, .png, .gif), но и:
.pdf.txt.mp4.zip- и т.д. На практике там почти всегда только изображения, но если в папке лежит что-то другое — оно тоже будет проверено.
- Режим "просто проверить":
- Скрипт составляет список ненужных файлов (например,
catalog/photo.jpg,catalog/random.txt) и показывает его пользователю, ничего не удаляя.
- Скрипт составляет список ненужных файлов (например,
- Режим "удалить":
- Скрипт пытается удалить ненужные файлы.
- Проверяет права на удаление.
- Успешно удалённые файлы добавляются в список "удалённых".
- Если удалить не получилось (например, файл защищён) — он пропускается.
После удаления ненужных файлов:
- Скрипт проверяет подпапки в
catalog. - Если какая-то подпапка оказалась пустой — она тоже удаляется. (Например,
catalog/banners/без файлов будет удалена.)
- Работает только с
catalog(обычно/путь_к_сайту/image/catalog/) и её подпапками. - В режиме удаления может удалить пустые подпапки.
- Проверяются все файлы в
catalogи подпапках:- Картинки (
.jpg,.png,.gif, и т.д.) - Любые другие файлы (
.pdf,.txt,.mp4,.zip, и т.д.)
- Картинки (
- Исключения (не удаляются):
catalog/placeholder.pngcatalog/no_image.pngcatalog/logo.png(если указан в настройках) Все остальные, неиспользуемые файлы считаются ненужными и могут быть удалены.
Структура:
catalog/
photo1.jpg
document.pdf
banners/
banner1.jpg
random.txt
Сценарий:
- В базе данных и текстах сайта найдены ссылки только на
photo1.jpgиbanner1.jpg. - Файлы
document.pdfиrandom.txtнигде не упоминаются. Если выбран режим проверки:
Ненужные файлы:
catalog/document.pdf
catalog/banners/random.txt
Если выбран режим удаления:
- Удаляются
document.pdfиrandom.txt. - Если после этого папка
bannersпуста — она тоже удаляется.
Скрипт проверяет все файлы, не только изображения. Удаляет любые, если они:
- Не используются на сайте,
- Не входят в белый список.
- Скрипт "аккуратный" — не удалит нужные файлы или защищённые, но удаляет всё, что не прикреплено к товарам, статьям и т.д. в в
catalogи в подпапках. - В режиме проверки ничего не удаляет.
- Если папка
catalogне найдена, скрипт выдаёт ошибку и завершает работу.


