[PHP] jak użyć instrukcji if by znaleźć część kodu strony


(pablo3) #1

Witam,

jestem w trakcie tworzenia strony. Chciałbym ograniczyć ilość skryptów na podstronach, gdzie nie są one potrzebne. Dla przykładu, używając lightboxa korzystam z dwóch skryptów (jquery + lightbox), jednak używane one są nie na stronie głównej, ale dopiero na podstronach serwisu. Chciałbym dodać w sekcji head instrukcję warunkową.

<?php


   if()

   {

      echo '';

   }


?>

Każdy element lightboxowy ma przypisany class="lightbox". Chcę, żeby skrypt patrzył, czy w kodzie strony są jakieś elementy z klasą lightbox, a jeśli są, żeby pojawiły się linki do skryptów. Problem w tym, że nie wiem jakiej funkcji użyć, żeby sprawdzić czy plik zawiera w swoim kodzie frazę class="lightbox".

bardzo proszę o pomoc.


(M@ster) #2
if (strpos(strtolower($tresc_strony), 'class="lightbox"') !== FALSE)

{

  echo '';

}

Pisałem na żywca ale nie spodziewam się błędu :wink:.


(system) #3

zamiast

!==

powinno byc

!=

(M@ster) #4

Dobrze było, ma być !==, funkcja strpos zwraca integer albo bool, i porównanie !== gwarantuje nam że wartość będzie różna od false co do typu zmiennej jak i wartości. Samo != zadziałało by przy wyniku równym 0, co było by błędem (0 było by zrzutowane na boolean FALSE). Poczytaj sobie o strpos na php.net, jest to tam wyraźnie zaznaczone żeby nie popełniać tego błędu, i nie wypowiadaj się jak nie masz o tym pojęcia.


(Sitemaster) #5
if (strpos(strtolower($tresc_strony), 'class="lightbox"') !== FALSE)

???

Przypuszczam że stronę masz oparta o include, więc jesli chcesz coś dołaczyć dla konkretnej podstrony, wystarczy sprawdzić zmienną $_GET

np. dla adresu www.mojastrona/index.php?id=galeria będzie to cos takiego


(pablo3) #6

Dzięki wielkie za odpowiedzi! Wiedziałem, że jakaś funkcja na pewno musi istnieć :wink: dziś wieczorem zastosuje te rozwiązania i napisze w tym temacie o wynikach,

pozdrawiam :wink:


(M@ster) #7

@api

Tylko wtedy musi definiować to dla każdej podstrony, a z tym ifem nie musi się już przejmować gdzie co ma dodać :slight_smile:


(pablo3) #8

@api

Niestety to mi nie działa. Wydaje mi się, że dlatego, że mam włączone seo-friendly urls i wszystkie podstrony mają końcówki html.

@M@ster

Poczytałem o funkcji strpos, kod, który mi podałeś sprawdza, czy w zmiennej $tresc_strony występuje string class="lightbox". Problem w tym, że nie wiem jak zdefiniować zmienną $tresc_strony tak by obejmowała cały kod html strony.

Pokombinowałem trochę i doszedłem do takiego rozwiązania (w oparciu o podany przez Ciebie skrypt):

if (strpos(strtolower($_SERVER['REQUEST_URI']), 'inne' ) !== FALSE)

{

  echo '';

}

Ta wersja działa, jednak chciałbym, żeby skrypt wyszukiwał nie tylko w adresach zawierających słowo "inne", ale też "galerie" i "programy". Próbowałem takich dwóch rozwiązań z operatorami logicznymi:

if (strpos(strtolower($_SERVER['REQUEST_URI']), 'inne' || 'galerie' || 'programy' ) !== FALSE)

if (strpos(strtolower($_SERVER['REQUEST_URI']), 'inne || galerie || programy' ) !== FALSE)

Jednak brak pozytywnego rezultatu :frowning:


(IcyMat) #9

Powiedz, że źle zrozumiałem, że masz wszystkie strony (łącznie z główną) zapisane jako html...


(pablo3) #10

Używam Joomli i jest tam opcja SEO-Friendly urls, która zmienia wszystkie adresy stron na czytelne dla wyszukiwarek.


(Sitemaster) #11