Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Rozwijalne podkategorie
Forum PHP.pl > Forum > Przedszkole
racuhh
Witam

Zostałem poproszony o pomoc przy stronie: http://starymlyn.com.pl/sklep/ . Problem, z którym boryka się właściel to kwestia zwijających się podkategorii po lewej stronie. Mówiąc dokładniej -> gdy wybierzemy kolejno np.:
1)Derki
2)letnie
Otwiera nam się strona z wybranymi produktami jednak kategorie po lewej wracają do swojej początkowej postaci, tzn. zwijają się. I tu moje pytanie - czy istnieje mozliwość zablokowania zwijania się tych kategorii?
SmokAnalog
Tak, istnieje taka możliwość, ale nie będzie to bardzo proste do wykonania.

Niewidoczne podmenu na tej stronie są zapisane tak:
  1. <li id="kat35" style="display: none;">


A widoczne tak:
  1. <li id="kat35" style="display: block;">


Teraz cały myk polega na tym, żeby dla aktualnej kategorii zamienić "none" na "block" w kodzie HTML. W skrypcie wyświetlającym to menu będzie trzeba sprawdzić czy aby nie jesteśmy na podstronie kategorii, a jeśli tak, to pobrać jej ID i przy odpowiednim podmenu zamiast "none" dać "block".

Mam nadzieję, że w miarę jasno wytłumaczyłem. Nie wiem na ile się orientujesz w tym sprawach.
jackraymund
Bo rozwijanie masz w js'ie a jak wchodzisz w link to się js resetuje.
Podam ci 3 rozwiązania tego problemu
1. ładowanie contentu strony przez js'a
2. zapisywanie otwartych okienek w cookiesach i odczyt w php
3. jeżeli tylko dla pojedyńczej kategorii to możesz sprawdzić czy taka kategoria istnieje, sprawdzając parametr GET i zrobić to co napisał użytkownik wyżej
Gość
Na wstępie dziękuję za szybkie odpowiedzi. Co do moich umiejętności to nie są one niestety na wysokim poziomie dlatego prosił bym o delikatnie przybliżenie wypisanych wyżej mozliwości rozwiązania problemu. O ile oczywiście istnieje taka możliwość. Który Twoim zdaniem będzie najprostszy do wykonania dla laika ?
jackraymund
punkt 3 będzie dość banalny
musisz znaleźć gdzie jest dodawanie tego html'a
  1. <li id="kat35" style="display: block;">
  2. <ul class="lista">
  3.  
  4. <li class="link_kat"><a href="wyswietlProdukty.php?kategoria=41">Letnie</a></li>
  5. </ul>
  6. </li>

jeżeli to potrzebne to musisz przerobić, aby najpierw zbierało dane a potem łączyło
czyli jeżeli
  1. if ($_GET['kategoria'] == $zmiennakategori) {
  2. echo 'style="display: block;"';
  3. }
  4. else
  5. {
  6. style="display: none;"
  7. }

nie wiem jak wygląda ten skrypt, więc nie wiem w jaki sposób można byłoby go najłatwiej przerobić
te zapytanie możesz też zastąpić
  1. echo 'style="display: '.($_GET['kategoria'] == $zmiennakategori) ? 'block':'none').';"';
Gość
Czy chodzi o ten skrypt :

<?php
// tutaj tworzymy listy z kategoriami

//echo "<script type=\"text/javascript\"> ";
//echo "document.getElementById('kat5').listElementStyle.display=\"none\";"; // collapse list




//echo"</script> ";
echo "<ul>";

foreach ($GLOBALS['strona']['kategorie'] as $kategorie){
if($kategorie['rodzic_id']==0){
echo "\n<li class=\"kat_glowna\" style=\"list-style: block\">\0";

if(count(pobierzPodkategorie($kategorie['kategoria_id'])) > 0 ){
echo "<a href=\"java script:switchit('kat".$kategorie['kategoria_id']."')\">".$kategorie['nazwa']."</a></li>\n";
}
else{
if ($kategorie['kategoria_id']==87){
echo "<a href=\"http://starymlyn.com.pl/Katalog%202003/Koniowozy/koniowozy.htm\">".$kategorie['nazwa']."</a></li>\n";
}
else{
echo "<a href=\"wyswietlProdukty.php?kategoria=".$kategorie['kategoria_id']."\">".$kategorie['nazwa']."</a></li>\n";
}
}
//if (isset($_GET['kategoria']) && $_GET['kategoria']==$kategorie['kategoria_id'] && sprawdzKat($_GET['kategoria'])){
wyswietlPodkategorie($kategorie['kategoria_id']);
// }


}
}

echo "</ul>";


//koniec list z kategoriami


?>

?
jackraymund
Blisko
  1. wyswietlPodkategorie($kategorie['kategoria_id']);

ta funkcja wyświetla podkategorie, wyślij kod tej funkcji
Gość
Nie wiem czy o to chodziło:

<?php /* Smarty version 2.6.16, created on 2007-02-23 13:15:23
compiled from wyswietlPodkategorie.tpl */ ?>
<table>
<tr><td><a href="wyswietlProdukty.php?kategoria=<?php echo $this->_tpl_vars['strona']['kategoria_id']; ?>
&podkategoria_id=wszystkie">Wszystkie</a></td></tr>
<?php unset($this->_sections['p']);
$this->_sections['p']['name'] = 'p';
$this->_sections['p']['loop'] = is_array($_loop=$this->_tpl_vars['strona']['podkategorieKat']) ? count($_loop) : max(0, (int)$_loop); unset($_loop);
$this->_sections['p']['show'] = true;
$this->_sections['p']['max'] = $this->_sections['p']['loop'];
$this->_sections['p']['step'] = 1;
$this->_sections['p']['start'] = $this->_sections['p']['step'] > 0 ? 0 : $this->_sections['p']['loop']-1;
if ($this->_sections['p']['show']) {
$this->_sections['p']['total'] = $this->_sections['p']['loop'];
if ($this->_sections['p']['total'] == 0)
$this->_sections['p']['show'] = false;
} else
$this->_sections['p']['total'] = 0;
if ($this->_sections['p']['show']):

for ($this->_sections['p']['index'] = $this->_sections['p']['start'], $this->_sections['p']['iteration'] = 1;
$this->_sections['p']['iteration'] <= $this->_sections['p']['total'];
$this->_sections['p']['index'] += $this->_sections['p']['step'], $this->_sections['p']['iteration']++):
$this->_sections['p']['rownum'] = $this->_sections['p']['iteration'];
$this->_sections['p']['index_prev'] = $this->_sections['p']['index'] - $this->_sections['p']['step'];
$this->_sections['p']['index_next'] = $this->_sections['p']['index'] + $this->_sections['p']['step'];
$this->_sections['p']['first'] = ($this->_sections['p']['iteration'] == 1);
$this->_sections['p']['last'] = ($this->_sections['p']['iteration'] == $this->_sections['p']['total']);
?>
<tr><td><a href="wyswietlProdukty.php?kategoria=<?php echo $this->_tpl_vars['strona']['kategoria_id']; ?>
&podkategoria_id=<?php echo $this->_tpl_vars['strona']['podkategorieKat'][$this->_sections['p']['index']]['podkategoria_id']; ?>
"><?php echo $this->_tpl_vars['strona']['podkategorieKat'][$this->_sections['p']['index']]['nazwa']; ?>
</a></td></tr>
<?php endfor; endif; ?>
</table>
jackraymund
Też nie to,
funkcja ta nie znajduje się w żadnej klasie, a patrząc na $this-> ta funkcja się w niej znajduje
powinieneś gdzieś znaleźć taki kod
  1. function wyswietlPodkategorie($jakaśzmienna)

Tak czy inaczej, aby przebudowywac ci strone nie mam czasu, ale gdybyś chciał, mogę ci to odpłatnie zrobić. gg 271638
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.