Поиск товаров с одинаковым alt-name — различия между версиями
Материал из Umicms
Lesnik512 (обсуждение | вклад) (Новая страница: «'''Актуально для версии 18.''' Это продолжение статьи "Уменьшение вложенности товаров". Д…») |
Kublan (обсуждение | вклад) |
||
Строка 1: | Строка 1: | ||
+ | '''Статья предоставлена партнером UMI.CMS [https://www.umi-cms.ru/find_webdevs/shiriev_artur_venerovich/ Шириевым Артуром]''' | ||
+ | |||
'''Актуально для версии 18.''' | '''Актуально для версии 18.''' | ||
Текущая версия на 16:29, 29 июня 2018
Статья предоставлена партнером 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";
}
Кладем скрипт в корень сайта и вызываем из браузера. Корректируем страницы до тех пор, пока дублей не останется.