Blanda PHP och HTML när man redan är inne i ett php if statment?

Permalänk
Medlem

Blanda PHP och HTML när man redan är inne i ett php if statment?

Tjena swec!

Jag är inge vidare på att koda, försöker lista ut hur jag kan lägga in denna koden

$img_html = '<img src="myimage.jpg" alt="">'; $img_html = apply_filters( 'bj_lazy_load_html', $img_html ); echo $img_html;

i mitt if statment här

<?php if ( get_the_post_thumbnail($post_id) != '' ) { echo '<a href="'; the_permalink(); echo '">'; echo '<img src="'; echo catch_that_image(); echo '" alt="'; the_title(); echo '"></a>'; } ?>

the_permalink(); ger mig hela adressen till posten
catch_that_image(); ger mig hela adressen till bilden

här är mitt usla försök att få in koden i if statementet:

<?php if ( get_the_post_thumbnail($post_id) != '' ) { $img_html= ?><a href="<?php the_permalink(); ?> <img src="<?php catch_that_image(); ?>" alt="<?php the_title(); ?>"></a><?php ; $img_html = apply_filters( 'bj_lazy_load_html', $img_html ); echo $img_html; } ?>

detta fungerar inte alls! någon php kunnig som kan visa hur jag kan få in det jag behöver i stängen utan att allt brakar?, tack!

Permalänk
Medlem

Efter en snabbtitt tror jag det är följande som brakar:

$img_html= ?><a href="http://www.sweclockers.com/forum/10-programmering-och-digitalt-skapande/1313443-blanda-php-och-html-nar-man-redan-ar-inne-i-ett-php-if-statment/<?php ...

Du försöker tilldela $img_html något men väljer sedan att gå ur PHP. Det finns två valmöjligtheter här då:
1) Välj att skriva HTML-koden i en sträng som lagras i $img_html, dvs via enkel- eller dubbelfnuttar.
2) Skippa echo helt och variables $img_html. Skrivs bara koden ut som "<a href= ..." så kommer den presenteras i webbläsaren. Krockar dock med apply_filters.

Varför de första exemplen inte fungerar vet jag ej, något som apply_filters gör?
Vad händer när du kör den koden? Blir det tomt eller får du varningar/errors?

Visa signatur

Efter att ni har läst det här har ni insett att det inte gav något.

Permalänk
Medlem

orginal koden fungerar:

<?php if ( get_the_post_thumbnail($post_id) != '' ) { echo '<a href="'; the_permalink(); echo '">'; echo '<img src="'; echo catch_that_image(); echo '" alt="'; the_title(); echo '"></a>'; } ?>

men jag beöver på något sett implementera den nedstående i det ovanstående

$img_html = '<img src="myimage.jpg" alt="">'; $img_html = apply_filters( 'bj_lazy_load_html', $img_html ); echo $img_html;

gjorde ett nytt försök att beskriva funktionen $img html innan if statmentet men det gick inte heller:

<?php function img_html(); { echo '<a href="'<?php the_permalink(); echo '<img src="'<?php catch_that_image(); ?> echo '" alt="'<?php the_title(); ?> echo '"></a>' <?php ; } if ( get_the_post_thumbnail($post_id) != '' ) { echo img_html(); } ?>

Jag är som sagt värdelös på detta!

Permalänk
Hedersmedlem
Skrivet av rvin82:

$img_html= ?><a href="<?php the_permalink(); ?> <img src="<?php catch_that_image(); ?>" alt="<?php the_title(); ?>"></a><?php ;

Den raden är åt skogen, som du kanske misstänkt . Det du försöker göra skriver man snarare:

$img_html = '<a href="' . the_permalink() . '"><img src="' . catch_that_image() . '" alt="' . the_title() . '"></a>';

`.`-operatorn klistrar helt enkelt ihop strängar i PHP (String Operators [manualen]).

Visa signatur

Nu med kortare användarnamn, men fortfarande bedövande långa inlägg.

Permalänk
Medlem
Skrivet av phz:

Den raden är åt skogen, som du kanske misstänkt . Det du försöker göra skriver man snarare:

$img_html = '<a href="' . the_permalink() . '"><img src="' . catch_that_image() . '" alt="' . the_title() . '"></a>';

`.`-operatorn klistrar helt enkelt ihop strängar i PHP (String Operators [manualen]).

perfekt! det var exakt vad jag behövde!!! tack

Permalänk
Medlem

hummm

det funkar men kostigt att den printar ut data från stängen

$img_html = '<a href="' . the_permalink() . '"><img src="' . catch_that_image() . '" alt="' . the_title() . '"></a>';

direkt ut på sidan dvs, det som står är

urlen som the_permalink(); genererar i normal text, inte inom a href
och namnet som the_title() genererar i klar text

sedan kommer echo $img_html och då visar den bilden korrekt, vad kan detta bero på?

Permalänk
Medlem

ah det var funktionen som låg i wordpress, fick använda get_permalink() och get_the_title() istället så ser det fint ut, tack igen!