automatizalt kep menuelemek

eaposztrof képe

page.tpl.php

        <?php if (isset($primary_links)) : ?>
	          <?php
// felulirom a $primary_links[$key]['title']-t, ami eredetileg egy string, a keppel.
	          	foreach ($primary_links as $key => $module) {
			      $primary_links[$key]['title'] = '';
			      $primary_links[$key]['title'] .= '<img src="/themes/eaposztrof/images/img.php?t='.$module[title].'&s=20">'; // az eredeti szoveges menuelembol ($module[title]) az alab lathato img.php keszit .png-t
			      $primary_links[$key]['html'] = TRUE;
  				}
	          ?>
				<div id="menu-img">
          <?php print theme('links', $primary_links, array('class' => 'links primary-links')) ?>
				</div>
        <?php endif; ?>

img.php

<?php
 
    header("Content-type: image/png");
 
// itt adom meg az alap ertekeket	    imagepng(imagettfJustifytext($_GET['t']?$_GET['t']:'eaposztrof.com',"./84_rock.ttf",$_GET['a']?$_GET['a']:'1',$_GET['w']?$_GET['w']:'0',$_GET['h']?$_GET['h']:'28',$_GET['x']?$_GET['x']:'0',$_GET['y']?$_GET['y']:'0',$_GET['s']?$_GET['s']:'22'));
 
// szinezeshez pelda: #D6DBD6 == array(0xD6,0xDB,0xD6)
    function imagettfJustifytext($text, $font="./84_rock.ttf", $Justify=1, $W=0, $H=0, $X=0, $Y=0, $fsize=0, $color=array(0x7B,0x79,0x31), $bgcolor=array(0xD6,0xDB,0xD6)){
 
        $angle = 0;
        $L_R_C = $Justify;
        $_bx = imageTTFBbox($fsize,0,$font,$text);
 
        $W = ($W==0)?abs($_bx[2]-$_bx[0]):$W;
        $H = ($H==0)?abs($_bx[5]-$_bx[3]):$H;
 
        $im = @imagecreate($W, $H)
            or die("Cannot Initialize new GD image stream");
 
 
        $background_color = imagecolorallocate($im, $bgcolor[0], $bgcolor[1], $bgcolor[2]);
        $text_color = imagecolorallocate($im, $color[0], $color[1], $color[2]);
        $bg_color = imagecolorat($im,1,1);
		imagecolortransparent($im, $bg_color); // ezzel teszem transzparensse
 
        if($L_R_C == 0){
            imagettftext($im, $fsize, $angle, $X, $fsize, $text_color, $font, $text);
 
        }elseif($L_R_C == 1){
            $s = split("[\n]+", $text);
            $__H=0;
 
            foreach($s as $key=>$val){
 
                $_b = imageTTFBbox($fsize,0,$font,$val);
                $_W = abs($_b[2]-$_b[0]);
                $_X = $W-$_W;
                $_H = abs($_b[5]-$_b[3]);
                $__H += $_H;
                imagettftext($im, $fsize, $angle, $_X, $__H, $text_color, $font, $val);
                $__H += 6;
 
            }
 
        }
        elseif($L_R_C == 2){
 
            $s = split("[\n]+", $text);
            $__H=0;
 
            foreach($s as $key=>$val){
 
                $_b = imageTTFBbox($fsize,0,$font,$val);
                $_W = abs($_b[2]-$_b[0]);
                $_X = abs($W/2)-abs($_W/2);
                $_H = abs($_b[5]-$_b[3]);
                $__H += $_H;
                imagettftext($im, $fsize, $angle, $_X, $__H, $text_color, $font, $val);
                $__H += 6;
 
            }
 
        }
 
        return $im;
 
    }
 
?>
eMeLA képe

Szép. Nekem leginkább a _-kák tetsszettek, a __ kifejezetten szépen tagolja a forráskódot !

0
0

...mit tudok: http://web.termuves.hu

nevergone képe

Nem rossz dolog, sőt egészen hasznos. Nekem viszont ezt használva nem jelennek meg a menüelemek Drupal 6 alatt, ha olyan aloldalra megyek, amelyik szerepel az elsődleges menüelemek között. csak a főoldalon, illetve az adminisztrációs menüben navigálva láthatóak a képek.

Ui.: Megoldódott a probléma. Az volt a gond, hogy tesztelésképpen csak belemásoltam a telepített Drupal 6 könyvtárába az img.php -t, viszont valamilyen aloldalra navigálva nem találta meg a relatív hivatkozás miatt. Így módosítottam a page.tpl.php fájlban egy sort, és már működik, igaz másik könyvtárba mozgatásánál át kell írni ezt a sort mindig a megfelelő értékre:

$primary_links[$key]['title'] .= '<img src="http://localhost/drupal6/img.php?t='.$module[title].'&s=20">';

0
0
nevergone képe

Amúgy talán az lenne még szép, ha mindez modulként lenne megvalósítva, de így is használható. :)

0
0
eaposztrof képe

problema adodott a fent leirt 'kisugyes'-sel.. tobbekkozt az, hogy most kellene hasznaljam a i18n modult az oldl tobbnyelvusitesehez, es mivel a block-okban nem tortnik meg a szoveges menuelemek kepekre valo csereje, gondban vagyok. bele kell ronditsak a i18nmenu vagy menu modulba, vagy mi a teendo? valakinek hasznalhato otlete ezzel kapcsolatban? megkoszonnem.

azon is tortem meg a fejem, h mivel a "contact" menuelem, ami a contact modul altal generalt, fordithato a localization modullal.. hogyan lehetne elerni hogy a node menuelemei is ezzel a modszerrel fordithatoak legyenek?

asszem kicsiket eltevedtem sajat gondolataimban.. uhogy abbahagyom.. :)

0
0

42

chx képe

Hoppá. Beteszed az eredeti title-t a kimenetbe ami normálisan keresztülmegy a check_plain-en, de ezt kikapcsolod a HTML TRUE-val. Ez egy szép, méretes XSS sechole.

nevergone aláírása tetszik és irtó ismerős :D

0
0