DeviantArt er opphavet til alle bildene i “julekalenderen” min i år. Dessverre bruker de en ganske krøkkete metode for å linke opp bildene, og jeg hater virkelig når koden jeg benytter medfører at bloggen min plutselig ikke validerer lenger. Altså måtte jeg modifisere DeviantArt sin kode, slik at ting validerer korrekt.
Jeg fant også ut at jeg er altfor lat til å gjøre dette manuelt hver gang, så jeg laget en liten funksjon til WordPress slik at jeg bare kan putte inn noen variabler i en [shorttag] og så funker det flott
Først har vi kodebiten fra DeviantArt:
<object width="450" height="460">
<param name="movie" value="http://backend.deviantart.com/embed/view.swf" />
<param name="flashvars" value="id=146073785&width=1337" />
<param name="allowScriptAccess" value="always" />
<embed src="http://backend.deviantart.com/embed/view.swf" type="application/x-shockwave-flash" width="450" flashvars="id=146073785&width=1337"
height="460" allowscriptaccess="always">
</embed>
</object>
<br />
<a href="http://www.deviantart.com/deviation/146073785/">lost</a> by ~<a class="u" href="http://ichirukilover55.deviantart.com/">ichirukilover55</a> on
<a href="http://www.deviantart.com">deviant</a><a href="http://www.deviantart.com">ART</a>
Så har vi funksjonen jeg benytter for å legge inn en thumbnail + informasjon om bildet fra DeviantArt (dette kunne sikkert vært mer automatisert, men… foreløpig får dette holde):
// [dalink - shortcode for adding thumbs(objects) from DA using the ID]
function dalink_content($atts, $ID = null) {
extract( shortcode_atts( array(
'width' => '450px',
'height' => '600px',
'ID' => $ID,
'picname' => 'picname',
'username' => 'username',
), $atts ) );
$retvar = '<div class="aligncenter"><object type="application/x-shockwave-flash" style="width:'.$width.'; height:'.$height.';" data="http://backend.deviantart.com/embed/view.swf"><param name="movie" value="http://backend.deviantart.com/embed/view.swf" /><param name="flashvars" value="id='.$ID.'&width=1337" /><param name="allowScriptAccess" value="always" /></object><br />';
if ($picname != 'picname') {
$retvar .= '<a href="http://www.deviantart.com/deviation/'.$ID.'/">'.$picname.'</a> ';
}
if ($username != 'username') {
$retvar .= 'by <a class="u" href="http://'.$username.'.deviantart.com/">'.$username.'</a> on ';
}
$retvar .= '<a href="http://www.deviantart.com">deviantART</a></div>';
return $retvar;
}//end [dalink]
Som vi så skal forklare litt:
Vi begynner med et eksempel:
[dalink height="600px" width="500px" username="Ispinne" picname="test"]2155500433[/dalink]
Gyldige variabler er altså “height”, “width”, “username”, “picname” og til slutt “ID” (alt dette kan hentes fra koden som man får fra DeviantArt når man kopierer embed-koden deres. Om man ikke setter inn variabler for width eller height, så vil standard-verdiene som er satt i funksjonen benyttes (height=”600px” og width=”450px”). Om man ikke benytter username og picname, så vil det kun være linken i selve flash-objektet som fungerer. Det vil ikke vises noen link til brukeren eller bildet under flash-objektet. Det vil fremdeles være en link til DeviantArt, det er det eneste.
Et til eksempel:
[dalink]31445560[dalink]
Dette er også et fullstendig gyldig eksempel – her er det ikke satt inn noe annet enn ID (som er det eneste som er absolutt nødvendig).
En siste ting.
De observante vil oppdage at jeg har benyttet <div class=”aligncenter”> </div> rundt koden som blir sendt tilbake fra funksjonen. Det denne koden gjør er å sentrere innholdet. CSSen for dette er som følger (dette må legges inn i styles.css i theme-mappen):
.aligncenter {
display: block;
margin: 0 auto;
text-align: center;
}
Det skulle være det hele. Om du trenger en fungerende WordPress-funksjon for å legge inn linker til DeviantArt, så har du det her!
Ingen kommentarer
DeviantArt er opphavet til alle bildene i "julekalenderen" min i år. Dessverre bruker de en ganske krøkkete metode for å linke opp bildene, og jeg hater virkelig når koden jeg benytter medfører at bloggen min plutselig ikke validerer lenger. Altså måtte jeg modifisere DeviantArt sin kode, slik at ting validerer korrekt.
Jeg fant også ut at jeg er altfor lat til å gjøre dette manuelt hver gang, så jeg laget en liten funksjon til WordPress slik at jeg bare kan putte inn noen variabler i en [shorttag] og så funker det flott :)
Først har vi kodebiten fra DeviantArt:
<object width="450" height="460">
<param name="movie" value="http://backend.deviantart.com/embed/view.swf" />
<param name="flashvars" value="id=146073785&width=1337" />
<param name="allowScriptAccess" value="always" />
<embed src="http://backend.deviantart.com/embed/view.swf" type="application/x-shockwave-flash" width="450" flashvars="id=146073785&width=1337"
height="460" allowscriptaccess="always">
</embed>
</object>
<br />
<a href="http://www.deviantart.com/deviation/146073785/">lost</a> by ~<a class="u" href="http://ichirukilover55.deviantart.com/">ichirukilover55</a> on
<a href="http://www.deviantart.com">deviant</a><a href="http://www.deviantart.com">ART</a>
Så har vi funksjonen jeg benytter for å legge inn en thumbnail + informasjon om bildet fra DeviantArt (dette kunne sikkert vært mer automatisert, men... foreløpig får dette holde):
// [dalink - shortcode for adding thumbs(objects) from DA using the ID]
function dalink_content($atts, $ID = null) {
extract( shortcode_atts( array(
'width' => '450px',
'height' => '600px',
'ID' => $ID,
'picname' => 'picname',
'username' => 'username',
), $atts ) );
$retvar = '<div class="aligncenter"><object type="application/x-shockwave-flash" style="width:'.$width.'; height:'.$height.';" data="http://backend.deviantart.com/embed/view.swf"><param name="movie" value="http://backend.deviantart.com/embed/view.swf" /><param name="flashvars" value="id='.$ID.'&width=1337" /><param name="allowScriptAccess" value="always" /></object><br />';
if ($picname != 'picname') {
$retvar .= '<a href="http://www.deviantart.com/deviation/'.$ID.'/">'.$picname.'</a> ';
}
if ($username != 'username') {
$retvar .= 'by <a class="u" href="http://'.$username.'.deviantart.com/">'.$username.'</a> on ';
}
$retvar .= '<a href="http://www.deviantart.com">deviantART</a></div>';
return $retvar;
}//end [dalink]
Som vi så skal forklare litt:
Vi begynner med et eksempel:
[dalink height="600px" width="500px" username="Ispinne" picname="test"]2155500433[/dalink]
Gyldige variabler er altså "height", "width", "username", "picname" og til slutt "ID" (alt dette kan hentes fra koden som man får fra DeviantArt når man kopierer embed-koden deres. Om man ikke setter inn variabler for width eller height, så vil standard-verdiene som er satt i funksjonen benyttes (height="600px" og width="450px"). Om man ikke benytter username og picname, så vil det kun være linken i selve flash-objektet som fungerer. Det vil ikke vises noen link til brukeren eller bildet under flash-objektet. Det vil fremdeles være en link til DeviantArt, det er det eneste.
Et til eksempel:
[dalink]31445560[dalink]
Dette er også et fullstendig gyldig eksempel - her er det ikke satt inn noe annet enn ID (som er det eneste som er absolutt nødvendig).
En siste ting.
De observante vil oppdage at jeg har benyttet <div class="aligncenter"> </div> rundt koden som blir sendt tilbake fra funksjonen. Det denne koden gjør er å sentrere innholdet. CSSen for dette er som følger (dette må legges inn i styles.css i theme-mappen):
.aligncenter {
display: block;
margin: 0 auto;
text-align: center;
}
Det skulle være det hele. Om du trenger en fungerende Wordpress-funksjon for å legge inn linker til DeviantArt, så har du det her!
Lignende poster: