Jump to content

Edit History

Ecigarlife

Ecigarlife

Buenos dias,

Desde que activamos la multitienda, cuando creamos categorias no lo hace bien, ya que genera la categoria con los valores Nleft y Nright a 0.

Llamo de manera manual a Category::regenerateEntireNtree(); , pero no hace nada...

Mi root category esta con valor "2"  y esta es e lcodigo que deberia generarlo , ¿Puede ser por el valor 2?:

 

 public static function regenerateEntireNtree()
            {
                       $id = Context::getContext()->shop->id;
                       $id_shop = $id ? $id: Configuration::get('PS_SHOP_DEFAULT');
                       $categories = Db::getInstance()->executeS('
                       SELECT c.`id_category`, c.`id_parent`
                       FROM `'._DB_PREFIX_.'category` c
                       LEFT JOIN `'._DB_PREFIX_.'category_shop` cs
                       ON (c.`id_category` = cs.`id_category` AND cs.`id_shop` = '.(int)$id_shop.')
                       ORDER BY c.`id_parent`, cs.`position` ASC');
                       $categories_array = array();
                       foreach ($categories as $category)
                                   $categories_array[$category['id_parent']]['subcategories'][] = $category['id_category'];
                       $n = 1;

                       if (isset($categories_array[0]) && $categories_array[0]['subcategories'])
                                   Category::_subTree($categories_array, $categories_array[0]['subcategories'][0], $n);
            }

            protected static function _subTree(&$categories, $id_category, &$n)
            {
                       $left = $n++;
                       if (isset($categories[(int)$id_category]['subcategories']))
                                   foreach ($categories[(int)$id_category]['subcategories'] as $id_subcategory)
                                               Category::_subTree($categories, (int)$id_subcategory, $n);
                       $right = (int)$n++;

                       Db::getInstance()->execute('
                       UPDATE '._DB_PREFIX_.'category
                       SET nleft = '.(int)$left.', nright = '.(int)$right.'
                       WHERE id_category = '.(int)$id_category.' LIMIT 1');
            }

 

 

Ecigarlife

Ecigarlife

Buenos dias,

Desde que activamos la multitienda, cuando creamos categorias no lo hace bien, ya que genera la categoria con los valores Nleft y Nright a 0.

Llamo de manera manual a Category::regenerateEntireNtree(); , pero no hace nada...

Mi root category esta con valor "2"  y esta es e lcodigo que deberia generarlo , ¿Puede ser por el valor 2?:

 

 public static function regenerateEntireNtree()
            {
                       $id = Context::getContext()->shop->id;
                       $id_shop = $id ? $id: Configuration::get('PS_SHOP_DEFAULT');
                       $categories = Db::getInstance()->executeS('
                       SELECT c.`id_category`, c.`id_parent`
                       FROM `'._DB_PREFIX_.'category` c
                       LEFT JOIN `'._DB_PREFIX_.'category_shop` cs
                       ON (c.`id_category` = cs.`id_category` AND cs.`id_shop` = '.(int)$id_shop.')
                       ORDER BY c.`id_parent`, cs.`position` ASC');
                       $categories_array = array();
                       foreach ($categories as $category)
                                   $categories_array[$category['id_parent']]['subcategories'][] = $category['id_category'];
                       $n = 1;

                       if (isset($categories_array[0]) && $categories_array[0]['subcategories'])
                                   Category::_subTree($categories_array, $categories_array[0]['subcategories'][0], $n);
            }

            protected static function _subTree(&$categories, $id_category, &$n)
            {
                       $left = $n++;
                       if (isset($categories[(int)$id_category]['subcategories']))
                                   foreach ($categories[(int)$id_category]['subcategories'] as $id_subcategory)
                                               Category::_subTree($categories, (int)$id_subcategory, $n);
                       $right = (int)$n++;

                       Db::getInstance()->execute('
                       UPDATE '._DB_PREFIX_.'category
                       SET nleft = '.(int)$left.', nright = '.(int)$right.'
                       WHERE id_category = '.(int)$id_category.' LIMIT 1');
            }

 

 

Ecigarlife

Ecigarlife

Buenos dias,

Desde que activamos la multitienda, cuando creamos categorias no lo hace bien, ya que genera la categoria con los valores Nleft y Nright a 0.

Llamo de manera manual a Category::regenerateEntireNtree(); , pero no hace nada...

Mi root category esta con valor "2"  y esta es e lcodigo que deberia generarlo , ¿Puede ser por el valor 2?:

 

 public static function regenerateEntireNtree()
            {
                       $id = Context::getContext()->shop->id;
                       $id_shop = $id ? $id: Configuration::get('PS_SHOP_DEFAULT');
                       $categories = Db::getInstance()->executeS('
                       SELECT c.`id_category`, c.`id_parent`
                       FROM `'._DB_PREFIX_.'category` c
                       LEFT JOIN `'._DB_PREFIX_.'category_shop` cs
                       ON (c.`id_category` = cs.`id_category` AND cs.`id_shop` = '.(int)$id_shop.')
                       ORDER BY c.`id_parent`, cs.`position` ASC');
                       $categories_array = array();
                       foreach ($categories as $category)
                                   $categories_array[$category['id_parent']]['subcategories'][] = $category['id_category'];
                       $n = 1;

                       if (isset($categories_array[0]) && $categories_array[0]['subcategories'])
                                   Category::_subTree($categories_array, $categories_array[0]['subcategories'][0], $n);
            }

            protected static function _subTree(&$categories, $id_category, &$n)
            {
                       $left = $n++;
                       if (isset($categories[(int)$id_category]['subcategories']))
                                   foreach ($categories[(int)$id_category]['subcategories'] as $id_subcategory)
                                               Category::_subTree($categories, (int)$id_subcategory, $n);
                       $right = (int)$n++;

                       Db::getInstance()->execute('
                       UPDATE '._DB_PREFIX_.'category
                       SET nleft = '.(int)$left.', nright = '.(int)$right.'
                       WHERE id_category = '.(int)$id_category.' LIMIT 1');
            }

 

 

×
×
  • Create New...