• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

PHP Code Verkürtzen

ste3et_C0st

Neues Mitglied
Hallo ich möchte gerne für mein Wordpress Design eine Anordnung von ein paar Elementen ändern. Es geht auch allerdings ist mir der code viel zulange ich weis nicht ich hab schon versucht in so klein wie möglich zu strukturieren.

PHP:
$var = 'dice_';
$place = 'placebo';
$layout = $data[$var . 'anordnung'] ['enabled'];

$a_2 = '
<ul class="subscription">
        <li>
                <a href="http://twitter.com/'.$twitterid.'">
                        <img alt="DicecraftTwitter" src="'.$twitterpic.'"/>
                </a>
                <h4>
                        <a href="http://twitter.com/'.$twitterid.'">'.$twitterueb.'</a>
                </h4>
                <p>'.$twitterdesc.'</p>
        </li>
</ul>';

$b_2 = '
<ul class="subscription">
        <li>
                <a href="http://facebook.com/'.$faceid.'">
                        <img alt="DicecraftFacebook" src="'.$facepic.'"/>
                </a>
                <h4>
                        <a href="http://facebook.com/'.$faceid.'">'.$faceueb.'</a>
                </h4>
                <p>'.$facedesc.'</p>
        </li>
</ul>';

$c_2 = '
<ul class="subscription">
        <li>
                <a href="http://youtube.com/'.$youtubeid.'">
                        <img alt="DicecraftYoutube" src="'.$youtubeepic.'"/>
                </a>
                <h4>
                        <a href="http://youtube.com/'.$youtubeid.'">'.$youtubeueb.'</a>
                </h4>
                <p>'.$youtubedesc.'</p>
        </li>
</ul>';



if ($layout){
$i = "";
$a = "";
$b = "";
$c = "";
$ausgabe = "";
foreach ($layout as $key=>$value) {
        $i = explode($place, $key);
        switch($i[0]){
        case 'Twitter':
                $a = 'a';
                $ausgabe = $ausgabe.$a;
        break;
        case 'Facebook':
                $b = 'b';
                $ausgabe = $ausgabe.$b;
        break;
        case 'Youtube':
                $c = 'c';
                $ausgabe = $ausgabe.$c;
        break;
        }

        if($ausgabe == 'abc'){
                $a_1 = $a_2;
                $b_1 = $b_2;
                $c_1 = $c_2;
        }elseif($ausgabe == 'bca'){
                $a_1 = $b_2;
                $b_1 = $c_2;
                $c_1 = $a_2;   
        }elseif($ausgabe == 'cab'){
                $a_1 = $c_2;
                $b_1 = $a_2;
                $c_1 = $b_2;   
        }elseif($ausgabe == 'acb'){
                $a_1 = $a_2;
                $b_1 = $c_2;
                $c_1 = $b_2;   
        }elseif($ausgabe == 'cba'){
                $a_1 = $c_2;
                $b_1 = $b_2;
                $c_1 = $a_2;   
        }elseif($ausgabe == 'bac'){
                $a_1 = $b_2;
                $b_1 = $a_2;
                $c_1 = $c_2;   
        }elseif($ausgabe == 'ab'){
                $a_1 = $a_2;
                $b_1 = $b_2;
                $c_1 = '';     
        }elseif($ausgabe == 'ac'){
                $a_1 = $a_2;
                $b_1 = '';
                $c_1 = $c_2;   
        }elseif($ausgabe == 'ba'){
                $a_1 = $b_2;
                $b_1 = $a_2;
                $c_1 = '';     
        }elseif($ausgabe == 'bc'){
                $a_1 = $b_2;
                $b_1 = $c_2;
                $c_1 = '';     
        }elseif($ausgabe == 'ca'){
                $a_1 = $c_2;
                $b_1 = $a_2;
                $c_1 = '';     
        }elseif($ausgabe == 'cb'){
                $a_1 = $c_2;
                $b_1 = $b_2;
                $c_1 = '';     
        }elseif($ausgabe == 'a'){
                $a_1 = $a_2;
                $b_1 = '';
                $c_1 = '';     
        }elseif($ausgabe == 'b'){
                $a_1 = $b_2;
                $b_1 = '';
                $c_1 = '';     
        }elseif($ausgabe == 'c'){
                $a_1 = $c_2;
                $b_1 = '';
                $c_1 = '';     
        }
}
}else{
                $a_1 = $a_2;
                $b_1 = $b_2;
                $c_1 = $c_2;
}

Hat jemand eine Ahnung ob man diesen Code noch etwas kürzten kann.
 
Werbung:
Pack doch einfach das HTML-Gerüst von $a_2 und $b_2 in eine Variable bzw. in eine Funktion und füttere das Ganze eben mit dem, was du gerade brauchst (also Twitter oder Facebook). Die ganze Struktur ist ja gleich. Die Variablennamen sind ja völlig unerheblich, d.h. $twitterid und $faceid könnten auch $irgendwasid heißen. Du gist dann einfach die ID an das Script, die du gerade brauchst und gleichzeitig eine Variable für den passenden Link (Facebook/Twitter).

Wie gesagt, das Ganze als eine Funktion und du kannst das von überall nutzen. Ich sehe im Moment ehrlich gesagt nicht den Sinn von diesen endlosen if und elseif-Abfrage.

P.S.: Ist nur Geschmackssache, aber wenn du schon switch nutzt, warum dann nicht auch bei der zweiten Abfrage. Da nutzt du auf einmal if und elseif. Ist wie gesagt vom Ergebnis das gleiche, aber man sollte doch einen konsequenten Stil haben...
 
Du könntest dir erst einmal eine art Template System erstellen mit dessen Hilfe du schoneinmal den HTML Code aus deinen PHP Dateien entfernen kannst. Ein beispiel hierfür sieht so aus.

PHP:
class Template {
  
    /**
    *
    * @var string
    */
    protected $_sFile = null;
  
    /**
    *
    * @param string $sFile
    * @throws FileNotFoundException
    */
    public function __construct ($sFile) {
        if (!file_exists($sFile)) {
            throw new FileNotFoundException($sFile);
        }
      
        $this->_sFile = $sFile;
    }
  
    /**
    * Displays the template
    */
    public function show () {
        require $this->_sFile;
    }
  
    /**
    *
    * @return string
    */
    public function fetch () {
        ob_flush();
        ob_start();
        $this->show();
        return ob_get_clean();
    }
  
}

Mit hilfe dieser Klasse kannst du in deinem Code nun ganz einfach folgendes schreiben.

Erst erstellst du eine Template Datei die du z.b. index.html.php nennst. index ist der name des templates, html gibt den Type an und das php am Ende ist dafür, dass das Script auch als PHP script geparst wird.
PHP:
<html>
   <head>
      <title><?= $this->title ?></title>
   </head>
   <body>
      <?= $this->message ?>
   </body>
</html>

Nun kannst du das Template in deinem Script einbinden indem du sagst

PHP:
$oIndexTpl = new Template('templates/index.html.php');
$oIndexTpl->title = 'Meine Homepage';
$oIndexTpl->message = 'Hallo Welt!';
$oIndexTpl->show();

Das Problem mit der Anordnung der Elemente wird sich so vielleicht auch irgendwie ergeben.

lg
 
Werbung:
Zurück
Oben