Jump to content
php.lv forumi

2 slāņu menu


raivis

Recommended Posts

Sveicināti php eksperti!

 

Būvēju 2 slāņainu menu, kura ID links, include fails un nosaukums piem. 2 valodās tiktu glabāts menu.dot failā.

Problēmu man sagādā menu 2 slāņa korekta manīgo noteikšana un attiecīga to vērtību izvadīšana.

Vēlos panākt, lai, kad esmu linkā menu.php?lang=en&id=portfolio, man tiek izvadīta attiecīgajā valodā pēc $lang vērtības (EN vai LV) izvēlne, kas izskatītos aptuveni:

-----------------

Kā noprotu izmaiņas vajadzētu veikt rindā

foreach($lines as $line_num => $line){ lai mainīgo vērtības tiktu pārsauktas jeb atšķirtas nevis ar katru jauno rindu, bet simbolu "#" mainīgajā $menu2.

Ceru, ka jūs man varēsiet tam ieteikt kādu vieglu risinājumu.

Paldies!

 

 

------menu.txt--------

news|News|news.php|intro:Intro/Ievads|

portfolio|Portfolio|portfolio.php|photo:Photo/Foto#video:Video/Video#www:WEB Design/WEB Dizains|

services|Services|services.php|photo:Photo/Foto#www:WEB Design/WEB Dizains|

contacts|Contacts|contacts.php||

------menu.php-------

$lines = file("content/data/menu.dat");
foreach($lines as $line_num => $line){
list($a_href,$name,$sourche,$menu2)=explode('|', $line);
list($name_en,$name_lv) = explode('/', $name);
list($menu2a) = explode('#', $menu2);
	list($menu2_href,$menu2_name) = explode(':', $menu2a);
	list($menu2_name_en,$menu2_name_lv) = explode('/', $menu2_name);
if(isset($echo_menu2)){ $echo_menu=$echo_menu2; }
if($_GET['id']==$a_href){
	if($_GET['lang']=="en"){
		echo "<a href=\"menu.php?lang=$lang&id2=".$menu2_href."\">".$menu2_name_en."</a>;
	}elseif($_GET['lang']=="lv"){
		echo <a href=\"menu.php?lang=$lang&id2=".$menu2_href."\">".$menu2_name_lv."</a>;
	}
}
}

Link to comment
Share on other sites

  • Replies 37
  • Created
  • Last Reply

Top Posters In This Topic

ja gribi kruta un failā, tad xml, kam pa virsu uzraidi xslt. domāt kaut kādu savu formātu tik tāpēc, lai būtu citādāk no citiem, var atļauties tikai m$.

 

parasti gan pietiktu, ja ar roku sarakstītu to menu ar portfeli un bilžu galeriju htmlā - ātrāk/serverim mazāk liekas darbības jādara. :)

Link to comment
Share on other sites

$items = Array();

$item['name'] = 'home';
$item['labels'] = Array($lv_lang_id => 'Latviski', $en_lang_id => 'Angliski');
$item['url'] = 'index.php';
$item['subitems'] = Array($otherItem1,$otherItem2);

$items[] = $item;
$items[] = $item;

$menu['subitems'] = $items;

Edited by Delfins
Link to comment
Share on other sites

Šķiet ka jūs manu jautājumu pārpratāt.

Lūk, arī šis variants nav īsti korekts:

 

$lines = file("menu.txt");

foreach($lines as $line_num => $line){

list($a_href,$name,$sourche,$menu2)=explode('|', $line);

foreach($lines as $line_num => $menu2){

list($menu2a) = explode('#', $menu2);

list($menu2_href,$menu2_name) = explode(':', $menu2a);

if($_GET['id1']==$a_href){

echo "<a href=\"menu.php?lang=$lang&id1=".$a_href."&id2=".$menu2_href."\">".$menu2_name_en."</a>";

}

}

}

------menu.txt--------

news|News|news.php|intro:Intro|

portfolio|Portfolio|portfolio.php|photo:Photo#video:Video#www:WEB Design|

services|Services|services.php|photo:Photo#www:WEB Design|

contacts|Contacts|contacts.php||

------------------------

 

itkā risinājumam ir jābūt funkcijas foreach() izpildē, lai katra rindas mainīgo vērtības tiktu atšķirtas ar simbolu "#" mainīgajā $menu2

Vai kādam prātā rastos kāds loģisks risinājums?

Paldies!

 

Vēlos, lai piem. linkā menu.php?id=portfolio, man tiek izvadīta izvēlne:

Photo

Video

WEB Design

Edited by raivis
Link to comment
Share on other sites

Loģisks risinājums ir prātā :) Atteikties no tās dīvainās faila struktūras, kura gaisu jauc. Un :

1) turēt prastu php failiņu ar struktūru, tipa, kā Delfins uzrakstīja

2) izmantot mysql ar tabulu, tipa: item_id | name | parent_id. Un no tās taisīt struktūru, kā Delfins uzrakstija

3) taisīt augstāk minēto tabulu teksta failiņā, un rakstīt iekš php handleri, kas no tā failiņa taisīs struktūru, kā Delfins uzrakstīja :)

Link to comment
Share on other sites

Diemžēl ar MySql neesmu tik ļoti pazīstams. Kaut gan domāju ka būtu laiks to iepazīt tuvāk.

Vai jūs, lūdzu, varētu man norādīt pēc iespējas labāku virzienu, kā lai elementāri ar php mysql funkcijām izveidoju tabulas struktūru, kur glabātos mana menu dati.

Un kā lai to izvadu kā 2 slāņainu menu, piem.

News

--Intro

Portfolio

--Photo

--Video

--WEB Design

Services

--Photo

--WEB Design

Contacts

 

 

Kā lai panāku, kad $id=services, pie menu Services ir bold tekstā + tiek izvadīta, jeb piedāvāta papildus izvēlne

--Photo

--WEB Design

 

Un kā lai rediģēju menu, to mainot, dzēšot un pie tā pievienojot jaunus datus?

 

Man nesagādātu nekādas lielās grūtības to visu paveikt, ja mainīgo vērtības tiktu glabātas *.txt failā, kas kā atzīstu nav labākais risinājums.

Varbūt jūs varat man piedāvāt kādu linku uz tml. php + mysql 2 slāņainu menu paraugu, kuru būtu iespējams vienkārši rediģēt caur html formām?

 

 

Liels paldies!

Link to comment
Share on other sites

Nedomāju, ka patiešām nav neviena, kas nespētu atrisināt šādu jautājumu:

 

Atšķirt faila menu.txt katras rindas mainīgo vērtības ar simbolu "#" mainīgajā $menu2.

Pēc manām domām risinājumam ir jābūt funkcijas foreach() izpildē.

Tam vajadzētu izskatīties šadi, no linka menu.php?id=portfolio :

  • Photo
  • Video
  • WEB Design

$lines = file("menu.txt");

foreach($lines as $line_num => $line){

list($a_href,$name,$sourche,$menu2)=explode('|', $line);

foreach($lines as $line_num => $menu2){

list($menu2a) = explode('#', $menu2);

list($menu2_href,$menu2_name) = explode(':', $menu2a);

if($_GET['id1']==$a_href){

echo "<a href=\"menu.php?lang=$lang&id1=".$a_href."&id2=".$menu2_href."\">".$menu2_name."</a>";

}

}

}

Faila menu.txt saturs:

news|News|news.php|intro:Intro|

portfolio|Portfolio|portfolio.php|photo:Photo#video:Video#www:WEB Design|

services|Services|services.php|photo:Photo#www:WEB Design|

contacts|Contacts|contacts.php||

Link to comment
Share on other sites

Nesaprotu, kur ir problēma? Tajā, ka nemāki, vai negribi iemācīties?

Priekšā rakstīt negribu un nerakstīšu. Tu labāk prasi konkrētas lietas. Raksti un rādi, kas tev sanāk un kas nē.

 

Ko labāk ir izdarīt ar izsalkušu cilvēku? Iedot viņam zivis vai arī labāk iedot makšķeri un iemācīt ķert zivis?

Link to comment
Share on other sites

Nevajag taisīt muļķīgas QUOTEs (bubu)

 

Taadaa gadiijumaa noraadi man uz kaadu risinaajumu, paliekot pie taa pasha koda izstraades -

$lines = file("menu.txt");

foreach($lines as $line_num => $line){

list($a_href,$name,$sourche,$menu2)=explode('|', $line);

foreach($lines as $line_num => $menu2){

list($menu2a) = explode('#', $menu2);

list($menu2_href,$menu2_name) = explode(':', $menu2a);

if($_GET['id1']==$a_href){

echo "<a href=\"menu.php?lang=$lang&id1=".$a_href."&id2=".$menu2_href."\">".$menu2_name."</a>";

}

}

}

Link to comment
Share on other sites


×
×
  • Create New...