Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP][JavaScript] ukrywanie elementu zależnie od url
phpamator
post 5.03.2018, 13:34:34
Post #1





Grupa: Zarejestrowani
Postów: 321
Pomógł: 3
Dołączył: 10.07.2016
Skąd: UK-raine

Ostrzeżenie: (0%)
-----


Witajcie przedszkolacy i przedszkolanki

Napotkałem na problem z którym nie bardzo wiem jak sobie poradzić, otóż chciałbym ukryć element jeśli ostatnie znaki url'a są inne niż i tu na przykład:
p=1 czyli jeśli ostatnie znaki to p=1 pokazujemy co chcemy a jeśli np p=2 to ukrywamy co chcemy
Tak więc idąc w kierunku rozwiązania problemu zrobiłem co następuje:

  1. jQuery(document).ready(function () {
  2. var winwidth = jQuery(window).width();
  3. console.log(winwidth);
  4. if((window.location.href.indexOf(".html?p=1") > -1) || (window.location.href.indexOf(".html") > -1)){
  5. jQuery('.ukryj_mnie').css('display','block');
  6. }else{
  7. jQuery('.ukryj_mnie').css('display','none');
  8. }
  9. });
  10.  

i to powiedzmy działa ale nie do końca jak bym chciał żeby działało bo kiedy url kończy się ".html" to i tak będzie pokazywał element ponieważ url w dalszym ciągu zawiera ".html" niezależnie czy to będzie ".html?p=3... czy 10000000"
dlatego muszę zmienić podejście ale nie bardzo wiem jak bo chyba najlepiej byłoby sprawdzić ostatnie znaki jakimś regexem ... którego w dalszym ciągu nie czaję.

Na koniec chciałbym dodać jeszcze sprawdzanie wielkości okna i ukrywać jeśli wielkość okna jest mniejsza niż np 450px i string !="?p=1" lub '.html'
Jak to zrobić ?

Ten post edytował phpamator 5.03.2018, 14:39:08
Go to the top of the page
+Quote Post
trueblue
post 5.03.2018, 14:04:08
Post #2





Grupa: Zarejestrowani
Postów: 6 761
Pomógł: 1822
Dołączył: 11.03.2014

Ostrzeżenie: (0%)
-----


https://jsfiddle.net/9fgr1ana/2/

Skoro masz parametr w $_GET, to dlaczego nie ukryjesz z poziomu PHP?


--------------------
Go to the top of the page
+Quote Post
phpamator
post 5.03.2018, 14:34:16
Post #3





Grupa: Zarejestrowani
Postów: 321
Pomógł: 3
Dołączył: 10.07.2016
Skąd: UK-raine

Ostrzeżenie: (0%)
-----


Bo ja chce ukryć <div> a nie stronę (link)?
Jeśli to robi jakąkolwiek różnicę


Ten post edytował phpamator 5.03.2018, 14:38:32
Go to the top of the page
+Quote Post
nospor
post 5.03.2018, 14:36:40
Post #4





Grupa: Moderatorzy
Postów: 36 440
Pomógł: 6290
Dołączył: 27.12.2004




Naprawde poziom twojej inteligencji stanal na etapie pokazywania jezyka po kazdym zdaniu? Takie szczeniackie odzwyki to ja tylko u dzieci do pewnego wieku obserwowalem....

co do problemu: a co ma piernik do wiatraka? Co z tego czy to div czy strona? Moze opisz problem dokladniej, tym razem z zachowaniem odrobiny kultury smile.gif


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

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
viking
post 5.03.2018, 14:38:39
Post #5





Grupa: Zarejestrowani
Postów: 6 365
Pomógł: 1114
Dołączył: 30.08.2006

Ostrzeżenie: (0%)
-----


https://davidwalsh.name/query-string-javascript


--------------------
Go to the top of the page
+Quote Post
phpamator
post 5.03.2018, 15:04:34
Post #6





Grupa: Zarejestrowani
Postów: 321
Pomógł: 3
Dołączył: 10.07.2016
Skąd: UK-raine

Ostrzeżenie: (0%)
-----


Nie rozumiem po co się unosisz ale skoro tak bardzo ciebie to drażni postaram się ograniczyć używanie emotikonów.

Zawartość strony stanowią bloki statyczne i dynamiczna lista produktów
, chciałem wyłączać pewne "bloki" jeśli strona listy jest większa niż "1" oraz jeśli strona otwierana jest na urządzeniu mobilnym,
w przypadku "desktopów" nie ma znaczenia i nie chcę ich ukrywać.
Czyli jeśli url zawiera "?p=1 i min-width: 450px" pokazuje jeśli nie ... wiadomo chowamy. W sumie to podsunąłeś mi pewnien bardzo prosty pomysł.
Jeśli $('li').click(function(){ var costam = $('li').val() >1; if(costam >1){$('#mojdiv').css('display','none')}})
do tego dodam tylko sprawdzanie wielkości okna i to powinno załatwić sprawę.

Może nie "super" rozwiązanie ale powinno wystarczyć.

Jak sądzicie ?
Go to the top of the page
+Quote Post
nospor
post 5.03.2018, 15:07:50
Post #7





Grupa: Moderatorzy
Postów: 36 440
Pomógł: 6290
Dołączył: 27.12.2004




Nie chodzilo mi o jakies emotikonki. Chodzili mi o JEZYKI (tongue.gif) ktore pokazywales w jako odpowiedz dla logicznego rozwiazania podanego tobie przez osobe, ktora chciala ci pomoc. Naprawde nie widzisz roznicy?

Chowanie blokow mozesz robic w php tudziez w widoku (zalezy czego i jak uzywasz).
Co do chowania elementow w zaleznosci od mobile czy nie to do tego uzywa sie media queries w css.

Stosowanie js do obu rozwiazan jest poprostu chybione

edit:
Cytat
, chciałem wyłączać pewne "bloki" jeśli strona listy jest większa niż "1" oraz jeśli strona otwierana jest na urządzeniu mobilnym,

Jesli strona listy jest wieksza niz 1 to nadajesz blokowi jakas klase, np more-than-1 (tak, robisz to podczas generowania widoku a nie js) a potem w css ustalasz widocznosc dla tej klasy w zaleznosci czy mobile czy nie.
Rozwiazanie to jest banalnie proste i daje sie potem latwo modyfikowac i kazdy wie o co chodzi


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

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
phpamator
post 5.03.2018, 15:25:20
Post #8





Grupa: Zarejestrowani
Postów: 321
Pomógł: 3
Dołączył: 10.07.2016
Skąd: UK-raine

Ostrzeżenie: (0%)
-----


Chyba się nie do końca prawidłowo opowiedziałem.
Blok ma być widoczny zawsze gdy otwarta jest pierwsza strona "paginacji" i ukryta tylko w trybie mobile jeśli strona paginacji jest różna od 1 oraz zaraz po załadowaniu strony kiedy jeszcze w url'u niema żadnych dodatkowych informacji jak "?p=numer strony" tylko "strona.html"
to tak dla całkowitego rozjaśnienia o co mi chodziło.


Ten post edytował phpamator 5.03.2018, 15:30:28
Go to the top of the page
+Quote Post
nospor
post 5.03.2018, 15:26:54
Post #9





Grupa: Moderatorzy
Postów: 36 440
Pomógł: 6290
Dołączył: 27.12.2004




No to przeciez napisalem jak to zrobic
Cytat
Jesli strona listy jest wieksza niz 1 to nadajesz blokowi jakas klase, np more-than-1 (tak, robisz to podczas generowania widoku a nie js) a potem w css ustalasz widocznosc dla tej klasy w zaleznosci czy mobile czy nie.
Rozwiazanie to jest banalnie proste i daje sie potem latwo modyfikowac i kazdy wie o co chodzi

To wlasnie to.


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

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
phpamator
post 5.03.2018, 15:30:42
Post #10





Grupa: Zarejestrowani
Postów: 321
Pomógł: 3
Dołączył: 10.07.2016
Skąd: UK-raine

Ostrzeżenie: (0%)
-----


Myślałem o takim rozwiązaniu, dodałem do bloku klasę i zależnie od tego któa strona aktualnie była otwarta itd to nawet działało ale
kiedy w url'u nie było jak już wspominałem "?p=1" chowało mi blok czyli jak miałem "strona.html" to blok też był schowany. I tego nie wiedziałem jak ugryźć stęd moje pytanie.

Z pewnością jako osoba zaawansowana znasz Magento i jak to to działa.
Sposób w jaki generowane są strony i w jaki sposób mozna modyfikować ich zawartość jest nieco inny. To wiesz na pewno.
Nie chciałbym kopać w kodzie dlatego czepiłem się jQuery bo to najłatwiejsza chyba droga żeby na szybko coś takiego zrobić.
Czy nie ?

Ten post edytował phpamator 5.03.2018, 15:33:51
Go to the top of the page
+Quote Post
nospor
post 5.03.2018, 15:34:37
Post #11





Grupa: Moderatorzy
Postów: 36 440
Pomógł: 6290
Dołączył: 27.12.2004




edit:
Cytat
Z pewnością jako osoba zaawansowana znasz Magento i jak to to działa.
Sposób w jaki generowane są strony i w jaki sposób mozna modyfikować ich zawartość jest nieco inny. To wiesz na pewno.

Ze to magento to raczyles wspomniec dopiero teraz. Czasami warto takich informacji udzielac troche wczesniej tongue.gif (tak, teraz jezor jest jak najbardziej na miejscu wink.gif )
I nie, nie mialem potrzeby wczesniej zajmowac sie magento. To tak jakby mi ktos powiedzial, ze znam wordpress tylko dlatego ze jestem osoba zaawanasowana... wrecz odrotnie, wlasnie dlatego nie znam wordpress wink.gif tak wiem, my tu o magento gadamy.
Tak wiec nie, nie znam sie na magento i nie wiem jak tam sie dobiera do szablonow. Teraz rozumiem twoj upor w sprawie js. Nastepnym razem informuj wczesniej czego uzywasz to ma istotne znaczenie podczasu udzielania odpowiedzi.


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

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
phpamator
post 5.03.2018, 15:40:24
Post #12





Grupa: Zarejestrowani
Postów: 321
Pomógł: 3
Dołączył: 10.07.2016
Skąd: UK-raine

Ostrzeżenie: (0%)
-----


Hahaha, no widzisz, nie sądziłem że to będzie miało aż takie znaczenie.
Tak czy owak, skoro już wiesz na czym polega problem może coś zasugerujesz.

Gdyby to było takie proste i dotyczyło jednej strony to wbił bym warunek jeśłi url = cośtam i wielkość okna = cośtam to pokaż/schowaj i byłoby po kłopocie
prawda ?
Proste, ale w tym przypadku ponieważ modyfikuję template a ten jak wiadomo używany jest przez wiele wiele stron musi to być uniwersalne.
Dlatego pytałem o regex'a który byłby chyba najprostszym rozwiązaniem gdzie sprawdzanie czy ostatnie 4 znaki to "html" albo "?p=1" jeśli nie i wielkość okna jest mniejsza niż wtedy schowaj blok.
Bang, zrobione

Aaach, dodatkowe utrudnienie to ... strona się przeładowuje za każdym razem kiedy zmienia się stronę "paginacji" czyli dodanie klasy czy usunięcie klasy .... może trochę nie zadziałać
i to kolejny powód, żeby sprawdzać url w czasie ładowania strony.


Ten post edytował phpamator 5.03.2018, 15:45:17
Go to the top of the page
+Quote Post
viking
post 5.03.2018, 15:49:08
Post #13





Grupa: Zarejestrowani
Postów: 6 365
Pomógł: 1114
Dołączył: 30.08.2006

Ostrzeżenie: (0%)
-----


Podałem ci już rozwiązanie w js. Jaki jest dalej problem?


--------------------
Go to the top of the page
+Quote Post
phpamator
post 5.03.2018, 16:04:32
Post #14





Grupa: Zarejestrowani
Postów: 321
Pomógł: 3
Dołączył: 10.07.2016
Skąd: UK-raine

Ostrzeżenie: (0%)
-----


Hej vikingu, właśnie czytam i próbuję ale mi ciągle wyrzuca : invalid group
czyli mój regex coś nie halo


no jakoś sobie poradziłem tongue.gif
sprawdzam window.location.search potem warunek i gotowe.
może nie super eleganckie rozwiązanie ale działa.

  1. jQuery(document).ready(function () {
  2.  
  3. var myUrl = window.location.search;
  4. console.log(myUrl);
  5.  
  6. if(myUrl == '?p=1' || myUrl == '') {
  7. jQuery('.tobehidden').css('display','block');
  8. }else{
  9. jQuery('.tobehidden').css('display','none');
  10. }
  11. });


Ten post edytował phpamator 5.03.2018, 16:07:31
Go to the top of the page
+Quote Post
viking
post 5.03.2018, 16:39:56
Post #15





Grupa: Zarejestrowani
Postów: 6 365
Pomógł: 1114
Dołączył: 30.08.2006

Ostrzeżenie: (0%)
-----


Czyli wszystko wskazuje na fakt że kompletnie tego artykułu nie przeczytałeś. Jest pełno przykładów jak używać, dla ie był na mdn kod.


--------------------
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 28.03.2024 - 19:24