Black Friday = Pricewatch Bekijk onze selectie van de beste Black Friday-deals en voorkom een miskoop.
Toon posts:

image script

Pagina: 1
Acties:

Verwijderd

Topicstarter
Het gaat hier om een Joomla based site met een aantal custom componenten die niet zo ingewikkeld in elkaar zitten. Helaas is de maker hiervan spoorloos en zit ik een beetje in de knoop met het volgende. Ik zoek een vrij simpele oplossing om de foto's groter te kunnen weergeven in een nieuw venster of een lightbox wanneer je op de main image klikt. De foto's worden tevens in thumbnail formaat aan de rechterkant weergegeven zodat je kunt kiezen welke als main image optreedt. Dit laatste kan eventueel komen te vervallen zodat je bij klikken op de thumb direct een grotere versie in nieuw venster te zien krijgt.

De frontend van het component is de productpagina van een specifiek product, bijv: http://www.acryan.com/index.php?opti...d=42&Itemid=98

Ter verduidelijking, in de backend van de component voeren we per product een directory pad op de server in, waarin de foto's voor het product staan. Dit resulteert in een variable zodat elke productpagina hetzelfde script gebruikt met een andere image path.

Wie o wie kan mij helpen met dit vrij simpele stukje script?

Hier het eerste stukje code dat mijn inziens de variable voor de image directory neerzet:

code:
1
2
3
4
5
6
7
$mainframe->addCustomHeadTag('<script language="javascript" type="text/javascript">function displaymainpictures(pic){document.getElementById(\'mainpicture\').src = pic.src;}function navNext(origin, dest){document.getElementById(dest).style.display="inline";document.getElementById(origin).style.display="none";}</script>'); 

        $images = array();
        if($product->imagepath != '' or $product->imagepath != null){
            $path = $product->imagepath;
            $images = dirList($_SERVER['DOCUMENT_ROOT'] . $path, 'image');
        }



Deze laat de main image zien:

code:
1
<img src="<?php echo (sizeof($images) > 0 ? $path.$images[0] : '/images/stories/notavailable.jpg'); ?>" id="mainpicture" />



En hier de thumbs:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php 
                    $i = 1; $divi = 1;
                    foreach($images as $img){
                        if($i%4==1){
                            if($i==1){
                                echo '<div id="div'.$divi.'" style="display: inline">';
                                $divi++;
                            }else{
                                echo '<img src="/images/stories/re-right.gif" align="top" class="nav-scroll" onclick="navNext(\'div'.($divi-1).'\',\'div'.$divi.'\');return false" /></div><div id="div'.$divi.'" style="display: none"><img src="/images/stories/re-left.gif" align="top" class="nav-scroll" onclick="navNext(\'div'.$divi.'\',\'div'.($divi-1).'\');return false" />';
                                $divi++;
                            }
                        }
                        echo '<img src="'.$path.$img.'" alt="image" width="100" onclick="displaymainpictures(this)" />';
                        $i++;
                    }
                    echo '</div>';
                ?>

[ Voor 27% gewijzigd door Verwijderd op 16-07-2008 13:46 . Reden: stukje code ]


  • Noork
  • Registratie: Juni 2001
  • Niet online
Stomme vraag misschien, maar wat heb je zelf geprobeerd?

Lightbox is best makkelijk toe te voegen. Globaal gezien moet je dit doen: Zorg dat je de benodigde scripts in de header knalt, en voeg een onclick of een class aan de afbeelding toe.

Verwijderd

Topicstarter
Kon natuurlijk niet uitblijven. Zelf heb ik geprobeerd een simpele link te maken van de main image die het huidige plaatje vergroot in een nieuw venster maar dat zorgde er alleen voor dat het eerste plaatje vergroot werd weergegeven in nieuw venster. Dus als je op een van de thumbs klikte kwam dat plaatje wel als main image te staan, maar als je daar dan op klikte opende het andere (eerste plaatje) weer groter in nieuw venster.

Ik ben verder al een paar keer op zoek gegaan naar php scriptjes maar eindigde meestal met volledige gallery scripts.

Het lightbox script wil ik graag toepassen maar de kennis ontschiet mij bij het toepassen van de onclick functie.

  • Noork
  • Registratie: Juni 2001
  • Niet online
Nu ik even op de AC Ryan pagina heb gekeken, snap ik zo ongeveer wat je bedoelt. Je code die je geeft is trouwens niet overzichtelijk en onvolledig. Het is handig om de html zooi weg te halen, en de functie "displaymainpictures()" is handig om even weer te geven.

Wat gebeurd er trouwens als je even dit toevoegt aan de main image:
onclick="alert(this.href);"
Krijg je dan de url van de juiste afbeelding, of van de eerste afbeelding? In het eerste geval kun je gewoon een onclick="window.open(this.href);" toevoegen. Of een andere functie (b.v. voor een lightbox) die deze url van de afbeelding opent.

Als de kennis je ontschiet, dan is het toch wel handig dat je deze bijwerkt. Er zijn gerust tutorials en
boeken te vinden zoals "Javscript voor dummies".

Verwijderd

Topicstarter
Ik ben zelf niet vies van het uitzoekwerk maar mede door gebruik te maken van forumvragen zoals deze leer ik bij en bouw ik mijn kennis verder uit :) Ik zit ondertussen met onclick te proberen wat te bewerkstelligen en ik heb het idee dat ik het onder de knie begin te krijgen.

Ik zal zo jouw voorstel even uitvoeren en tevens de code in de beginpost aanpassen. Bedankt alvast voor de hulp.

  • Snake
  • Registratie: Juli 2005
  • Laatst online: 07-03-2024

Snake

Los Angeles, CA, USA

Bij lightbox moet geen onclick.

Je moet enkel de scriptjes en de css in je header gooien en dan:

XML:
1
<img src="bla.jpg" rel="lightbox" alt="Bla picture" />

Going for adventure, lots of sun and a convertible! | GMT-8


Verwijderd

Topicstarter
Startpost aangepast nu met volledige script flarden :)

  • Noork
  • Registratie: Juni 2001
  • Niet online
Snake schreef op woensdag 16 juli 2008 @ 13:42:
Bij lightbox moet geen onclick.

Je moet enkel de scriptjes en de css in je header gooien en dan:

XML:
1
<img src="bla.jpg" rel="lightbox" alt="Bla picture" />
Ligt er natuurlijk aan welke lightbox je gebruikt. Er zijn er zoveel. jij zal wel doelen op Lightbox 2, jQuery lightBox of ThickBox.

Je voegt de rel tag niet toe aan de afbeelding, maar aan de link tag (A)
zie:
XML:
1
<a href="images/image-1.jpg" rel="lightbox" title="my caption">image #1</a>


Mijn eerdere post was trouwens niet goed. Ik had het over this.href, maar dat moet zijn this.src natuurlijk omdat het over de img tag gaat en niet over de a tag.

Als je het zonder de link wilt oplossen, dus direct iets aanpassen aan de <img> moet je wel zelf knutselen met javascript onclick. Ik weet niet hoe dit precies gaat bij de bovenstaande Lightboxen die ik gaf.

Misschien is Greybox een beter alternatief. Omdat je hier een redelijk makkelijke Javascript functie bij hebt. (misschien kan het ook met de lightboxen, maar ik weet de functie die je daar meot gebruiken gewoonweg niet)

Als voorbeeld wordt hier gegeven:
XML:
1
<a target=_top href="http://google.com/" onclick="return GB_show('Google', this.href)">Visit Google</a>


Hier kun je misschien van maken:
XML:
1
<img src="http://google.com/afbeeldingx.jpg" onclick="return GB_show('Afbeelding', this.src)" />

[ Voor 32% gewijzigd door Noork op 16-07-2008 14:02 ]


Verwijderd

Topicstarter
Ik heb nu onclick="window.open(this.href);" toegevoegd maar hij wilde link nog niet pakken naar het plaatje. Krijg nu een undefined.

  • Noork
  • Registratie: Juni 2001
  • Niet online
Verwijderd schreef op woensdag 16 juli 2008 @ 13:59:
Ik heb nu onclick="window.open(this.href);" toegevoegd maar hij wilde link nog niet pakken naar het plaatje. Krijg nu een undefined.
Idd, ik heb een foutje gemaakt. Het moet zijn this.src, omdat het hier gaat om een img en niet om een link.

Verwijderd

Topicstarter
Noork schreef op woensdag 16 juli 2008 @ 14:02:
[...]

Idd, ik heb een foutje gemaakt. Het moet zijn this.src, omdat het hier gaat om een img en niet om een link.
Ik moet heel eerlijk zijn dat ik dat al verwachtte :) Zie je, ik leer mee :)

Verwijderd

Topicstarter
Ik heb de Greybox geimplementeerd. Nu nog even kijken hoe ik ervoor zorg dat hij een grotere versie laat zien van het plaatje.

Grotere foto's gebruiken en de main image laten resizen lijkt me geen goeie optie door het kwaliteitsverlies. additionele grotere foto's in dezelfde map stoppen?

  • Noork
  • Registratie: Juni 2001
  • Niet online
Verwijderd schreef op woensdag 16 juli 2008 @ 14:29:
Ik heb de Greybox geimplementeerd. Nu nog even kijken hoe ik ervoor zorg dat hij een grotere versie laat zien van het plaatje.

Grotere foto's gebruiken en de main image laten resizen lijkt me geen goeie optie door het kwaliteitsverlies. additionele grotere foto's in dezelfde map stoppen?
Zit je nou op de live site van AC Ryan te knoeien. Is er geen lokale testomgeving o.i.d? Lijkt me toch wat beter om te prutsen :)

Ik had eerst niet opgelet op de grootte van de foto's. Ik zie dat de foto op de voorbeeldsite 363x220 is. Als je die foto in een box gooit, dan is het effect natuurlijk 0,0. Lijkt me het handigst als je foto's upload die minimaal 2x zo groot zijn. De makkelijke manier is om een grotere hoofdfoto up te loaden, deze in html gewoon te resizen zodat hij kleiner in de main staat, en deze op ware grootte laten zien in de greybox.

Maar het blijf wel gepruts op deze manier. Ik ken Joomla, en jullie implementatie hiervan verder niet. Maar het lijkt me handig om een serieus na te denken over hoe je dit wilt doen. Bijvoorbeeld in plaats van verwijzen naar de afbeelding, verwijzen naar een php script die de juiste grootte van de afbeelding terug geeft o.i.d.

Verwijderd

Topicstarter
Bij deze gaat mijn dank uit naar Noork voor alle hulp. Het is gelukt, het gewenste resultaat is bereikt!

Cheers!
Pagina: 1