Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [klasa] Generator tagów
Balon
post 29.08.2006, 15:12:57
Post #1





Grupa: Zarejestrowani
Postów: 422
Pomógł: 0
Dołączył: 14.12.2005
Skąd: Wałbrzych

Ostrzeżenie: (0%)
-----


  1. <?php
  2.  
  3. class tags {
  4. public $tags;
  5. public $tagscount;
  6. public $prior;
  7. public $fsizes;
  8. public $cache;
  9.  
  10. function __construct( $tags, $fsizes ) {
  11. $this->tags = $tags;
  12. $this->tagscount = $this->getAllTagsCount( $tags );
  13. $this->fsizes = $fsizes;
  14. }
  15.  
  16. function getAllTagsCount( $tags ) {
  17. $count = 0;
  18. foreach( $tags as $tag ) {
  19. $count += $tag[key( $tag )]['count'];
  20. }
  21. return $count;
  22. }
  23.  
  24. function definePrior() {
  25. $temp = array();
  26. foreach( $this->tags as $tag ) {
  27. $temp[key( $tag )] = round( ( $tag[key( $tag )]['count'] * 100 ) / $this->tagscount );
  28. }
  29. $this->prior = $temp;
  30. }
  31.  
  32. function defineSizes() {
  33. $i = 0;
  34. foreach( $this->tags as $tag ) {
  35. array_push( $this->tags[$i][key( $tag )], $this->sizeByPrior( $this->prior[key( $tag )] ) );
  36. $i++;
  37. }
  38. }
  39.  
  40. function sizeByPrior( $prior ) {
  41. $sizes = array_keys( $this->fsizes );
  42. $ca = array();
  43. foreach( $sizes as $size ) {
  44. if( $prior > $size ) {
  45. $ca[] = $this->fsizes[$size]['size'];
  46. }
  47. else if( $prior == $size ) {
  48. return $this->fsizes[$size]['size'];
  49. }
  50. }
  51. return count( $ca ) > 0 ? max( $ca ) : false;
  52. }
  53.  
  54. function convertArray() {
  55. $new = array();
  56. foreach( $this->tags as $tag ) {
  57. $new[key( $tag )] = array( 'size' => $tag[key( $tag )][0] );
  58. }
  59. return $new;
  60. }
  61.  
  62. function genTagSizes() {
  63. $this->definePrior();
  64. $this->defineSizes();
  65. return $this->convertArray();
  66. }
  67. }
  68. ?>


użycie

  1. <?php
  2. /**
  3.  * Może być to np wyciąg z bazy danych
  4.  */
  5. $tag_list = array(  array( 'balon' => array( 'count' => 10 ) ),
  6. array( 'jagiełło' => array( 'count' => 450 ) ),
  7. array( 'krzysiek' => array( 'count' => 60 ) ),
  8. array( 'master' => array( 'count' => 34 ) ) );
  9.  
  10. /**
  11.  * Najniższą wartością musi być 1 bo inaczej będzie zwracało puste wyniki ( wielkości czcionek )
  12.  */
  13. $font_sizes = array(  '1' => array( 'size' => 10 ),
  14. '60' => array( 'size' => 20 ) );
  15.  
  16. $tags = new tags( $tag_list, $font_sizes );
  17. $smarty->assign( 'TAGS', $tags->genTagSizes() );
  18. ?>


taka klasa zwraca np tablice
Kod
Array
(
    [balon] => Array
        (
            [size] => 10
        )

    [jagiełło] => Array
        (
            [size] => 20
        )

    [krzysiek] => Array
        (
            [size] => 10
        )

    [master] => Array
        (
            [size] => 10
        )

)

wiem ze nakombinowane jest ile tylko mozna, ale pogubilem sie w polowie i zamieszałem troche winksmiley.jpg ale działać działą a to najwazniejsze

prosze o oceny


--------------------
Postura wielka i morda wredna, jestem Balon, kozak z osiedla !
bzdury.pl - Królestwo rozrywki
Go to the top of the page
+Quote Post
dr_bonzo
post 29.08.2006, 15:56:18
Post #2





Grupa: Przyjaciele php.pl
Postów: 5 724
Pomógł: 259
Dołączył: 13.04.2004
Skąd: N/A

Ostrzeżenie: (0%)
-----


Skoro piszesz pod php5 to uzywaj public/protected/private przy okreslaniu dostepnosci metod w klasie.


--------------------
Nie lubię jednorożców.
Go to the top of the page
+Quote Post
nospor
post 29.08.2006, 16:01:21
Post #3





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Ja zadam glupie pytanie, bo nie lapie jednej rzeczy:
Do czego to ma sluzyc? Znaczy widze ze generuje jakiej tagi, ale po co mi one, co ja z nimi moge zrobic?


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
SHiP
post 29.08.2006, 16:17:03
Post #4





Grupa: Zarejestrowani
Postów: 697
Pomógł: 47
Dołączył: 19.12.2003
Skąd: Lublin

Ostrzeżenie: (0%)
-----


Myślę że chodzi o typowo blogowe tagi ;] Dla kazdego wpisu określasz kilka tagów a nastepnie w zależności od czestotliwości występowania jest mu przypisywana określona wielkość...


--------------------
Warsztat: Kubuntu, PhpStorm, Opera
Go to the top of the page
+Quote Post
nrm
post 29.08.2006, 16:48:53
Post #5





Grupa: Zarejestrowani
Postów: 627
Pomógł: 33
Dołączył: 1.05.2005
Skąd: Katowice

Ostrzeżenie: (0%)
-----


Cytat(nospor @ 29.08.2006, 15:01:21 ) *
Ja zadam glupie pytanie, bo nie lapie jednej rzeczy:
Do czego to ma sluzyc? Znaczy widze ze generuje jakiej tagi, ale po co mi one, co ja z nimi moge zrobic?

biggrin.gif
nie generuje tagi tylko wyciaga je z bazy. ów kawałek kodu zlicza występowanie danego słowa kluczowego i przydziela mu rozmar aby mozna było latwo w htmlu porobić wielkości fontów. potrzebne to jest do tzw. tag cloud czyli chmurki tagów.

przykład:
http://www.wykop.pl/tagi

a do czego? do opisywania roznego rodzaju "itemów" od wpisów, tekstów, artykułów, po fotki, filmy itp.

Ten post edytował normanos 29.08.2006, 16:49:27


--------------------
Go to the top of the page
+Quote Post
Balon
post 29.08.2006, 20:22:14
Post #6





Grupa: Zarejestrowani
Postów: 422
Pomógł: 0
Dołączył: 14.12.2005
Skąd: Wałbrzych

Ostrzeżenie: (0%)
-----


zapamietam to sobie. ale pisalem to pod php4 i na ostatnio chwile zmienilem to na php5.

@normanos dzięki za opis biggrin.gif


--------------------
Postura wielka i morda wredna, jestem Balon, kozak z osiedla !
bzdury.pl - Królestwo rozrywki
Go to the top of the page
+Quote Post
nospor
post 30.08.2006, 09:20:38
Post #7





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Dzieki za wyjasnienia smile.gif
Kod klasy cięzko sie analizuje bo zaotany jak 150 smile.gif
A zamotany pewnie dlatego, ze ta Twoja struktura jest podejrzana... walisz tablice na tablicy na tablicy, a w podanym przez ciebie przykladzie wogole to nie ma żadnego uzasadnienia, no bo czy kodu:
  1. <?php
  2. $tag_list = array(  array( 'balon' => array( 'count' => 10 ) ),
  3. array( 'jagiełło' => array( 'count' => 450 ) ),
  4. array( 'krzysiek' => array( 'count' => 60 ) ),
  5. array( 'master' => array( 'count' => 34 ) ) );
  6. ?>

Nie mozna zapisac tak:
  1. <?php
  2. $tag_list = array('balon' => 10 , 'jagiełło' =>450 , 'krzysiek' =>60, 'master' =>34);
  3. ?>
?

A kodu:
  1. <?php
  2. $font_sizes = array(  '1' => array( 'size' => 10 ),
  3. '60' => array( 'size' => 20 ) );
  4. ?>

o tak:
  1. <?php
  2. $font_sizes = array('1' => 10, '60' =>20);
  3. ?>
?
No moze masz jakis ukryty sens w takim swoim zapisie, ale na pierwszy rzut oka tego nie widac. Poprosze o wyjasnienie jeszcze tego smile.gif


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Balon
post 30.08.2006, 14:37:00
Post #8





Grupa: Zarejestrowani
Postów: 422
Pomógł: 0
Dołączył: 14.12.2005
Skąd: Wałbrzych

Ostrzeżenie: (0%)
-----


wyjsanie to tak. ta klasa to calkowity spontan, w polowie sie zamieszalem i musialem modyfikowac tablice tak zeby to chociaz dzialalo. jak bede mial czas to usiade i poprawie to biggrin.gif szczerze mowiac w ogole nie wiedzialem jak do tego podejsc, nie wiedzialem jak dzialaja tagi i podczas pisania dopiero odkrywalem sposob sortowania ich wg wazniejszych i mniej waznych winksmiley.jpg

przepraszam za zawilosc kodu winksmiley.jpg ale działać, działa i na pewno mi sie przyda winksmiley.jpg poprawie jak bede mial czas,

pozdrawiam


--------------------
Postura wielka i morda wredna, jestem Balon, kozak z osiedla !
bzdury.pl - Królestwo rozrywki
Go to the top of the page
+Quote Post
AxZx
post 30.08.2006, 16:05:23
Post #9





Grupa: Zarejestrowani
Postów: 1 385
Pomógł: 55
Dołączył: 1.03.2005
Skąd: śląsk

Ostrzeżenie: (0%)
-----


to po co dajesz do oceny skoro ci dziala i to uwazasz za wystarczajace?smile.gif

nie wiem czy tak jest, ale powinno byc tak ze moge ustawic jaka ma byc najmniejsza czcionka, jaka najwieksza, ile ma byc wyswietlanych elementow, do tego wrzucic nazwy i ilosc poszczegolnych tagow i na tej podstawie obliczac rozmiary tych tagow - od najmniejszej czcionki do najwiekszej, co np 1px;


--------------------
aplikacje internetowe | Symfony
Go to the top of the page
+Quote Post
SHiP
post 30.08.2006, 16:43:16
Post #10





Grupa: Zarejestrowani
Postów: 697
Pomógł: 47
Dołączył: 19.12.2003
Skąd: Lublin

Ostrzeżenie: (0%)
-----


Cytat(AxZx @ 30.08.2006, 17:05:23 ) *
to po co dajesz do oceny skoro ci dziala i to uwazasz za wystarczajace?smile.gif

nie wiem czy tak jest, ale powinno byc tak ze moge ustawic jaka ma byc najmniejsza czcionka, jaka najwieksza, ile ma byc wyswietlanych elementow, do tego wrzucic nazwy i ilosc poszczegolnych tagow i na tej podstawie obliczac rozmiary tych tagow - od najmniejszej czcionki do najwiekszej, co np 1px;


Klasa ogólnie jest mało wybajerzona winksmiley.jpg Zastanawiałem sie nad czyms podobnym do mojego projektu ale ja przewiduje różnorodnosć formualtu (px, pt, cm itp.), zmiennosc nie tylko rozmiaru ale takze(lub do wyboru) koloru, przezroczystości, zakresy zmiennosci(np od 10px do 25px), wspolczynik wzrastania(np. co 1px).

Poza tym kodu
  1. <?php
  2.  
  3. $font_sizes = array(  '1' => array( 'size' => 10 ),
  4. '60' => array( 'size' => 20 ) );
  5. ?>


Nie do konca rozumiem tj. musze deklarować stopnie wzrostu? Moim zdaniem powinno sie wrzucać do klasy ilość wszystkich rekordow a klasa sama powiniena wylicznać stopnie zmiany rozmiaru czcionki ;].


--------------------
Warsztat: Kubuntu, PhpStorm, Opera
Go to the top of the page
+Quote Post
Balon
post 30.08.2006, 18:21:32
Post #11





Grupa: Zarejestrowani
Postów: 422
Pomógł: 0
Dołączył: 14.12.2005
Skąd: Wałbrzych

Ostrzeżenie: (0%)
-----


nowa wersja z generatorem kolorow opartym na klasie FiDO ( Temat: Generator gradientow )

Źródło : http://phpfi.com/147186

teraz do konstruktora podajemy dodatkowo egzemplarz klasy ColorGradient autorstwa FiDO oraz definiujemy w niej kolory przez ktore ma przechodzic gradient. Następnie wybieramy tryb zwracanych danych listy tagów
  • Color - wyróżnianie waznosci tagow poprzez kolor
  • Size - wryozniannie wielkosci tagow poprzez wielkość
  • All - wyroznianie poprzez dwie wyzej podane opcje

--edit--

poprawka

Źródło : http://phpfi.com/147193

nie mozna bylo w uzyciu praktycznym odczytac tagu, dodalem do tablic element tag i jesst juz ok

jutro mam zamiar dorobic klase generujaca automatycznie progi przydzielania czcionek - dwie opcje : automatycznie, ręcznie przez podanie tablicy z progami

Ten post edytował Balon 30.08.2006, 18:55:34


--------------------
Postura wielka i morda wredna, jestem Balon, kozak z osiedla !
bzdury.pl - Królestwo rozrywki
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 19.07.2025 - 03:31