Поиск товаров с одинаковым alt-name
Материал из Umicms
Статья предоставлена партнером UMI.CMS Шириевым Артуром
Актуально для версии 18.
Это продолжение статьи "Уменьшение вложенности товаров".
Для корректной работы статьи нужно избавиться от товаров с одинаковым alt-name. Сделать это можно вот таким скриптом:
define("CURRENT_WORKING_DIR", str_replace("\\", "/", $dirname = dirname(__FILE__)));
require CURRENT_WORKING_DIR . '/libs/root-src/standalone.php';
// здесь можно заменить catalog и object на данные необходимого иерархического типа данных, например news и item — для страниц новостей.
$type_id = umiHierarchyTypesCollection::getInstance()->getTypeByName('catalog', 'object')->getId();
$hierarchy = umiHierarchy::getInstance();
$connection = ConnectionPool::getInstance()->getConnection('core');
// прямым запросов к базе ищем дубли по alt-name
$result = $connection->query("SELECT GROUP_CONCAT(id SEPARATOR ', ') id, COUNT(*) c FROM `cms3_hierarchy` WHERE `type_id` = $type_id GROUP BY alt_name HAVING c > 1");
// распечатываем ссылки на страницы
while($row = mysqli_fetch_assoc($result)) {
foreach (explode(',', $row['id']) as $id) {
$page = $hierarchy->getElement($id);
echo "<a href=\"/admin/catalog/edit/{$page->getId()}/\">{$page->getName()}</a><br />\n";
}
echo "\n";
}
Кладем скрипт в корень сайта и вызываем из браузера. Корректируем страницы до тех пор, пока дублей не останется.