Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] Jak zrobić podkreślenie oglądanego linku?
Forum PHP.pl > Forum > Przedszkole
harbii
Witam!
Chciałbym zrobić coś takiego:
Mamy:

Link1 * Link2 * Link3 * Link4

Chciałbym aby po kliknieciu np Link2 (otwiera się stronka) i linki wyglądają tak:

Link1 * Link2 * Link3 * Link4

Jeżeli wybiore sobie np link4 to mamy:

Link1 * Link2 * Link3 * Link4


Czyli jak zrobić aby w "menu" z linkami był podreślany link z którego aktualnie oglądana jest stronka?
Oczywiście po przejściu na inny link podkreślony jest tylko ten na który prześliśmy (tak jak w przykładzie).
siemakuba
Nie, nie chodzi tu o pseudoklasy hover, active itp.
Musisz jakoś wiedzieć na której jesteś podstronie. Załóżmy, że zrobisz sobie zmienną, która będzie przechowywała informacje o aktualnej oglądanej stronie.
  1. <?php
  2. $page = 'strona2';
  3. ?>

Teraz, musisz nadać linkowi odpowiadającemu tej stronie odpowiednia klasę.
  1. <?php
  2. echo '<a href="#" class="'.($page == 'strona1' ? 'current' : 'normal').'">Link 1</a>';
  3. echo '<a href="#" class="'.($page == 'strona2' ? 'current' : 'normal').'">Link 2</a>';
  4. echo '<a href="#" class="'.($page == 'strona3' ? 'current' : 'normal').'">Link 3</a>';
  5. ?>

Na koniec, nadajesz klasie "current" odpowiedni styl:
  1. A.current {
  2. text-decoration:underline;
  3. }

pozdr.
Lee
Kod
a.active {
    text-decoration: underline;
}

nie działa ?
batman
Cytat
Musisz jakoś wiedzieć na której jesteś podstronie. Załóżmy, że zrobisz sobie zmienną, która będzie przechowywała informacje o aktualnej oglądanej stronie.


Po co zmienna? $_SERVER - tam jest wszystko co potrzeba. Po za tym jestem pewien, że pseudo klasy powinny sobie z tym poradzić.
harbii
hmmm zaden pomysł nie działa
@siemakuba - może twój jest ok. ale co gdziw powklejac bo niebardzo mi to działa. Może coś źle robie.
Podaj wersje dla totalnego laika. gdzie co wkleić na które podstrony jaki kod
ja zrobułem w menu.php
  1. <?php
  2. echo '<a href="#" class="'.($page == 'strona1' ? 'current' : 'normal').'">Link 1</a>';
  3. echo '<a href="#" class="'.($page == 'strona2' ? 'current' : 'normal').'">Link 2</a>';
  4. echo '<a href="#" class="'.($page == 'strona3' ? 'current' : 'normal').'">Link 3</a>';
  5. ?>

w style.css
  1. A.current {
  2. text-decoration:underline;
  3. }

i w np index.php
  1. <?php
  2. $page = 'strona1';
  3. ?>

itd z s2 s3

ale tak nie działa.
HELP!
siemakuba
@harbii: możesz pokazać troszkę więcej (jakikolwiek) kodu - jak i gdzie ustawiasz zmienne, jak pokazujesz.

@batman: masz rację, jest tablica $_SERVER, ale wydaje mi się, że dla laika prościej będzie ustawić kilka zmiennych i z nich korzystać niż grzebać w tabjemniczej tablicy $_SERVER i dochodzić co w niej jest.

Cytat
Po za tym jestem pewien, że pseudo klasy powinny sobie z tym poradzić.
Moja pewność jest zupełnie odwrotna. Nie wydaje mi się, żeby CSS wiedział jaką stronę aktualnie przeglądasz :) Pseudoklasa :active uruchamia się zdaje się w momencie kliknięcia na link, prawda? Po tym kliknięciu jesteś już na kolejnej podstronie.

pozdr.
batman
Cytat
masz rację, jest tablica $_SERVER, ale wydaje mi się, że dla laika prościej będzie ustawić kilka zmiennych i z nich korzystać niż grzebać w tabjemniczej tablicy $_SERVER i dochodzić co w niej jest.


Wydaje mi się, że lepiej od samego początku uczyć się poprwnie programować, niż kombinować jak koń pod górkę. Co do styli, to moja pewność nieco zmalała winksmiley.jpg
phpion
a:active zadziala ale tylko w ramkach. Przy przeladowaniu strony nie bedzie dzialac. Moze zrobic to tak:
  1. .aktywny {
  2. font-weight: bold;
  3. }
  4. .normalny {
  5. font-weight: normal;
  6. }

  1. <?php
  2. $pages = Array(1 => "Strona glowna", "Druga strona", "Trzecia strona");
  3.  
  4. $page = (isset($_GET['page'])) ? $_GET['page'] : 1;
  5.  
  6. foreach ($pages as $index => $value)
  7. {
  8. $class = ($index == $page) ? 'aktywny' : 'normalny';
  9.  
  10. echo '<a href="index.php?page='.$index.'" class="'.$class.'">'.$value.'</a> ';
  11. }
  12. ?>

W sumie nie sprawdzalem ale powinno byc ok.
s_w_ir
To co podam poniżej działa dzięki temu że body każdej strony ma inne id. Tzn dzięki id wiadomo która zakładka ma być wyrózniona.

http://forum.php.pl/index.php?showtopic=52...mp;#entry287981
harbii
po testach i małych przeróbkach działa sposób @siemakuba
ALE
nie działa jeżeli wszystko wrzucam przez index.php.

Czyli jeżeli napisze to tak:

start.php
  1. <LINK rel="stylesheet" href="tlo.css" type="text/css">
  2. <?php
  3. $page = 'strona1';
  4. ?>
  5. <?php
  6. echo '<a href="start.php" class="'.($page == 'strona1' ? 'current' : 'normal').'">start<br></a>';[php]
  7. echo '<a href="strona2.php" class="'.($page == 'strona2' ? 'current' : 'normal').'">Link 2<br></a>';
  8. echo '<a href="kontakt.php" class="'.($page == 'strona3' ? 'current' : 'normal').'">Link 3<br> </a>';
  9. ?>
  10.  
  11. START


strona2.php
  1. <LINK rel="stylesheet" href="tlo.css" type="text/css">
  2. <?php
  3. $page = 'strona2';
  4. ?>
  5. <?php
  6. echo '<a href="start.php" class="'.($page == 'strona1' ? 'current' : 'normal').'">start<br></a>';
  7. echo '<a href="strona2.php" class="'.($page == 'strona2' ? 'current' : 'normal').'">Link 2<br></a>';
  8. echo '<a href="kontakt.php" class="'.($page == 'strona3' ? 'current' : 'normal').'">Link 3<br> </a>';
  9. ?>
  10.  
  11. STRONA2


kontakt.php
  1. <LINK rel="stylesheet" href="tlo.css" type="text/css">
  2. <?php
  3. $page = 'strona3';
  4. ?>
  5. <?php
  6. echo '<a href="start.php" class="'.($page == 'strona1' ? 'current' : 'normal').'">start<br></a>';
  7. echo '<a href="strona2.php" class="'.($page == 'strona2' ? 'current' : 'normal').'">Link 2<br></a>';
  8. echo '<a href="kontakt.php" class="'.($page == 'strona3' ? 'current' : 'normal').'">Link 3<br> </a>';
  9. ?>
  10.  
  11. KONTAKT


tlo.css
  1. BODY { background-color:#000000; font-size:10; color:#CCCCCC; font-family:Arial, Helvetica, sans-serif}
  2. A{color: ffffff; text-decoration:inherit; text-decoration: none; font-size:12; font-family:Arial, Helvetica, sans-serif}
  3. A:hover{color: #ffffff; font-size:12; text-decoration:underline; font-family:Arial, Helvetica, sans-serif}
  4. table { background-color:#000000; font-size:13; color:#CCCCCC; font-family:Arial, Helvetica, sans-serif}
  5. A.current {
  6. text-decoration:underline;
  7. }


TO DZIAŁA!!! aarambo.gif

ale nie o to chodzi smile.gif nie poto robie tą stronke w php aby każdą osobno pisać

Ja bym chciał ayby działało to tak:

tlo.css
  1. BODY { background-color:#000000; font-size:10; color:#CCCCCC; font-family:Arial, Helvetica, sans-serif}
  2. A{color: ffffff; text-decoration:inherit; text-decoration: none; font-size:12; font-family:Arial, Helvetica, sans-serif}
  3. A:hover{color: #ffffff; font-size:12; text-decoration:underline; font-family:Arial, Helvetica, sans-serif}
  4. table { background-color:#000000; font-size:13; color:#CCCCCC; font-family:Arial, Helvetica, sans-serif}
  5. A.current {
  6. text-decoration:underline;
  7. }


menu.php
  1. <?php
  2. echo '<a href="index.php?srodek=start.php" class="'.($page == 'strona1' ? 'current' : 'normal').'">start<br></a>';
  3. echo '<a href="index.php?srodek=strona2.php" class="'.($page == 'strona2' ? 'current' : 'normal').'">Link 2<br></a>';
  4. echo '<a href="index.php?srodek=kontakt.php" class="'.($page == 'strona3' ? 'current' : 'normal').'">Link 3<br> </a>';
  5. ?>




start.php
  1. <?php
  2. $page = 'strona1';
  3. ?>
  4.  
  5.  
  6. START


kontakt.php
  1. <?php
  2. $page = 'strona3';
  3. ?>
  4.  
  5.  
  6. KONTAKT


strona2.php
  1. <?php
  2. $page = 'strona2';
  3. ?>
  4.  
  5.  
  6. STRONA2


A WSZYSTKO IDZIE PRZEZ INDEX.php

index.php
  1. <LINK rel="stylesheet" href="tlo.css" type="text/css">
  2.  
  3. <?php
  4. include ('menu.php')
  5. ?><br />
  6. <br />
  7. <?php
  8.  
  9.  
  10. if (isset($_GET['srodek']))
  11. {
  12. $srodek=$_GET['srodek'];
  13. include("./$srodek");
  14. }
  15. else
  16. { 
  17. include('./start.php');
  18. }
  19.  
  20. ?>



A w ten sposób nie działa sad.gif Myśl @siemakuba jest dobra ale teraz pomóżcie w przerobieniu to aby działoło to przez includy w index.php

blink.gif
siemakuba
Bo, skoro robisz to tak, to wszystko jets proste. Zamiast tworzyć zmienne tak jak pokazałem możesz użyć tego co już masz, czyli zmiennych w $_GET, bo na ich podstawie pokazujesz cokolwiek w środku.

Plik menu.php:
  1. <?php
  2. echo '<a href="start.php" class="'.($_GET['srodek'] == 'strona1' ? 'current' : 'normal').'">start<br></a>';
  3. echo '<a href="strona2.php" class="'.($_GET['srodek'] == 'strona2' ? 'current' : 'normal').'">Link 2<br></a>';
  4. echo '<a href="kontakt.php" class="'.($_GET['srodek'] == 'strona3' ? 'current' : 'normal').'">Link 3<br> </a>';
  5. ?>

Oczywiście zamiast strona1, strona2 itd. podstaw swoje wartości.

pozdr.
harbii
wywala teraz

Notice: Undefined index: srodek in d:\easyphp1-8\easyphp1-8\www\t\menu.php on line 2
start

Notice: Undefined index: srodek in d:\easyphp1-8\easyphp1-8\www\t\menu.php on line 3
Link 2

Notice: Undefined index: srodek in d:\easyphp1-8\easyphp1-8\www\t\menu.php on line 4
Link 3


START
phpion
Moze sprobuj przetestowac to, co ja napisalem? Moje dziala na pewno.
siemakuba
O ranny rany...
kurcze, trzeba jeszcze by sprawdzić skąd się bierze taki Notice, ale to już nie proste.. eh...
Undefined Index = nie w tablicy $_GET klucza 'srodek'. W kodzie, który pokazałeś masz sprawdzanie tego, uznałem że dalej sobie poradzisz.

Zrób tak:
  1. <?php
  2. $page = isset($_GET['srodek']) ? $_GET['srodek'] : '');
  3.  
  4. echo '<a href="start.php" class="'.($page == 'strona1' ? 'current' : 'normal').'">start<br></a>';
  5. echo '<a href="strona2.php" class="'.($page == 'strona2' ? 'current' : 'normal').'">Link 2<br></a>';
  6. echo '<a href="kontakt.php" class="'.($page == 'strona3' ? 'current' : 'normal').'">Link 3<br> </a>';
  7. ?>


pozdr.
harbii
@siemakuba
coś to nie działa sad.gif, w drugiej linie jest błąd, coś chyba z nawiasami.

@phpion.com
to działa. tylko podpowiedz mi gdzie wpisać linki do podstron?
siemakuba
@harbii: osłabiasz mnie... gdybyś trochę pomyślał a nie oczwkiwał gotowego rozwiązania wszystko by działało. Fakt, zgubiłem jeden nawias, ale powinieneś to zauważyć, tymbardziej, że dostałeś info o błędzie.
  1. <?php
  2. $page = isset($_GET['srodek']) ? $_GET['srodek'] : '';
  3. ?>

To jest poprawiona linia 2. Z mojej strony EOT, dopuki nie wykażesz inicjatywy.

pozdr.
harbii
jakbym się tak dobrze znał na php to bym poprawiał błędy, ale ja niestety się dopiero uczę php

po twojej poprawce niestety nadal nie działa.

pomysł @phpion.com działa
tylko nie wiem jak wpisac linki
lopik
Do skryptu: phpion.com

Jeśli dobrze to rozumiem, to dopisujesz je do tablicy:
Przecinek, i w nawiasie nazwa linka.

  1. <?php
  2. $pages = array(1 => "Strona glowna", "Druga strona", "Trzecia strona", "Strona Czwarta");
  3. ?>


Ale pewno nie rozumiem tego winksmiley.jpg
harbii
no ok.
ale gdzie wpisać linki?
bo jak skopiuje <a ....
to dublują sie i mam
Strona glowna Druga strona Trzecia strona Strona glowna Druga strona Trzecia strona
lopik
Wpisujesz tylko w tablice.
A pęta już reszte zrobi, nie musisz dodawac żednego <a

Zrób tak, i zobacz jak to wygląda a potem pytaj.

U mnie to działa bardzo dobrze.
harbii
  1. <style>
  2. .aktywny {
  3. font-weight: bold;
  4. }
  5. .normalny {
  6. font-weight: normal;
  7. }
  8. </style>
  9. <?php
  10. $pages = Array(1 => "Strona glowna", "Druga strona", "Trzecia strona");
  11.  
  12. $page = (isset($_GET['page'])) ? $_GET['page'] : 1;
  13.  
  14. foreach ($pages as $index => $value)
  15. {
  16. $class = ($index == $page) ? 'aktywny' : 'normalny';
  17.  
  18. echo '<a href="index.php?page='.$index.'" class="'.$class.'">'.$value.'</a> ';
  19.  
  20.  
  21. }
  22. ?>

mamy to i gdzie tu wpisać że po kliknięciu na strone główną ma otwierać się start.php, a po kliknieciu Druga strona ma otworzy się strona2.php...questionmark.gif blink.gif

Może ktoś zna inny sposób, skoro tych niekt nie potrafi poprawnie napisać?

w powyższym przykładzie wszystkie linki są grube ( i aktywne i nie aktywne)

nie ma nikogo mądrego?sad.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.