|
|
|
| задача скрипта состоит в том чтобы в уже созданном меню можно было изменять или добавлять данные задавая в текстовом файле например
+квартиры+
*1-комнатные*
*2-комнатные*
*3-комнатные*
Имена заключеные в плюсы являлись перевостепенным меню, а имена заключенные в звездочки второстепенным | |
|
|
|
|
|
|
|
для: Fancky
(19.08.2007 в 14:34)
| | Можно уточнение, меню уже написано (на JS или HTML)? или Вам надо сделать меню? если оно есть, можно увидеть как оно выглядит? | |
|
|
|
|
|
|
|
для: lifead
(19.08.2007 в 15:30)
| | скрипт меню уже с веддеными данными
<HTML>
<HEAD>
<style>
<!--
DIV.clTop{position:absolute; width:170}
DIV.clSub{position:absolute; left:10; width:170}
#divCont{position:relative; left:1; top:0; height:600; width:170;}
A.clMain{font-family:Arial, Verdana, Helvetica, Helv; font-size:10px; text-decoration:none; font-weight:bold; color:202020}
A.clSubb{font-family:Arial, Verdana, Helvetica, Helv; font-size:10px; text-decoration:none; color:111111}
#divMain{position:absolute}
//-->
</style>
<script language="JavaScript">
var stayFolded=false
var exImg=new Image(); exImg.src='arrow1.gif'
var unImg=new Image(); unImg.src='arrow.gif'
var n = (document.layers) ? 1:0;
var ie = (document.all) ? 1:0;
var browser=((n || ie) && parseInt(navigator.appVersion)>=4)
function makeMenu(obj,nest){
nest=(!nest) ? '':'document.'+nest+'.'
this.css=(n) ? eval(nest+'document.'+obj):eval('document.all.'+obj+'.style')
this.ref=(n) ? eval(nest+'document.'+obj+'.document'):eval('document');
this.height=n?this.ref.height:eval(obj+'.offsetHeight')
this.x=(n)? this.css.left:this.css.pixelLeft;this.y=(n)? this.css.top:this.css.pixelTop;
this.hideIt=b_hideIt; this.showIt=b_showIt; this.vis=b_vis; this.moveIt=b_moveIt
return this
}
function b_showIt(){this.css.visibility="visible"}
function b_hideIt(){this.css.visibility="hidden"}
function b_vis(){if(this.css.visibility=="hidden" || this.css.visibility=="hide") return true;}
function b_moveIt(x,y){this.x=x; this.y=y; this.css.left=this.x; this.css.top=this.y}
function init(){
oTop=new Array()
oTop[0]=new makeMenu('divTop1','divCont')
oTop[1]=new makeMenu('divTop2','divCont')
oTop[2]=new makeMenu('divTop3','divCont')
oSub=new Array()
oSub[0]=new makeMenu('divSub1','divCont.document.divTop1')
oSub[1]=new makeMenu('divSub2','divCont.document.divTop2')
oSub[2]=new makeMenu('divSub3','divCont.document.divTop3')
for(i=0;i<oSub.length;i++){ oSub[i].hideIt() }
for(i=1;i<oTop.length;i++){ oTop[i].moveIt(0,oTop[i-1].y+oTop[i-1].height) }
}
function menu(num){
if(browser){
if(!stayFolded){
for(i=0;i<oSub.length;i++){
if(i!=num){
oSub[i].hideIt()
oTop[i].ref["imgA"+i].src=unImg.src
}
}
for(i=1;i<oTop.length;i++){
oTop[i].moveIt(0,oTop[i-1].y+oTop[i-1].height)
}
}
if(oSub[num].vis()){
oSub[num].showIt()
oTop[num].ref["imgA"+num].src=exImg.src
}else{
oSub[num].hideIt()
oTop[num].ref["imgA"+num].src=unImg.src
}
for(i=1;i<oTop.length;i++){
if(!oSub[i-1].vis()) oTop[i].moveIt(0,oTop[i-1].y+oTop[i-1].height+oSub[i-1].height)
else oTop[i].moveIt(0,oTop[i-1].y+oTop[i-1].height)
}
}
}
if(browser) onload=init;
</script>
</HEAD>
<body text="#202020" bgcolor="ivory" link="#0000FF" vlink="#FFA500" alink="#FF0000" marginwidth="0" marginheight="0" topmargin="0" leftmargin="0">
<!-- МЕНЮ -->
<div id="divCont">
<div id="divTop1" class="clTop">
<a href="#" onclick="menu(0); return false" class="clMain">
<img src="arrow.gif" name="imgA0" width=12 height=12 alt="" border="0">
Главная</a><br>
<div id="divSub1" class="clSub">
<a href="main.html" target="main" class="clSubb">-Старт</a><br>
</div><br>
</div>
<div id="divTop2" class="clTop">
<a href="#" onclick="menu(1); return false" class="clMain">
<img src="arrow.gif" name="imgA1" width=12 height=12 alt="" border="0">
HTML</a><br>
<div id="divSub2" class="clSub">
<a href="#" class="clSubb">-O HTML</a><br>
<a href="#" class="clSubb">-DHTML</a><br>
<a href="html/html_faq.html" target="main" class="clSubb">-FAQ</a><br>
</div><br>
</div>
<div id="divTop3" class="clTop">
<a href="#" onclick="menu(2); return false" class="clMain">
<img src="arrow.gif" name="imgA2" width=12 height=12 alt="" border="0">
Скрипты</a><br>
<div id="divSub3" class="clSub">
<a href="#" class="clSubb">-JavaScript</a><br>
<a href="#" class="clSubb">-VBScript</a><br>
<a href="#" class="clSubb">-FAQ</a><br>
</div><br>
</div>
</div>
</HEAD>
</HTML> | |
|
|
|
|
|
|
|
для: Fancky
(19.08.2007 в 15:45)
| | Попробуйте следующим образом:
Создаете двумерный массив из файла со структурой меню, создаете функцию или класс которые будут выстраивать одну выпадающую менюшку, а потом уже используя класс (функцию) выводите их на экран | |
|
|
|
|
|
|
|
для: lifead
(19.08.2007 в 16:33)
| | Не могли бы вы поподробнее расказать как это сделать, или показать пример ? | |
|
|
|
|
|
|
|
для: Fancky
(19.08.2007 в 20:00)
| | Хорошо. Только тогда несколько уточнений.
В файле которым задается меню колличество менюшек "первого" рода будет постоянным? и менятся будет только менюшки второго рода? | |
|
|
|
|
|
|
|
для: lifead
(19.08.2007 в 20:34)
| | Количество первычных менюшек тоже должно меняться. | |
|
|
|
|
|
|
|
для: Fancky
(19.08.2007 в 20:44)
| | Вот Вам двумерный массив $m[][];
<?php
$fp = fopen("menu.txt","r");
//$i=0;$j=0;
$str=fgets($fp, 30);
$m[0][0]=$str;
for ($i=0;$i<20;)
{
for ($j=1;$j<20;)
{
if (feof($fp)==true){break;}
$str=fgets($fp, 30);
$str1=strstr($str,'+');
if ($str1==false)
{
$m[$i][$j]=$str;
$j++;
}
else
{
$i++;
$m[$i][0]=$str1;
break;
}
}
if (feof($fp)==true){break;}
}
fclose($fp);
for ($i=0;$i<20;)
{
for ($j=0;$j<20;)
{
if (isset($m [$i][$j])){echo $m [$i][$j];}else{break;}
$j++;
}
echo"<br>";
$i++;
}
?>
|
вот текстовый файл (menu.txt) который я юзал пока писал
+квартиры
*1комнотные
*2хкомнатные
*3хкомнатные
*4хкомнатные
+дома
*1комнотные
*2хкомнатные
*3хкомнатные
+склады
*маленькие
*большие
да, еще, скрипт написан без всяких там проверок, тоесть текстовый файл должен быть составлен без ошибок иначе усе приехали | |
|
|
|
|
|
|
|
для: lifead
(19.08.2007 в 22:21)
| | Огромное спасибо вам за ответ!
И у меня будет еще один вапрос как сделать так чтобы когда в текстовом файле добавляеш "ссылки" меню создавалось само? и вазможно ли вообще это? | |
|
|
|
|
|
|
|
для: fancky
(21.08.2007 в 23:47)
| | С теоретической точки зрения возможно, но я этого еще не делал. Могу только подсказать направление - попробуте поюзать функции если функции ничего не дадут можете прибегнуть к помощи классов.
О функциях Вы можете узнать здесь - http://www.softtime.ru/bookphp/gl5_1.php. Если у Вас получится, можете выложить скрипт сюда с комментариями буду оч. благодарен, и думаю не я один. | |
|
|
|