Info o ciastkach

Eeee...
Żeby strona działała fajnie to trzeba zaakceptować obsługę pewnych plików. Jeśli jesteś nienormalny, nosisz czapkę z amelinium i siedzisz w schronie zbudowanym z poduszek to możesz je sobie wyłączyć. Autor strony nie czerpie żadnych korzyści z cookies (twierdzi nawet, że ten komunikat jest głupi), ale, cóż - Unia wymaga. Korzystając z witryny zgadzasz się z polityką cookies.

Wszystko w budowie...

Konsekwencje złego planowania

logo php

No i sprawa się rypła. A wszystko przez "a poprawi się później". Ja wiem, że się nie poprawi. Później będzie tylko gorzej. Niedawno poprawiałem to i owo na stronie (widać zmiany) i czepiłem się sekcji "Muzyka na dziś". W zasadzie to czegoś takiego miało tutaj nie być. Powstało przypadkiem i zostało. Problem jest w sposobie wklejania kodu filmiku na stronę. Otóż sekcja "Muzyka na dziś" to nie jest kolejna klasa ale zwykły (tak, niech przełknę te gorzkie słowa) artykuł z iframe Youtube'a, czyli wygląda to tak



<div class="muzyka">
<iframe width="640" height="360" src="https://www.youtube.com/embed/Ra1TSmmUY90?rel=0" frameborder="0" allowfullscreen></iframe>
</div>

Ble, paskudztwo. Zwykłe artykuły można tak pisać. Do tego uświadomiłem sobie, że nie mam żadnych (!) korzyści z takiego formatu. Nico. Chciałem dodać fikuśne linki do ostatnich filmików w aside (czyli po prawej) ale nie da się. Fakt, mógłbym napisać funkcję która wyłuska identyfikator youtuba z artykułu ale to nieergonomiczne i nieładne. Poza tym zwalidujcie stronę z iframe'ami z Youtube. I co? No, niezbyt pięknie to wygląda. Wypadałoby chociaż skasować formatowanie html'a.

Żeby ratować sytuację dodałem kolumnę do tabeli z artykułami (teraz sobie myślę, że powinienem dodać również i kategorie) o nazwie tajemniczej "yt_id". W kolumnie tej znajdować się będą identyfikatory filmu z Youtube. Zasada działania jest prosta. Na podstawie identyfikatora tworzony jest iframe do filmu + miniatura filmu. I volia. Wszystko powinno działać jak trzeba. Zresztą działa.

W końcu doszło do tego, że całkowicie przerobiłem kod przetwarzający sekcję muzyki. Poprzednio miałem jedno okienko na treść i w nim lądował iframe filmu i podpis. Teraz mam to wyodrębnione a całość do kupy składa PHP. Wkleję może fragment kodu generującego artykuł



public function wyswietl_Artykul(){
    $tmp=new PlikiDoPobrania($this->aDane['tresc']);
    $tmp->utworz();
    $this->aDane['tresc']=$tmp->zamienTresc();
    $tmpLinki=new LinkiPodArtykulem($this->aDane['tresc']);
    $tmpLinki->utworz();
    $this->aDane['tresc']=$tmpLinki->zamienTresc();
    $data=  dataMiesiacSlownie($this->aDane['data']);
    echo "<div data-art-id='".$this->aDane['id']."' class='artykul'>";
    echo "<a href='".STRONA.$this->aDane['alias']."'>";
    echo "<h1 class='tytul'>".$this->aDane['tytul']."</h1></a>";
    new DivClear;
    $this->wstawLogoKategorii();
    if((strpos($this->aDane['tagi'],'muzyka')>0)||(strpos($this->aDane['tagi'],'muzyka')===0)) $this->formatujMuzykaNaDzis();
    echo "<div class='tresc'>".$this->aDane['tresc'];
    new DivClear;
    new Tagi($this->aDane['tagi']);
    echo "<div class='data'>";
    echo "Dodane w dniu $data przez ".$this->aDane['autor'];
    if(!stristr($this->aDane['tagi'], 'muzyk')){
        echo "<br>Kopiowanie powyższych wypocin dozwolone pod warunkiem podania źródła, znaczy tandemu autor + link do strony";
    }
    echo "</div></div>";
    echo "</div>";
}

Jak widzimy przed umieszczeniem muzyki na stronie całość jest formatowana. Funkcja formatujMuzykaNaDzis wyglada tak



public function formatujMuzykaNaDzis(){
    echo '<div class="muzyka">';
    $Y=new Youtube;
    echo $Y->mPrefix.$this->aDane['yt_id'].$Y->mSuffix;
    echo '</div>';
}

Dane pobierane są z obiektu klasy Youtube ktory ma na sztywno wbite cechy i służy jako dawca. Dzięki takiemu rozwiązaniu mam większą kontrolę nad kodem. Po pierwsze drobna zmiana nie wymaga edycji wszystkich wpisów, po drugie tak jest dużo ładniej. Tak wiem - publiczne cechy = ble, ale kodem zarządzam tylko ja więc mogę sobie pozwolić.

To rozwiązało sporo moich kłopotów. I jeżeli chodzi o filmy to pozostała mi tylko edycja wpisów muzyki by wywalić iframe'y. Jeszce tylko napomknę o okienku z losową muzyką po prawej. Dzięki posiadaniu identyfikatora możliwym się ono stało. Kod który mi to robi z automatu



public function asideLosowaMuzyka($ilosc){
    $licznik=0;
    $Y=new Youtube;
    $sql="SELECT `tytul`,`alias`,`yt_id` FROM `artykuly` WHERE `tagi` LIKE '%muzyka%' ORDER BY RAND() DESC LIMIT ".$ilosc;
    try {
        $pdo=new PDO('mysql:host='.HOST.';dbname='.DB_NAME,DB_GUEST, DB_PASSWORD_GUEST );
        $result=$pdo->query($sql);
        while($row=$result->fetch()){
            echo '<div>';
            echo '<a href="'.ROOT.$row['alias'].'">';
            echo '<img src="'.$Y->fPrefix.$row['yt_id'].$Y->fSuffix.'" title="'.$row['tytul'].'" alt="'.$row['tytul'].'">';
            echo '</a>';
            echo '</div>';
            $licznik++;
        }
        $result->closeCursor();
    } catch (PDOException $ex) {
        echo 'Błąd połączenia ' . $ex->getMessage();
    }
    return $licznik;
}

Przyznaję się bez bicia, że na cześć tego artykułu trochę posprzątałem w kodzie.

Troszkę mi to zajęło, dłużej niż zwykle bo pogoda szarobura i na rowerze nie można pojeździć a jak każdy wie najlepsze pomysły wpadają podczas wycieczek rowerowych. Cóż, wiedziałem, że do tego dojdzie. Po prostu wiedziałem. Ale gdy doszło to jakoś tak nie dowierzałem.

Komentarze (1)

gość ( 2016-03-06 18:13:34 )
Halo. Tutaj admin. Test komentarzy. A w zasadzie to i do wpisu się odniosę. Metoda wyswietlArtykul() już nie wygląda tak jak powyżej. Dodałem do tego obsługę komentarzy a i po przeróbce strony głównej jej się dostało. To chyba tyle jeśli chodzi o test. Tylko treść jest obowiązkowa (zaraz to poprawię uwydatnię w jakiś sposób). W przypadku braku imienia zostanie zmienione na gość. Teraz test czasu, na localhoście wszystko gra. Zobaczymy czy trzeba będzie przerabiać datę wpisu. Normalnie jest generowana via timestamp.

Napisz komentarz lub zgłoś błąd

Dodane w dniu 4 marca 2016 przez Michał Misztal
Kopiowanie powyższych wypocin dozwolone pod warunkiem podania źródła, znaczy tandemu autor + link do strony