[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Удалить дочерний узел в меню
anabenne
Всем привет, вот такой вот вопрос

Есть верхнее меню "хлебные крошки",
и боковое подменю, к примеру:

Главная -> Спорттовары -> Одежда -> Ботинки -> Зимние -> Описание (нажимаем пункт зимние, появляется боковое меню)

В разделе Зимние, мы создаем подменю
Описание
Фото
Контакты


Суть в том, что создавая описание, автоматом создается дубль Описание в хлебных крошках, создавая Фото, автоматом создается Фото, создавая Контакты, автоматом создается Контакты и т.д. Пункт Описание это дубликат пункта Зимние. Суть в том что это мешает продвижению и не несет никакой смысловой нагрузки.
Код чужой,cms тоже, сижу разбираюсь, с этим не могу разобраться. Сеошники подкинули задачу.
Задача чтобы удалить Описание в крошках, и поменять ссылку в подменю на Зимние.

Когда я удаляю Описание, удаляется описание и в под меню.
Ссылки меняются соответственно тоже везде. Дурдом кароче
Кидаю код создания узла

##создание строки навигации узла
function cms_navigation($parent_node,& $root_node,$shablone="navigation",$reverse=true){
global $access;

$navigation_node = & $root_node->create("cms_".$shablone);
$navigation_node->setFromBranch();
$navigation_node->reverse($reverse);
$node = $parent_node;
$iii = 0;
$jjj = 0;
if($shablone=="title" && isset($parent_node->entry) && $parent_node->entry!==false){
$navigation_item_node = & $navigation_node->create("cms_".$shablone."_item");
$navigation_item_node->set("stitle",$parent_node->entry);
$jjj++;
}
while($node->id!=0 && $iii++<15){
if ($shablone!="title" || CMS_SHORT_TITLE*1==0 || ($shablone=="title" && ($iii==1 || $node->parent->id==0))){
if(($node->type & CMS_TYPE_VIRTUAL)==0 || ($node->data["pid"]==0 && $shablone=="title") || $access->status==ACCESS_ADMIN){
//if(($node->type & CMS_TYPE_VIRTUAL)==0 || $access->status==ACCESS_ADMIN){
$navigation_item_node = & $navigation_node->create("cms_".$shablone."_item",$node->data);
$jjj++;
if ($jjj>1 && $shablone=="title") $navigation_item_node->create("cms_".$shablone."_sep");
if($access->status==ACCESS_ADMIN){
$attributes = "";
if(($node->access&CMS_ACCESS_HIDDEN)==CMS_ACCESS_HIDDEN){ $attributes .= "cms_hidden "; }
if(($node->type&CMS_TYPE_VIRTUAL)==CMS_TYPE_VIRTUAL){ $attributes .= "cms_virtual ";}
if(($node->type&CMS_TYPE_LINK)==CMS_TYPE_LINK){ $attributes .= "cms_link ";}
if(($node->type&CMS_TYPE_ROOT)==CMS_TYPE_ROOT){ $attributes .= "cms_root ";}
$navigation_item_node->set("node_attributes",$attributes);
}
$navigation_item_node->setFromBranch();
}
}

$node = $node->parent;
}
}





##создание самого узла
case "create":
$param=$param*1;
if(!isset($nodes_by_id[$param])) return NULL;
$sql->send("INSERT INTO ".CMS_PREFIX."_structure SET pid=".$param.",stype=".($data["stype"]*1)."");
$sid = $sql->get_id();
$sql->send("SELECT login FROM ".CMS_PREFIX."_moderators_access WHERE sid=".$param."");
if($logindata = $sql->get()){
$sql->send("INSERT INTO ".CMS_PREFIX."_moderators_access SET sid=".$sid.",login='".($logindata["login"])."'");
}

$sql->send("SELECT * FROM ".CMS_PREFIX."_structure WHERE sid=".$sid."");
if($ndata = $sql->get()){
$class_name = $CMS_NODE_TYPES[$data["stype"]-($data["stype"]&CMS_TYPE_MASK)>>CMS_TYPE_BITS]["_class"];
if(!class_exists($class_name)) $class_name = "cms_node";
//$nodes_by_id[$ndata["sid"]] = & new $class_name($ndata);
$nodes_by_id[$ndata["sid"]] = new $class_name($ndata);
cms_tree("set",$ndata["sid"],$data);
}
header("location:".$access->self.$nodes_by_id[$param]->get_full_path()); exit(0);
break;

переменная $sname и отвечает за крошки.
Как вариант ограничить число записей в подменю, пробовал, у меня не получилось.
Пробовал по разному, и из базы удалить, и в админке
Нужно что в коде поменять, что не знаю..
Пытался обьяснить Вам как смог) если что не понятно, дополню

Кто поможет разобраться, тому спасибо
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.