Wyniki 1 do 1 z 1

Temat: Jak umożliwić od frontu zmianę parametrów szablonu (z pliku params.ini)

  1. #1
    Wyga Jola awatar
    Dołączył
    08-01-2008
    Skąd
    Wrocław
    Wpisy
    3 177
    Punkty
    380

    Domyślny Jak umożliwić od frontu zmianę parametrów szablonu (z pliku params.ini)

    Opiszę taką możliwość na przykładzie szablonu Rhuk Milkyway.
    W panelu administracyjnym (Rozszerzenia->Szablony->rhuk_milkyway->Parametry) mamy możliwość wybrania ustawień:Wariant kolorystyczny, Wariant tła i Szerokość szablonu. Wybrane ustawienia są zapisywane w pliku templates/rhuk_milkyway/params.ini (nie wszystkie szablony mają takie opcje konfiguracyjne, a co z tego wynika - plik params.ini).
    Szablon, przed załadowaniem do przeglądarki, pobiera zapisane w pliku params.ini parametry i na ich podstawie wyświetla efekt na stronie.

    Zasada modyfikacji jest taka:
    - nie musimy dawać wyboru wszystkich parametrów
    - dodajemy formularz umożliwiający wybór wcześniej wspomnianych (lub wybranych) parametrów
    - dodajemy kod, który pobiera dane z formularza i zapisuje je w postaci ciasteczek.
    - inny kod sprawdza czy klient jest posiadaczem ciasteczek z zapisanymi parametrami, jeśli nie - czy istnieje parametr pobrany z formularza, a jeśli i ta opcja zawiedzie - wybierany jest parametr zapisany w pliku params.ini
    - na koniec dodanie warunku pobierania parametrów szablonu

    Formularz (umieszczenie w tabeli - przykładowe)
    Kod PHP:
    <form  method="post">
    <table cellspacing="1"><tr>
    <td><span><?php echo JText::_('Wariant kolorystyczny');?></span></td>
    <td>
    <?php
            $colorVariation_I 
    = array (JHTML::_('select.option''blue'JText::_('Niebieski')), JHTML::_('select.option''red'JText::_('Czerwony')), JHTML::_('select.option''green'JText::_('Zielony')), JHTML::_('select.option''orange'JText::_('Pomarańczowy')), JHTML::_('select.option''black'JText::_('Czarny')), JHTML::_('select.option''white'JText::_('Biały')),);
            echo 
    JHTML::_('select.genericlist',  $colorVariation_I'colorVariation''class="inputbox" size="1" onchange="this.form.submit()"''value''text', ($colorVariation1 $colorVariation1 $this->params->get('colorVariation')));
    ?>
    </td></tr>
    <tr>
    <td><span><?php echo JText::_('Wariant tła');?></span></td>
    <td>
    <?php
      $backgroundVariation_I 
    = array (JHTML::_('select.option''blue'JText::_('Niebieski')), JHTML::_('select.option''red'JText::_('Czerwony')), JHTML::_('select.option''green'JText::_('Zielony')), JHTML::_('select.option''orange'JText::_('Pomarańczowy')), JHTML::_('select.option''black'JText::_('Czarny')), JHTML::_('select.option''white'JText::_('Biały')),);
        echo 
    JHTML::_('select.genericlist',  $backgroundVariation_I'backgroundVariation''class="inputbox" size="1" onchange="this.form.submit()"''value''text', ($backgroundVariation1 $backgroundVariation1 $this->params->get('backgroundVariation')));
    ?>
    </td></tr>
    <tr><td><span><?php echo JText::_('Szerokość szablonu');?></span></td>
    <td>
    <?php
      $widthStyle_I 
    = array (JHTML::_('select.option''fmax'JText::_('Maksymalna')), JHTML::_('select.option''medium'JText::_('Średnia')), JHTML::_('select.option''small'JText::_('Mała')), JHTML::_('select.option''fluid'JText::_('Płynna')),);
        echo 
    JHTML::_('select.genericlist',  $widthStyle_I'widthStyle''class="inputbox" size="1" onchange="this.form.submit()"''value''text', ($widthStyle1 $widthStyle1 $this->params->get('widthStyle')));
    ?>
    </td></tr></table></form>
    Kod:
    Kod PHP:
    array (JHTML::_('select.option''blue'JText::_('Niebieski')), JHTML::_('select.option''red'JText::_('Czerwony')), JHTML::_('select.option''green'JText::_('Zielony')), JHTML::_('select.option''orange'JText::_('Pomarańczowy')), JHTML::_('select.option''black'JText::_('Czarny')), JHTML::_('select.option''white'JText::_('Biały')),); 
    odpowiada za przekazywanie wartości <option>, 'blue'to value,JText::_('Niebieski') to opis - podpatrzone w panelu admina: źródło strony

    Kod:
    Kod PHP:
    echo JHTML::_('select.genericlist',  $colorVariation_I'colorVariation''class="inputbox" size="1" onchange="this.form.submit()"''value''text', ($colorVariation1 $colorVariation1 $this->params->get('colorVariation'))); 
    odpowiada za wyświetlanie całego kodu typu <select>, 'colorVariation' to nazwa zmiennej (name) - podpatrzona również z pliku params.ini

    Formularz można umieścić w wybranym miejscu szablonu lub nawet w osobnym module, można dodać warunek wyświetlania jeśli chcemy pokazywać go tylko zalogowanym użytkownikom.

    Kod - w przypadku szablonu rhuk_milkyway należy umieścić w sekcji head zaraz pod wpisem <jdoc:include type="head" />
    Kod PHP:
    <?php
    $color 
    JRequest::getVar('colorVariation''''post');
    $background JRequest::getVar('backgroundVariation''''post');
    $widthStyle JRequest::getVar('widthStyle''''post');

    $colorVariation1 JRequest::getCmd('colorVariation'$color'cookie');
    $backgroundVariation1 JRequest::getCmd('backgroundVariation'$background'cookie');
    $widthStyle1 JRequest::getCmd('widthStyle'$widthStyle'cookie');

    if(
    $colorVariation1 != $color && $color$colorVariation1 $color;
    if(
    $backgroundVariation1 != $background && $background$backgroundVariation1 $background;
    if(
    $widthStyle1 != $widthStyle && $widthStyle$widthStyle1 $widthStyle;

    setcookie("colorVariation",$colorVariation1);
    setcookie("backgroundVariation",$backgroundVariation1);
    setcookie("widthStyle",$widthStyle1);

    ?>
    Dodanie warunków pobierania parametrów w szablonie powoduje, że priorytetowo traktowane są parametry pochodzące z formularza (ciasteczek). Zmodyfikowane musi zostać każde miejce, gdzie parametr jest przekazywany do szablonu.
    Sekcja head:
    <link rel="stylesheet" href="<?php echo $this->baseurl ?>/templates/rhuk_milkyway/css/<?php echo ($colorVariation1) ? $colorVariation1 : $this->params->get('colorVariation'); ?>.css" type="text/css" />
    <link rel="stylesheet" href="<?php echo $this->baseurl ?>/templates/rhuk_milkyway/css/<?php echo ($backgroundVariation1) ? $backgroundVariation1 : $this->params->get('backgroundVariation'); ?>_bg.css" type="text/css" />
    Deklaracja Body:

    <body id="page_bg" class="color_<?php echo ($colorVariation1) ? $colorVariation1 : $this->params->get('colorVariation'); ?> bg_<?php echo ($backgroundVariation1) ? $backgroundVariation1 : $this->params->get('backgroundVariation'); ?> width_<?php echo ($widthStyle1) ? $widthStyle1 : $this->params->get('widthStyle'); ?>">
    Dodany kod jest zaznaczony pogrubioną czcionką.

    W analogiczny sposób można podrasować inny szablon. Nie można tego zrobić przez skopiowanie podanego tu kodu ponieważ każdy szablon ma własne parametry, opcje tych parametrów i własne miejsca w szablonie gdzie parametry są sprawdzane.

Reguły pisania

  • Nie możesz zakładać nowych tematów
  • Nie możesz dodawać wypowiedzi
  • Nie możesz dodawać załączników
  • Nie możesz poprawiać swoich postów
  •