Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Zaawansowany system newsów jak?
KotWButach
post
Post #1





Grupa: Zarejestrowani
Postów: 361
Pomógł: 10
Dołączył: 8.02.2012

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


Troszkę nie widziałem gdzie to dać więc jeżeli nie tu to przepraszam.

Otóż próbowałem znaleźć jakiś tutek apropo zaawansowanego w oop systemu newsów z komentarzami ale nie mogę takowego znaleźć za to sa jakieś na necie nazwijmy to proste pluginy, moduliki...

Czy możecie coś polecić bo szukam caly dzień czegoś na poziomie ale bez skutecznie.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 19)
CuteOne
post
Post #2





Grupa: Zarejestrowani
Postów: 2 958
Pomógł: 574
Dołączył: 23.09.2008
Skąd: wiesz, że tu jestem?

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


A nie myślałeś o napisaniu go samemu? Nawet jeżeli popełnisz jakieś błędy architektoniczne to myślę, że taki system sporo by cię nauczył.

W każdym razie z chęcią służę pomocą (sam zamierzam przysiąść do podobnego projektu)
Go to the top of the page
+Quote Post
KotWButach
post
Post #3





Grupa: Zarejestrowani
Postów: 361
Pomógł: 10
Dołączył: 8.02.2012

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


Już jeden napisałem należy do kategorii mnóstwa błędów. Chciałbym zobaczyć jak pisza to wyjadacze. a jeszcze oparte na mvc to by było wręcz spełnienie marzeń ale wróćmy na ziemie oop to i tak dużo jak na 2012 (IMG:style_emoticons/default/smile.gif) .

Jeżeli nie to można by pomyśleć o wątku omawiającym tego typu moduł oparty na poprawnych wzorcach mvp w zasadzie.
Go to the top of the page
+Quote Post
CuteOne
post
Post #4





Grupa: Zarejestrowani
Postów: 2 958
Pomógł: 574
Dołączył: 23.09.2008
Skąd: wiesz, że tu jestem?

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


Na moje oko, możesz:
- potraktować newsa jako zwykłe zapytanie do bazy, które zwróci dane do widoku a tam w pętli wyświetlanie ich (mało efektowne ale szybkie (IMG:style_emoticons/default/wink.gif) )
- jako osobny komponent (coś al'a logowanie w cmsach), który jest w pełni skalowalny
- mix dwóch poprzednich:
- pobranie danych do modelu (NewsCollection lub coś w ten deseń - poczytaj o kolekcjach w php)
- wyświetlanie w pętli przy użyciu dekoratorów (np. Widgety z wzorcem obserwator)


(ten 3 przykład to chyba nie do końca mix (IMG:style_emoticons/default/tongue.gif) )

Ten post edytował CuteOne 14.09.2012, 22:18:13
Go to the top of the page
+Quote Post
KotWButach
post
Post #5





Grupa: Zarejestrowani
Postów: 361
Pomógł: 10
Dołączył: 8.02.2012

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


No tak
ale newsy / artykuly - mogą mieć różne pola treści, moga być wył/wł do jakiej kategorii itp i chodzi jak to rozpisać bo napisać klasę która to zrobi nie problem ale rozpisać to mądrze a więc zaprojektować to jest już inna kwestia.

Ten post edytował KotWButach 14.09.2012, 22:42:29
Go to the top of the page
+Quote Post
CuteOne
post
Post #6





Grupa: Zarejestrowani
Postów: 2 958
Pomógł: 574
Dołączył: 23.09.2008
Skąd: wiesz, że tu jestem?

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


Heh zaczynam Cie lubić (IMG:style_emoticons/default/smile.gif) Widzę nie chcesz robić fuszerki - moje propozycje:
- weź kartkę i ołówek:
a ) rozrysuj co może zawierać tabela news np.
Kod
news_id | author_id | image_id | news_title | news_text | date_create | date_update | news_status

B ) rozrysuj co maja zawierać dodatkowe tabele np. news_user
Kod
news_user_id | news_id (klucz obcy)| news_user_jakiespole

c ) gdy będziesz wiedział co ma zawierać news a co news_kategoria_ogumienie przystąp to rozpisania funkcjonalności
Kod
- CRUD w panelu admina
- news_user, może zawierać komentarze (CRUD komentarzy w panelu)
- news_kategorie_* nie może zawierać komentarzy
- dzięki wzorcowi obserwator news, może zmieniać swój wygląd (kolor tła, czcionka itp) na podstawie:
a ) ilości komentarzy
B ) statusu newsa
itp..


d ) zacznij pisać (IMG:style_emoticons/default/smile.gif)


ps. pamiętaj wzorce to nie restrykcyjny szablon, którego nie można naginać na własne potrzeby
Go to the top of the page
+Quote Post
KotWButach
post
Post #7





Grupa: Zarejestrowani
Postów: 361
Pomógł: 10
Dołączył: 8.02.2012

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


Witam pogłówkowałem jak umiałem

Problemy: Nie wiem jak zrobić podkategorie. Czyli drzewko dla artykułów. Aktualna wersja bazy danych wygląda tak. Wiadomo kontent będzie się rozrastał w miarę dodawania rodzajów stron. No właśnie i jak dodać rodzaj artykułu np. Jeden artykuł zawiera autora i kontent. Natomiast drugi autora kontent date obrazek.

  1. Baza Danych.
  2.  
  3. CREATE TABLE `news` (
  4. `id` INT NOT NULL AUTO_INCREMENT ,
  5. `id_categories` INT NULL ,
  6. `id_status` INT NULL ,
  7. `id_image` INT NULL ,
  8. `id_contents` INT NULL ,
  9. PRIMARY KEY (`id`) );
  10.  
  11. CREATE TABLE `categories` (
  12. `id` INT NOT NULL AUTO_INCREMENT ,
  13. `name` VARCHAR(100) NULL ,
  14. INDEX () ,
  15. PRIMARY KEY (`id`) );
  16.  
  17. CREATE TABLE `status` (
  18. `id` INT NOT NULL AUTO_INCREMENT ,
  19. `active` TINYINT(1) NULL ,
  20. INDEX () ,
  21. PRIMARY KEY (`id`) );
  22.  
  23. CREATE TABLE `image` (
  24. `id` INT NOT NULL AUTO_INCREMENT ,
  25. `thumbnail_image` VARCHAR(100) NULL ,
  26. `image` VARCHAR(100) NULL ,
  27. INDEX () ,
  28. PRIMARY KEY (`id`) );
  29.  
  30. CREATE TABLE `contents` (
  31. `id` INT NOT NULL AUTO_INCREMENT ,
  32. `title` VARCHAR(100) NULL ,
  33. `content` LONGTEXT NULL ,
  34. `date_add` DATETIME NULL ,
  35. `date_edit` DATETIME NULL ,
  36. `autor` VARCHAR(45) NULL ,
  37. INDEX () ,
  38. PRIMARY KEY (`id`) );
  39.  
Go to the top of the page
+Quote Post
CuteOne
post
Post #8





Grupa: Zarejestrowani
Postów: 2 958
Pomógł: 574
Dołączył: 23.09.2008
Skąd: wiesz, że tu jestem?

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


1. Dlaczego trzymasz statusy w osobnej tabeli?
2.
  1.  
  2. class ArticleEntity {
  3.  
  4. protected $_id;
  5. protected $_image;
  6.  
  7. public function __construct(DbRow $row) {
  8.  
  9. // przypisanie danych do obiektu
  10. }
  11.  
  12. public function getId() {
  13. return $this->_id;
  14. }
  15.  
  16. public function getImage() {
  17. return $this->_image;
  18. }
  19. }
  20.  
  21.  
  22. class ArticleA {
  23.  
  24. public function xxx() {
  25.  
  26. $id = $this>_entity->getId();
  27. $image = $this>_entity->getImage();
  28. }
  29. }
  30.  
  31. class ArticleB {
  32.  
  33. public function xxx() {
  34.  
  35. $image = $this>_entity->getImage();
  36. }
  37. }


Mam nadzieję, że załapiesz o co chodzi


Go to the top of the page
+Quote Post
KotWButach
post
Post #9





Grupa: Zarejestrowani
Postów: 361
Pomógł: 10
Dołączył: 8.02.2012

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


Tak wiem ale jest to sztywny podział. Co jeżeli chciałbym dodać kilkając na przycisk DODAJ NOWY TYP ARTYKUŁU?

Hmm dlaczego, myślałem że tak będzie bardziej przejrzyście ponieważ status artykułu nie należy do jego treści?

Ten post edytował KotWButach 15.09.2012, 15:19:18
Go to the top of the page
+Quote Post
CuteOne
post
Post #10





Grupa: Zarejestrowani
Postów: 2 958
Pomógł: 574
Dołączył: 23.09.2008
Skąd: wiesz, że tu jestem?

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


Hmmm z Twojego opisu wynika, że chcesz tworzyć CMS'a a nie system newsów/artykułów (to dwa różne zagadnienia). Wpisywanie czegoś na sztywno ma swoje zalety np. szybkość działania, pełna kontrola nad danymi wejścia i wyjścia, obsługa wyrzucanych błędów.

Jeżeli chcesz tworzyć coś dynamicznego to już teraz musisz przewidzieć jak poradzić sobie z błędami, jakich danych będziesz potrzebował oraz jaką funkcjonalność musisz dostarczyć danemu artykułowi/newsowi.

Na moje oko - dynamiczne tworzenie rodzajów artykułów to lekkie przekombinowanie gdy w 5min, możesz napisać nową klasę dla Artykuly_Dzwony dziedziczącą po klasie abstrakcyjnej podstawowe funkcjonalności i dodanie swoich zmian (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
KotWButach
post
Post #11





Grupa: Zarejestrowani
Postów: 361
Pomógł: 10
Dołączył: 8.02.2012

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


Wiadomo chce jak najszybciej pisac strony pod klientów. I stąd moje dywagacje na ten temat.
Choć myślę że potem mogę dopisąć kreator działający na plikach. Ominę tym samym bazę danych a do klienta trafi szyty na miarę produkt bez zbędnych opcji?

Ten post edytował KotWButach 15.09.2012, 16:44:34
Go to the top of the page
+Quote Post
CuteOne
post
Post #12





Grupa: Zarejestrowani
Postów: 2 958
Pomógł: 574
Dołączył: 23.09.2008
Skąd: wiesz, że tu jestem?

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


AbstractNews.php
  1. abstract class AbstractNews {
  2.  
  3. public function setXYZ($int) {
  4. if(is_float($int)) {
  5. $this->_xyz = $int;
  6. }
  7. }
  8. }


AbstractNewsKategoria.php
  1. abstract class AbstractNewsKategoria {
  2.  
  3. public function setXYZ($int) {
  4. $this->_xyz = $int * $int;
  5. }
  6. }


NewsKategoriaXXX.php
  1. class NewsKategoriaXXX extends AbstractNewsKategoria{
  2.  
  3. public function setXYZ($int) {
  4. if(is_numeric($int)) {
  5. parent:: setXYZ($int);
  6. }
  7. }
  8. }


NewsHW.php
  1. class NewsHW extends AbstractNews {
  2.  
  3. public function setXYZ($int) {
  4. parent:: setXYZ($int);
  5. }
  6. }
  7.  
  8. class NewsHW extend AbstractNewsKategoria {
  9.  
  10. public function setXYZ($int) {
  11. if(is_float($int)) {
  12. parent:: setXYZ($int);
  13. }
  14. }
  15. }
  16.  
  17. class NewsHW extends NewsKategoriaXXX {
  18.  
  19. public function setXYZ($int) {
  20. if($int !== $this->_cos) {
  21. parent:: setXYZ($int);
  22. }
  23. }
  24. }


Innymi słowy tworzysz sobie klasy abstrakcji z podstawowymi funkcjonalnościami dla każdej "grupy" newsów i korzystasz z nich podczas tworzenia nowych "grup" artykułów/newsów. Dlatego wspomniałem o tym, że musisz jako projektant przewidzieć wszystkie (albo chociaż większość funkcjonalności).

Ten post edytował CuteOne 17.09.2012, 07:28:50
Go to the top of the page
+Quote Post
em1X
post
Post #13





Grupa: Zarejestrowani
Postów: 984
Pomógł: 41
Dołączył: 16.03.2002
Skąd: Płock

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


Myślę, że lepszym rozwiązaniem dla Ciebie w celu nauki OOP będzie zainteresowanie się jakimś porządnym frameworkiem, typu Yii, Symfony czy Zend. Zobaczysz jak wygląda to wszystko od kuchni.
Go to the top of the page
+Quote Post
KotWButach
post
Post #14





Grupa: Zarejestrowani
Postów: 361
Pomógł: 10
Dołączył: 8.02.2012

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


em1X - zle zrozumiałes moje posty. Nie chodzi o naukę oop jako oop lecz poznanie opinii innych dotyczących pisania konkretnych części aplikacji. Jak system newsów. Widomo siedząc w swoim małym świecie nie jestesmy w stanie nabyć lepszej praktyki niż to co przeczytamy czy się nauczymy z tutków czy tak jak piszesz poznając jakiś frem.

Swoja drogą CuteOne dzięki za wytrwałą pomoc na pewno będzie sog. I odrazu przepraszam że nic nie piszę w tym temacie ale dopadła mnie mala choroba i się kuruje. Jak tylko stanę na nogi pojawi się tu troszkę kodu do poprawy.

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

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

Witam
Mam problem chciałbym do newsów dać dość dokładne statystyki.

Najprościej ale uciążliwe dla bazy jest taki układ.

Data - odwiedzono

ale 300 odwiedzin == 300 rekordów itd.

Czy macie jakieś własne przekonania jak to wykonać?

Ten post edytował KotWButach 1.10.2012, 14:40:50
Go to the top of the page
+Quote Post
erix
post
Post #15





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Inkrementuj wartość pola? Chyba że potrzebujesz innych statystyk.
Go to the top of the page
+Quote Post
KotWButach
post
Post #16





Grupa: Zarejestrowani
Postów: 361
Pomógł: 10
Dołączył: 8.02.2012

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


Chciałem pokazywać również wykres jak to się ma ostatnio w modzie.
Go to the top of the page
+Quote Post
Crozin
post
Post #17





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

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


300 odwiedzin -> 300 rekordów to wcale nie jest coś niedobrego. Pamiętaj, że ilość danych nie ma aż tak dużego znaczenia przy odpowiedniej strukturze.
Go to the top of the page
+Quote Post
KotWButach
post
Post #18





Grupa: Zarejestrowani
Postów: 361
Pomógł: 10
Dołączył: 8.02.2012

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


W sumie można by zrobić 365 dni w roku + inkrementacja zamiast bezmyślnie dodawać.
Czy prócz tego robić licznik ogólny czy niech zlicza z X rekordów bo prościej?
Go to the top of the page
+Quote Post
Crozin
post
Post #19





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

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


Wtedy ograniczasz się do zbierania informacji jedynie w zakresie jednego roku. To nie jest bezmyślne dodawanie - przecież każdy taki rekord może zawierać wartościowe informacje. Dokładną datę i czas, adres IP (geolokalizacja) czy informacje o przeglądarce (system, przeglądarka).
Oczywiście licznik ogólny, który będzie jedynie zwiększany o jeden przy każdej wizycie to bardzo dobry pomysł - każdorazowe zliczanie łącznej ilości odwiedzin byłoby niepotrzebnie obciążające.
Go to the top of the page
+Quote Post
KotWButach
post
Post #20





Grupa: Zarejestrowani
Postów: 361
Pomógł: 10
Dołączył: 8.02.2012

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


zle mnie zrozumiałeś. jeden dzień bez godziny(jeden rekord na jeden dzień). ale tu masz racje zamknąłbym sobie drogę na regiony przeglądarkę itd.

Ten post edytował KotWButach 1.10.2012, 23:31:18
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 23.09.2025 - 22:13