Gå til innhold

-HaavardH-

Medlemmer
  • Innlegg

    2
  • Ble med

  • Besøkte siden sist

Innlegg skrevet av -HaavardH-

  1. Hei igjen!

    Så bra at du fikk det til å fungere :)

     

    Ikke dumt å lage til mappene så det fungerer med koden, men det er heller ikke så vanskelig å gjøre den litt om slik at du får en logisk mappestruktur også, f.eks:

     

    Bilder

    - Bilde1.jpg

    - Bilde2.jpg

    - Mini

    -- Bilde1_min.jpg

    -- Bilde2_min.jpg

     

     

    Da kan du prøve denne kodesnutten her, hvor str_replace er bygd ut til å søke etter to forskjellige ting :

    $search = array('.', 'Bilder/');
    $replace = array('_min.', 'Bilder/Mini/');
    
    foreach ($images as $image) {
     echo '<a href="'.$image.'" data-lightbox="1"><img data-lightbox="1" src="'.str_replace($search, $replace, $image).'" /></a>'.PHP_EOL;
    }

    

    Igjen, jeg har ikke prøvd den ut, men det burde funke :wee:Endforeach; kan du stryke i så fall

  2. Prøv noe sånt som:

     

     

     

    echo '<a href="Bilder/'.$image.'" data-lightbox="1"><img data-lightbox="1" src="Bilder_min/'.str_replace('.', '_min.', $image).'" /></a>'.PHP_EOL;
    

    Har ikke testet denne, men det burde funke...

     

    Ville brukt anførselstegnene omvendt av deg, " (doble) til HTML, og ' (enkle) til PHP. Kan ikke komme på hvorfor i farten, men jeg er sikker på det er en god grunn :)

    Bruken av String Replace (str_replace) er kanskje ikke optimalt, men du trenger noe som kan føye til _min foran .jpg, så vi kan søke etter punktumet og erstatte det med noe annet.

     

    edit:

    Alternativt kan du bygge ut funksjonen med en scan av begge mappene i hvert sitt steg (Bilder og Bilder_min) og hatt en if inni foreach slik at du bare viser bilder som har en makker. Dvs, du tester om det finnes en miniversjon, har du glemt å lage den får du dermed ikke en død link, den bare hopper over akkurat den... og sier tydelig fra, som i eksempelet under :)

    det ville blitt noe sånt som (pseudo-kode):

    $errors = array();
    foreach ($images as $image) {
     if (in_array(basename($image)).'_min', $thumbnails) {
      echo '...'; // Her putter du inn HTML'en din
     }
     else {
      $errors[] = $image; 
     }
    }
    
    // Lag en liste til slutt over bilder som ikke har en miniversjon
    if (!empty($errors)) {
     foreach ($errors as $error) {
      echo 'Du har glemt å lage en thumbnail av '.$error.'!<br />'.PHP_EOL;
     }
    }
    

    

    

    Ikke så effektivt, da det involverer et søk (in_array) for hvert eneste bilde. En raskere løsning vil være å slå sammen de to scanningene til ett array...

     

    Lykke til!

    • Liker 1
×
×
  • Opprett ny...