• Uncategorized 14.05.2011

    Jak vyřešit, aby každé tlačítko horního menu při přepnutí zároveň změnilo barevný styl použité šablony? Věc relativně zapeklitá, nicméně lze ji vyřešit použitím několika již hotových věcí, které lze volně stáhnout. V první řadě je to využití některé z multibarevných šablon vzhledu, které jsou v oblibě, já jsem si vybral šablonu vzhledu Gillette_Multicolour_II_SE, která vychází z originální verze Gillette a je rozšířená o přepínač barev a multijazyčný překlad pomocí Google translate.  Další potřebnou utilitou je Infusion (Modifikace) Theme Switcher Panel, tedy panel přepínače šablon vzhledů.

    Abychom to udělali co nejjednoušeji (myšleno: minimální zásah do originálních kódů), vytvoříme z šablony Gillette_Multicolour_II_SE tolik barevných modifikací , kolik potřebujeme, v mém případě 7+ základní černá a všechny si pojmenujeme po svém. Než však začneme s rozkopírováním,  je potřeba vypnout v theme.php  zobrazení panýlku přepínače barev, který asi nebudeme potřebovat (řádek 9: $enable_colour_switcher = false; //true=enable colour switcher | false=disable colour switcher). Obdobně můžeme zapnout a vypnout panel multijazyčné podpory.

    Dále musíme upravit druhou utilitku – panel přepínače šablon vzhledů. K instalaci tohoto panelu není potřeba nic dodávat, vše je v originální návodu, my do něj však musíme vložit svůj  kód, tak aby nám při přepnutí na jinou šablonu také přepnul na odkaz, který potřebujeme.  Jak to udělat?  V kódu theme_switcher_panel.php je přepínání vzhledu uděláno pomocí formuláře , ve kterém je seznam šablon vzhledu načten z databáze a zobrazen pomocí rozevíracího seznamu (Combo Box).  To v našem případě není vůbec potřeba, proto si vytvoříme seznam sami, děla se to momocí tagů Option v prvku Select, který také musíme změnit na multiple.

    opravená část vypadá např. takto:

    <form method=’post’ action='”.str_replace(“&”,”&amp;”,FUSION_REQUEST).”‘ style=’text-align:center;’>
    “.$locale[‘ts02’].”<br />
    <select id=’ts_theme’ name=’ts_theme’ class=’textbox’ size=’8′ multiple=’multiple’> “;
    $current_theme = empty($userdata[‘user_theme’]) ? $_COOKIE[‘v7_themeswitcher’] : $userdata[‘user_theme’];
    echo “

    <option value=’Gil_red’>Gillette red</option>
    <option value=’Gil_blue’>Gillette blue</option>
    <option value=’Gil_green’>Gillette green</option>
    <option value=’Gil_orange’>Gillette orange</option>
    <option value=’Gil_purple’>Gillette purple</option>
    <option value=’Gil_pink’>Gillette pink</option>
    <option value=’Gil_babyblue’>Gillette babyblue</option>
    <option value=’Gillette_Multicolour_II_SE’>Gillette_Multicolour_II_SE</option>

    </select>
    <input type=’submit’ class=’button’ value='”.$locale[‘ts03’].”‘ id=’themeswitcher_submit’/>
    </form>”;

    Tím máme vyřešeno přepínání šablon vzhledů, ale ještě nám zbývá ke zaždé změně šablony přidat odkaz na stránku. Opět je třeba upravit kód theme_switcher_panel.php přibližně od řádku 20.
    například takto:

    if (isset($_POST[‘ts_theme’]) and in_array($_POST[‘ts_theme’], $theme_list)){
    $strana = “news.php”;
    if($_POST[‘ts_theme’] == ‘Gil_red’) { $strana = “articles.php”; }
    if($_POST[‘ts_theme’] == ‘Gil_blue’) {     $strana = “contact.php”; }
    if($_POST[‘ts_theme’] == ‘Gil_green’) { $strana = “downloads.php”; }
    if($_POST[‘ts_theme’] == ‘Gil_orange’) { $strana = “weblinks.php”; }
    if($_POST[‘ts_theme’] == ‘Gil_purple’) { $strana = “news_cats.php”; }
    if($_POST[‘ts_theme’] == ‘Gil_pink’) { $strana = “faq.php”; }
    if($_POST[‘ts_theme’] == ‘Gil_babyblue’) { $strana = “search.php”; }

    if(iMEMBER){
    $result = dbquery(“UPDATE “.DB_PREFIX.”users SET user_theme='”.$_POST[‘ts_theme’].”‘ WHERE user_id='”.$userdata[‘user_id’].”‘”);
    }else{
    var_dump(setcookie(“v7_themeswitcher”, $_POST[‘ts_theme’], time() + 3600 * 24 * 30, “/”, “”, “0”));
    }
    //redirect(FUSION_REQUEST);
    redirect(“/PHP-Fusion_7-02-01/”.$strana);
    }

    Teď by mělo přepínání šablon spolu se změnou stránky fungovat, zbývá tedy ještě upravit theme_switcher_panel.php tak, aby mohl být vložen jako menu do theme.php každé šablony. Musí tedy zmizet OpenSide a CloseSide a zobrazení tagů Option skupiny Select formuláře naformátovat pomocí CSS.
    Ale to musím nejdřív udělat, takže až později …..

    Posted by admin @ 06:20

  • Comments are closed.