Jump to content

Nejde vytvořit nová kategorie


lsykora

Recommended Posts

Ahoj,

Jsem nováček v prestashopu a momentálně chci vytvořit nové kategorie. Klasicky v BO jdu do katalog -> kategorie -> a chci vytvořit novou. Když jí chci uložit, dostanu error "Došlo k neočekávané chybě. [PrestaShop\PrestaShop\Core\Domain\Category\Exception\CategoryConstraintException kód 6]". Snažil jsem se hledat na googlu, mělo s tím problém více lidí, ale pořád se mi nepovedlo najít řešení, aby mi šli kategorie vytvářet.

Díky za pomoc :))

Link to comment
Share on other sites

Našel jsem ještě možnost, jak zobrazit podrobnější detail chyby. Přikládám screen jak chyby, tak i php souboru na tom radku, kde by chyba měla být. Jestli byste se na to mohl podívat a poradit mi co s tím? :) děkuji

radek110.PNG

Prestashop_error.PNG

Link to comment
Share on other sites

Ahoj.

Ono je potřeba taky doplnit více informací.

Jaká je verze Prestashop (celá verze), jestli byl Prestashop ugradován a atd.

Tato chyba vesměs souvisí s chybou v tabulce ps_category a neexistující root kategorií s ID 1 nebo Home kategorií s ID 2.

  • Like 1
Link to comment
Share on other sites

Ahoj,

 

Jedná se o verzi 1.7.8.3. Categorie se tam importovali z předchozího shopu. V ps_category ve sloupečku is_root_category vážně není žádná 2. Přikládám screen.

Zkoušel jsem u těch dvou kategorií, které mají position 1 a 2, napsat is_root_category 1 a 2, ale bohužel to nepomohlo. Nebo by pomohlo kdybych ty kategorie smazal? Stejně jich je málo a o moc víc jich nebude. Vytvořil bych si je znova v BO.

 

Děkuji.

root.PNG

Link to comment
Share on other sites

Script pro regenerování kategorií.

include_once('./config/config.inc.php');
include_once('./init.php');

$db = Db::getInstance();
$id_home = Configuration::getMultiShopValues('PS_HOME_CATEGORY');
$id_root = Configuration::getMultiShopValues('PS_ROOT_CATEGORY');

$db->execute('DELETE FROM `'._DB_PREFIX_.'category` WHERE id_category NOT IN ('.implode(',', array_map('intval', $id_home)).', '.implode(',', array_map('intval', $id_root)).')');

$db->execute('DELETE FROM `'._DB_PREFIX_.'category_lang` WHERE id_category NOT IN ('.implode(',', array_map('intval', $id_home)).', '.implode(',', array_map('intval', $id_root)).')');

$db->execute('DELETE FROM `'._DB_PREFIX_.'category_shop` WHERE id_category NOT IN ('.implode(',', array_map('intval', $id_home)).', '.implode(',', array_map('intval', $id_root)).')');

$db->execute('DELETE FROM `'._DB_PREFIX_.'category_group` WHERE id_category NOT IN ('.implode(',', array_map('intval', $id_home)).', '.implode(',', array_map('intval', $id_root)).')');

$db->execute('ALTER TABLE `'._DB_PREFIX_.'category` AUTO_INCREMENT = '. (1 + max(array_merge($id_home, $id_root))));

foreach (scandir(_PS_CAT_IMG_DIR_) as $dir) {
	if (preg_match('/^[0-9]+(\-(.*))?\.jpg$/', $dir)) {
		unlink(_PS_CAT_IMG_DIR_.$dir);
	}
}

Category::regenerateEntireNtree();
Edited by knacky (see edit history)
  • Like 1
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...