AnaXyd Skrevet 3. juli 2008 Del Skrevet 3. juli 2008 Heisann! Driver å leker meg litt med Wordpress for tiden, og det trengs litt egen koding for at det skal fungere slik som jeg vil ha det. Blant annet har jeg en forside hvor det skal lastes inn bilder. Bildene får hver sitt navn når jeg laster det opp, f.eks post-25 som da hører til post nr 25. Er det flere biler som skal være med, heter disse post-25-2, post-25-3 osv. Men hittil idag har jeg løst dette med dette enkle grepet i HTML-en: <img src="<?php bloginfo('url')?>/wp-content/uploads/front/post-<?php the_ID(); ?>.jpg" width="500" height="310" /><img src="<?php bloginfo('url')?>/wp-content/uploads/front/post-<?php the_ID(); ?>-2.jpg" width="500" height="310" /> <img src="<?php bloginfo('url')?>/wp-content/uploads/front/post-<?php the_ID(); ?>-3.jpg" width="500" height="310" /> Med andre ord, om bildet ikke finnes, blir det bare blankt(ihvertfall i Firefox) Veit det kommer et lite kryss i IE6 o.l. Det er veldig klønete lagd, da det er to linjer med ubrukelig kode om det er kun et bilde som skal lastes inn. Det jeg er ute etter er å lage en slags "If exist" som sjekker om bildet virkelig ligger på den og den plassen, og deretter printer ut riktig kode. Noen som kan hjelpe meg? Lenke til kommentar
Nano- Skrevet 3. juli 2008 Del Skrevet 3. juli 2008 http://no2.php.net/function.file-exists Lenke til kommentar
AnaXyd Skrevet 3. juli 2008 Forfatter Del Skrevet 3. juli 2008 (endret) Takker! Har vært innom den, men blir litt vanskelig når jeg skal finne ut nummeret i f.eks post-25-3 <?php $url = 'http://bconsulting.no/wp/'; $filename = 'wp-content/uploads/front/post-'; $filetype = '.jpg'; $end = '" width="500" height="310" /></div>'; $start = '<div class="img-fix"><img src="'; $num = the_ID(); <-- funker ikke $num2 = '???'; <-- hva blir det her? echo $start . $url . $filename . $num . $filetype . $end; if (file_exists($start . $url . $filename . $num . $filetype . $end)) { echo "The file $filename exists"; } else { echo 'The file "' . $filename . $num . $filetype . '" does not exist'; } ?> Den skal jo helst telle opp til 10, automatisk. Noen som veit? EDIT: Sånn, laget rammeverket for dette her.. Men sliter med å konvertere noe WP kode til variabler. F.eks <?php the_ID(); ?> som printer ut id-en til posten trenger jeg å vite. Prøvde $num = the_ID(); , men når jeg skriver the_ID(); printer den med en gang. Det blir da slik: 25The file "wp-content/uploads/front/post-.jpg" does not exist Setter kjempestor pris på svar! Endret 3. juli 2008 av AnaXyd Lenke til kommentar
Nano- Skrevet 3. juli 2008 Del Skrevet 3. juli 2008 Du kan bruke en for-løkke til å loope gjennom bildene og skjekke om de finnes, noe slikt: <?php $url = bloginfo('url'); $filename = '/wp-content/uploads/front/post-25-'; $filetype = '.jpg'; for ($i = 1; $i <= 10; $i++) { if (file_exists($url . $filename . $i . $filetype)) { echo "The file {$filename} exists"; } else { echo "The file {$filename} does not exist"; } } ?> Lenke til kommentar
AnaXyd Skrevet 3. juli 2008 Forfatter Del Skrevet 3. juli 2008 Takker! Fungerer utmerket den vøtt! Får dele det med dere da: <?php $url = 'http://bconsulting.no/wp/'; $filename = 'wp-content/uploads/front/post-'; $filetype = '.jpg'; $end = '" width="500" height="310" /></div>'; $start = '<div class="img-fix"><img src="'; $num = '25-'; for ($i = 1; $i <= 2; $i++) { if (file_exists($filename . $num . $i . $filetype)) { echo $start . $url . $filename . $num . $i . $filetype . $end; } else { echo ''; } } ?> Men, det er ett lite men igjen. Jeg trenger å få til <?php the_ID(); ?> riktig. Om dere leser min forrige post skjønner dere problemet. Hvordan skal jeg nå få til dette? Lenke til kommentar
Jonas Skrevet 3. juli 2008 Del Skrevet 3. juli 2008 (endret) the_ID() er en funksjon som printer ut data uten å returnere noe som helst. (Som for øvrig er utrolig tåpelig) echo $start . $url . $filename . the_ID() . $filetype . $end; Dersom du skriver slik, vil PHP først parse teksten, deretter printe den ut, noe som betyr at the_ID() kjøres først. Da oppnår du naturligvis ikke et ønskelig resultat. Gjør heller som følgende. echo $start . $url . $filename; the_ID(); echo $filetype . $end; Edit: Følgende kode illustrerer problemstillingen. Merk hvordan teksten printes ut før returverdien. <?php function foo () { echo 'This is nr.: '; return 25; } echo foo (); ?> Endret 3. juli 2008 av Jonas Lenke til kommentar
AnaXyd Skrevet 3. juli 2008 Forfatter Del Skrevet 3. juli 2008 Ah! Takk skal du ha! Det funger jo selvfølgelig.. Men hvordan gjør jeg det her da: if (file_exists($filename . $num . $i . $filetype)) { Lenke til kommentar
Jonas Skrevet 3. juli 2008 Del Skrevet 3. juli 2008 (endret) Hvis du skal ha tak i det funksjonen printer ut må du ta ibruk et outputbuffer. Det kan muligens være litt mye å ta til seg dersom du ikke har programmert så mye, så jeg satt sammen et enkelt eksempel som benytter seg av det, og som du kan bruke istedenfor the_ID(). Den bruker du slik du prøvde å bruke the_ID(). <?php function the_ID2 () { ob_start (); the_ID (); $return = ob_get_contents (); ob_end_clean (); return $return; } var_dump ( the_ID2 () ); ?> Endret 3. juli 2008 av Jonas Lenke til kommentar
AnaXyd Skrevet 3. juli 2008 Forfatter Del Skrevet 3. juli 2008 (endret) Oh, dette her ble litt værre ja.. Hvor skal jeg plassere denne funksjonen? Trenger jeg å endre noe på den? Skjønte ikke helt hva den var godt for heller. Trenger jeg å legge til den for å få the_ID() riktig på file_exist? for ($i = 1; $i <= 2; $i++) { if (file_exists($filename . the_ID(); . $i . $filetype)) { echo $start . $url . $filename; the_ID(); echo $filetype . $end; } else { echo ''; } } Endret 3. juli 2008 av AnaXyd Lenke til kommentar
Jonas Skrevet 3. juli 2008 Del Skrevet 3. juli 2008 Spiller egentlig ikke så stor rolle, så lenger kodene ligger i samme scope. Rett over er en slager. <?php function the_ID2 () { ob_start (); the_ID (); $return = ob_get_contents (); ob_end_clean (); return $return; } $url = 'http://bconsulting.no/wp/'; $filename = 'wp-content/uploads/front/post-'; $filetype = '.jpg'; $end = '" width="500" height="310" /></div>'; $start = '<div class="img-fix"><img src="'; $num = the_ID2 (); echo $start . $url . $filename . $num . $filetype . $end; if ( file_exists ( $start . $url . $filename . $num . $filetype . $end ) ) { echo "The file $filename exists"; } else { echo 'The file "' . $filename . $num . $filetype . '" does not exist'; } ?> Lenke til kommentar
AnaXyd Skrevet 3. juli 2008 Forfatter Del Skrevet 3. juli 2008 Aha, la den bittelitt feil så det ble feil i parsinga først serru.. Men, (om det er et stort men, eller ikke veit jeg ikke) Wordpress har jo en såkalt "loop" som gjentar samme kode fra ett punkt til et annet avhengig av hvor mange poster som skal vises = hvor mange ganger den skal loope (dog med forskjellig innhold) Jeg får nemlig: Fatal error: Cannot redeclare the_id2() (previously declared in bla/bla/index.php:45) in bla/bla/index.php on line 43 Fordi loopen i Wordpress gjentar det. Og det som er i denne sammenheng som jeg tror, er at den MÅ loope den koden for å hente opp hver unike the_ID() som printer id-en til hver post. Er dette knotete å få til? Lenke til kommentar
Jonas Skrevet 3. juli 2008 Del Skrevet 3. juli 2008 (endret) Er dette knotete å få til? Nei, absolutt ikke. <?php if ( !function_exists ( 'the_ID2') ) { function the_ID2 () { ob_start (); the_ID (); $return = ob_get_contents (); ob_end_clean (); return $return; } } $url = 'http://bconsulting.no/wp/'; $filename = 'wp-content/uploads/front/post-'; $filetype = '.jpg'; $end = '" width="500" height="310" /></div>'; $start = '<div class="img-fix"><img src="'; $num = the_ID2 (); echo $start . $url . $filename . $num . $filetype . $end; if ( file_exists ( $start . $url . $filename . $num . $filetype . $end ) ) { echo "The file $filename exists"; } else { echo 'The file "' . $filename . $num . $filetype . '" does not exist'; } ?> Endret 3. juli 2008 av Jonas Lenke til kommentar
AnaXyd Skrevet 3. juli 2008 Forfatter Del Skrevet 3. juli 2008 (endret) Ah! Det var ikke værre nei! Men nå har ett nytt problem dukket opp. Jeg kan rett og slett ikke finne feilen, mulig det må endres på noe når vi har lagt til de nye funksjonene.. Kode som virker: $url = 'http://bconsulting.no/wp/'; $filename = 'wp-content/uploads/front/post-'; $filetype = '.jpg'; $end = '" width="500" height="310" /></div>'; $start = '<div class="img-fix"><img src="'; $num = '25-'; for ($i = 1; $i <= 2; $i++) { if (file_exists($filename . $num . $i . $filetype)) { echo $start . $url . $filename . $num . $i . $filetype . $end; } else { echo ''; } } Kode som ikke virker: if ( !function_exists ( 'the_ID2') ) { function the_ID2 () { ob_start (); the_ID (); $return = ob_get_contents (); ob_end_clean (); return $return; } } $url = 'http://bconsulting.no/wp/'; $filename = 'wp-content/uploads/front/post-'; $filetype = '.jpg'; $end = '" width="500" height="310" /></div>'; $start = '<div class="img-fix"><img src="'; $num = the_ID2 (); for ($i = 1; $i <= 2; $i++) { if (file_exists($filename . $num . $i . $filetype)) { echo $start . $url . $filename . $num . '-' . $i . $filetype . $end; } else { echo ''; } } Er de ikke kliss like? EDIT: Endret litt i den siste, men fungerer fremdeles ikke slik som den er. Endret 3. juli 2008 av AnaXyd Lenke til kommentar
AnaXyd Skrevet 3. juli 2008 Forfatter Del Skrevet 3. juli 2008 (endret) Ah! Herregud! Fant den nå! if (file_exists($filename . $num . '-' . $i . $filetype)) { Jeg var nesten HELT sikker på at jeg hadde tatt for meg den, men det hadde jeg visst ikke! Beklager bryet folkens! Eller nei, det er der enda gitt.. Selv MED den siste fiksen! EDIT: Der fikk jeg det endelig til! Ser ut som det funker fjell nå! Takk for stor innsats Jonas! Setter pris på slikt! Pleier alltid å legge ut min ferdige kode til allmennheten så dere kan betrakte det vakre synet av fersk kode av en nybegynner.. <?php if ( !function_exists ( 'the_ID2') ) { function the_ID2 () { ob_start (); the_ID (); $return = ob_get_contents (); ob_end_clean (); return $return; } } $url = 'http://bconsulting.no/wp/'; $filename = 'wp-content/uploads/front/post-'; $filetype = '.jpg'; $end = '" width="500" height="310" /></div>'; $start = '<div class="img-fix"><img src="'; $num = the_ID2 (); for ($i = 1; $i <= 10; $i++) { if (file_exists($filename . $num . '-' . $i . $filetype)) { echo $start . $url . $filename . $num . '-' . $i . $filetype . $end; } else { echo ''; } } ?> Scriptet sjekker da angitt antall bilder, og legger dem ut om de blir funnet. Her skal det kjøres helautomatisk hele veien! Endret 3. juli 2008 av AnaXyd Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå