[PHP] Prosty system skorek

0

Jak w temacie ;) Potrzebuje pomysl na jakis prosty system skorek. Wiem ze przyklad mam w coyote ale tam jest to za trudno dla mnie zrobione :) Wiem ze latwiejszy skrypt moze miec mniejsza elastycznosc ale mmo wszystko jak by ktos mial jakis konkretny pomysl to chetnie wyslucham :)

Nawet sam pomyslalem o czyms takim i niby wszystko jest dobrze poza tabelkami :) W coyote jest to tak jakos fajne zrobione i to dziala a ja wlasnie nie wiem jak zrobic aby to dzialalo :/ Reszta wydaje sie dosc prosta tylko wlasnie te tabelki spedzaja mi sen z powiek ;)

0

Jak chcesz coś całkiem prostego, to po prostu zrób jedną stronę, ale odwołującą się do różnych styli CSS. Wtedy strona będzie niby taka sama, ale jak to się dobrze zrobi, to wszystko może wyglądać całkiem inaczej. Innym sposobem są template'sy, ale to już trochę kombinowanie. Ja u siebie zrobiłem system oparty na plikach TPL obsługiwanych przez bardzo prosty skrypcik, ale <ort>na razie</ort> tego nigdzie nie ma udostępnionego.

0

Możesz napisać w PHP, system który będzie odczytywał zmienną zapisaną w cookie. A zmienna ta będzie wcześniej definiowana prez użytkownika który wybierze sobie na stronie który skin chce używac.

Bardzo łatwo to zrobić, i jest jedna zaleta iz uzytkownik zawsze gdy wejdzie na strone zawsze będzie widział wybrane przez siebie skin, no chyba ze usunie cookie ale to juz jego sprawa:D

0

Może taki prosty system templatesów, przypadnie Ci do gustu http://webcity.pl/webcity/artykuly.php/t/5 :|

0

Pedros.. zobacz dokładnie system Coyote - nie jest to takie skomplikowane - jest tylko parser, który odpowiednio je obsługuje i wstawia za komentarze odpowiednie dane, wartości.

Mowa o Coyote 0.9.1 .. w 0.9.2 jest już troche inna sytuacja.

0

Szablony - wlasne i proste, albo duze i fajne - Smarty, Savant ...
zmiana CSS - odsylam do stron w3c i mozilli.

Przesz to generalnie banal - parsujesz pliki zamieniajac w nich odpowiednie miejsca, albo np. ladujesz poszczegolne bloki kodu z pliku do zmiennych.

0

Wiem ze to jest niby tylko zmiana komentarza na cos tam super to mi nawet wychodzilo ;) Schody zaczely sie gdy mam powiedzmy wstawic tabelke na strone. Przeciez nie wiem ile bedzie wygenerowanych wierszy :) Nie da sie jakos tego zrobic inaczej niz powiedzmy:

0
0

i zeby kopiowac to co pomiedzy znacznikami i w petle? :>

...ostatnio jak robilem nowy design do strony domowej to wlasnie chcialem uzyc jakichs smartow czy czegos bo to teraz takie modne ale jak zobaczylem manual do tych szablonow to mi sie odechcialo uczyc...

...pomyslalem chwile i napisalem najprostsza klase do parsowania szablonow :D epoka kamienia lupanego, trzeba byc ostroznym jak sie tego uzywa ale dziala, na dole maly opis...

http://piechnat.iglu.cz/download/simple_template_parser.txt

0

to ja moze wrzuce tutaj swoje wypociny:P licze na jakies komentarze i sugestje:

<?php
class Template
{
    var $text;
    var $stale;
    var $warunki;
    var $iloscwaronkow=0;

    var $textpetli;
    var $petla;
    var $rekord;
    var $stalepetli;
    var $warunkipetli;
    var $iloscwaronkowpetli=0;
    
    var $nazwapola;
    var $typpola;
    var $wartoscpola;
    var $dane;

    function Template($plik)
    {
        $fd = fopen($plik, "r");
        $this ->text = fread($fd, filesize($plik));
        $this ->text =str_replace("\n","",$this ->text);
    }

    function Dodajstala($stala,$wartosc)
    {
        $this ->stale = array_merge($this->stale, $stala);
        $this ->stale[$stala]= $wartosc;
    }
    
    function Dodajpole($nazwa,$typ,$wartosc,$dane)
    {
        $this ->nazwapola[count($this ->nazwapola)] = $nazwa;
        $this ->typpola[count($this ->typpola)] = $typ;
        $this ->wartoscpola[count($this ->wartoscpola)] = $wartosc;
        $this ->dane[count($this ->dane)] = $dane;
    }

    function sprawdzformularz()
    {
        $blad=0;
        $y=count($this ->nazwapola);
        for($x=0;$x<=$y;$x++)
        {
            $this ->dodajstala("wartosc_".$this ->nazwapola[$x],$this ->dane[$x]);
            if (($this ->wartoscpola[$x]==1)&&(($_POST[$this ->nazwapola[$x]]=="")&&($_GET[wyslano]=="1")))
            {
                $this ->dodajwarunek("nieistnieje_".$this ->nazwapola[$x]);
                $blad=1;
            }
        }
        if ($_GET[wyslano]!="1")
        {
            $blad=1;
        }
        return $blad;
    }

    function Dodajwarunek($warunek)
    {
        $this ->warunki[$this ->iloscwaronkow] = $warunek;
        $this ->iloscwaronkow++;
    }

    ///////////////////funkcje petli

    function Stworzpetle($petla)
    {
        preg_match('/{petla:'.$petla.'}(.+){petla:'.$petla.'}/Ue',$this ->text, $odnalezione);
        $this -> textpetli = $odnalezione[0];
        $this -> rekord = $odnalezione[1];
    }
    
    function Dodajstalapetli($stala,$wartosc)
    {
        $this ->stalepetli = array_merge($this->stalepetli, $stala);
        $this ->stalepetli[$stala]= $wartosc;
    }
    
    function Dodajwarunekpetli($warunek)
    {
        $this ->warunkipetli = array_merge($this->warunkipetli, $this ->iloscwaronkowpetli);
        $this ->warunkipetli[$this ->iloscwaronkowpetli] = $warunek;
        $this ->iloscwaronkowpetli++;
    }
    
    function Parsujwierszpetli()
    {
        $y = $this ->iloscwaronkowpetli;
        $rekord = $this ->rekord;
        for ($x=0;$x<$y;$x++)
        {
            $warunek=$this ->warunkipetli[$x];
            preg_match_all('/{warunek:'.$warunek.'}(.+){warunek:'.$warunek.'}/Ue', $rekord, $warunki);
            for ($i=0; $i< count($warunki[0]); $i++)
            {
                $rekord = str_replace($warunki[0][$i],$warunki[1][$i],$rekord);
            }
        }
        preg_match_all('/{warunek:([^%]+)}(.+){warunek:([^%]+)}/Ue', $rekord, $warunki);
        for ($i=0; $i< count($warunki[0]); $i++)
        {
            $rekord = str_replace($warunki[0][$i],'',$rekord);
        }
        $rekord = preg_replace('/{stala:([^}]+)}/e', '$this->stalepetli["\\1"]', $rekord);
        $this ->petla.=$rekord;
        $this ->petla.="\n";
        unset($this ->stalepetli);
        unset($this ->warunkipetli);
        unset($this ->iloscwarunkowpetli);
    }
    
    function Parsujpetle()
    {
        $this ->text = str_replace($this ->textpetli, $this ->petla, $this ->text);
        unset($this ->petla);
        unset($this ->textpetli);
    }

    function Parsuj()
    {
        $y=$this ->iloscwaronkow;
        for ($x=0;$x<=$y;$x++)
        {
            $warunek=$this ->warunki[$x];
            preg_match_all('/{warunek:'.$warunek.'}(.+){warunek:'.$warunek.'}/Ue', $this->text, $warunki);
            for ($i=0; $i< count($warunki[0]); $i++)
            {
                $this->text = str_replace($warunki[0][$i],$warunki[1][$i],$this->text);
            }
        }
        preg_match_all('/{warunek:([^}]+)}(.+){warunek:([^}]+)}/Ue', $this->text, $warunki);
        for ($i=0; $i< count($warunki[0]); $i++)
        {
            $this->text = str_replace($warunki[0][$i],'',$this->text);
        }
        $this->text=preg_replace('/{stala:([^}]+)}/e', '$this->stale["\\1"]', $this->text);
        return $this->text;
    }
}
?>
0

Napiszę krótko: Bycze to... U mnie system skórek wygląda tak:

<?
function template($info, $bloki, $plik)
  {
  $wynik="";
  $file=fopen($plik, 'r');
  while(!flock($file, LOCK_SH)) { }
  while(!feof($file))
    {
    $linia=fgets($file);
    foreach($bloki as $blok=>$wartosc)
      {
      if(strpos($linia, "{BLOG-END-".$blok."-BLOK}")!==FALSE)
        {
          $linia=str_replace("{BLOG-END-".$blok."-BLOK}", "", $linia);
        }
      if(strpos($linia, "{BLOG-BEGIN-".$blok."-BLOK}")!==FALSE)
        {
        if($wartosc)
          {
            $linia=str_replace("{BLOG-BEGIN-".$blok."-BLOK}", "", $linia);
          }
        else
          {
          $pos=strpos($linia, "{BLOG-END-".$blok."-BLOK}");
          while($pos===FALSE)
            {
            $linia=fgets($file);
            $pos=strpos($linia, "{BLOG-END-".$blok."-BLOK}");
            }
          $linia=str_replace("{BLOG-END-".$blok."-BLOK}", "", $linia);
          }
        }
      }
    foreach($info as $nazwa=>$wartosc)
      {
      $linia=str_replace("{BLOG-".$nazwa."}", $wartosc, $linia);
      }
    $wynik.=$linia;
    }
  flock($file, LOCK_UN);
  fclose($file);
  return $wynik;
  }

function echo_template($info, $bloki, $plik)
  {
  $file=fopen($plik, 'r');
  while(!flock($file, LOCK_SH)) { }
  while(!feof($file))
    {
    $linia=fgets($file);
    foreach($bloki as $blok=>$wartosc)
      {
      if(strpos($linia, "{BLOG-END-".$blok."-BLOK}")!==FALSE)
        {
          $linia=str_replace("{BLOG-END-".$blok."-BLOK}", "", $linia);
        }
      if(strpos($linia, "{BLOG-BEGIN-".$blok."-BLOK}")!==FALSE)
        {
        if($wartosc)
          {
            $linia=str_replace("{BLOG-BEGIN-".$blok."-BLOK}", "", $linia);
          }
        else
          {
          $pos=strpos($linia, "{BLOG-END-".$blok."-BLOK}");
          while($pos===FALSE)
            {
            $linia=fgets($file);
            $pos=strpos($linia, "{BLOG-END-".$blok."-BLOK}");
            }
          $linia=str_replace("{BLOG-END-".$blok."-BLOK}", "", $linia);
          }
        }
      }
    foreach($info as $nazwa=>$wartosc)
      {
      $linia=str_replace("{BLOG-".$nazwa."}", $wartosc, $linia);
      }
    echo($linia);
    }
  flock($file, LOCK_UN);
  fclose($file);
  }
?>

Z czego te dwie funkcje się niemal powtarzają, tylko jedna z nich od razu wyrzuca na wyjście to co "myśli", podczas gdy pierwsza zwraca to w stringu do dalszej przeróbki. Oczywiście jest to silnie dostosowane do konkretnego użycia, ale proste jak sprężyna i jasne jak czarna dziura, czyli banalne :P.

1 użytkowników online, w tym zalogowanych: 0, gości: 1