Skrypt ogłoszeniowy Notice3

Notice3 logo

Skrypt strony www z ogłoszeniami online tylko dla profesjonalistów.

Skrypt Notice3 to nowoczesny i uniwersalny skrypt dla strony internetowej z ogłoszeniami online. Może zostać wykorzystany dla dowolnej kategorii ogłoszeń a także jako strona z bazą nieruchomości, miejsc noclegowych, ofert pracy albo jako katalog firm. Doświadczenie zdobyte przy tworzeniu innych skryptów w tym Notice2, Holmes2, Festa2 oraz od klientów prowadzących własne serwisy zaowocowało stworzeniem skryptu który najbardziej odpowiada potrzebom użytkowników i jego właściciela.

Dzięki Notice3 możesz stworzyć portal lokalny, ogólnopolski lub międzynarodowy. Rozbudowany panel administracyjny ułatwi Ci zarządzanie stroną i dostosowanie go do indywidualnych wymagań. Notice3 został napisany zgodnie z wymaganiami dotyczącymi optymalizacji i pozycjonowania strony www, co pozwala w krótkim czasie zdobyć wysoką pozycję w wyszukiwarkach internetowych.

Skrypt jest oparty o Symfony 5, jest zgodny z MCV, po stronie front endu został wykorzystany VUE oraz Bootstrap 5.

Skrypt Notice3 służy do zastosowań profesjonalnych, jako duży serwis z ogłoszeniami online. Dzięki budowie zgodnej z MVC i opartej na frameworku Symfony jest łatwy w dalszej rozbudowie. Cechuje się także bardzo dużą wydajnością.

  • rejestrację użytkowników, logowanie i reset hasła, przydzielanie ról moderatora oraz administratora, formularze zabezpieczone przez reCAPTCHA
  • logowanie przez konto Facebook i Google
  • dodawanie i wyszukiwanie ogłoszeń, dodawanie ich do schowka, odpłatne wystawianie i promowanie, integracja z Przelewy24, Dotpay, PayPal i HotPay
  • prowadzenie bloga na stronie oraz dodawanie stron statycznych
  • zarządzenie wielopoziomową listą kategorii oraz regionów
  • dodanie filtrów dla danej kategorii (max do drugiego poziomu) np w Samochody Osobowe: rocznik, przebieg
  • możliwość zmiany języka strony
  • wysyłkę mailingu do zarejestrowanych użytkowników
  • wysyłkę wiadomości z formularzy kontaktowych
  • podgląd statystyk serwisu w panelu admina wraz z wykresem
  • generowanie sitemap (mapy strony)
  • udostępnienie linku do kanału RSS FEED
  • dodawanie komentarzy przez Facebooka
  • wygenerowanie własnej aplikacji PWA dla portalu
  • dodawanie awatara i opisu na stronę profilu przez użytkowników
  • ustawienie opłat zależnie od długości trwania ogłoszenia
  • podejrzenie w panelu admina logów logowań, wysłanych maili, resetu hasła oraz wyświetleń ogłoszeń
  • posiada czarną listę adresów email i adresów IP z których nie można dodać ogłoszenia oraz czarną listę słów kluczowych które zostaną usunięte z tytułu i treści ogłoszenia
  • klienci mogą zgłaszać naruszenia w ogłoszeniach

Demo skryptu można zobaczyć pod adresem https://notice3.itworksbetter.net

Dane do logowania do panelu admina: https://notice3.itworksbetter.net/admin
login: test
hasło: 1234

Demo wersji angielskiej strony https://notice3en.itworksbetter.net/

Skrypt jest dostępny do zakupu na https://sklep.itworksbetter.net/skrypty-stron-www/1-skrypt-ogloszeniowy-notice3.html

Przykładowe strony stworzone na tym skrypcie: fantbi.pl, katalogofert.pl, odsprzedaj.pl

Notice3 został napisany w Symfony 5. Z tego względu ma wyższe wymagania niż inne skrypty ale jest też znacznie wydajniejszy. Klient który chce samodzielnie wykonać zmiany w serwisie musi znać dobrze PHP i JavaScript.

Serwer musi wspierać PHP w wersji min 7.2, bazę danych MySQL, wiersz poleceń z dostępem do Composera, możliwość ustawienia zadań crona poprzez komendy, zmiana katalogu domeny oraz MOD Rewrite. Zapewne każdy serwer dedykowany i VPS to umożliwia, niestety nie każdy hosting ma dostęp np do wiersza poleceń.

Aby sprawdzić czy na Twoim hostingu skrypt będzie mógł zostać zainstalowany pobierz ten plik composer.json (usuń z niego sekcje „autoload”, „autoload-dev” oraz „repositories”) i wgraj do testowego katalogu na serwerze. Następnie uruchom w konsoli polecenie:

composer install

Jeśli nie wyświetlą się żadne błędy to znaczy że najprawdopodobniej skrypt będzie mógł zostać zainstalowany.

Obsługiwane hostingi:

  • cyber_Folks,
  • LH.pl (SSH dostępne od pakietu KIWI),
  • WEBD.pl (SSH dostępne na życzenie od pakietu Extra),
  • smarthost.pl,
  • kylos.pl (rekomendują VPS ze względu na czas wykonywania skryptu composera),
  • dhosting (rekomendują EWH),
  • OVH (oferta PRO, ale pamięć gwarantowana jest dopiero od oferty Performance1),
  • zenbox (Hosting Ebiznes 25k lub Hosting profesjonalny),
  • AttHost,
  • aftermarket (od pakietu Biznes, żeby zmienić katalog na który wskazuje strona trzeba napisać do BOK)

Ze względu na to, że każda firma oferuje różne wersje hostingu, proszę zawsze upewnić się wcześniej czy hosting obsłuży projekt oparty o Symfony 5.

Hostingi na których powinno działać, choć konsultanci tego nie gwarantują:

  • home.pl (SSH tylko od Biznes w górę, mało pamięci 256 lub 512 MB, niestandardowe dodawanie poleceń crona, poprzez odpowiednio nazwany plik PHP),
  • hostinger (w podstawowej wersji za mało pamięci, max 512 MB, w wersji biznes działa, zobacz na dole strony „Znane problemy” jak przekierować domenę na katalog public),
  • az.pl (za mało pamięci do aktualizacji composera, sugerują VPS)

Nieobsługiwane hostingi:

  • kei.pl (odpowiedź konsultanta: „Zwykły hosting nie spełni wymagań, jedynie VPS”),
  • nazwa.pl (nie ma możliwości ustawiania zadań crona z poziomu poleceń, sugerują VPS Start)

Instalacja skryptu wygląda podobnie jak instalacja standardowego projektu stworzonego w Symfony 5. Rozbudowana dokumentacja frameworka znajduje się pod adresem https://symfony.com/ W razie problemów tam można szukać rozwiązań.

Po zakupie skryptu zostanie dostarczone archiwum z plikami. Należy je skopiować na serwer.

Domena powinna wskazywać na katalog /public/ w plikach skryptu. Jeśli np. wgrywasz pliki do katalogu /home/test/domains/domena.pl/public_html/ to ustaw żeby domena wskazywała na katalog / Domena powinna wskazywać na katalog /public/ w plikach skryptu. Jeśli np. wgrywasz pliki do katalogu /home/test/domains/domena.pl/public_html/public/

Plik .env to główny plik konfiguracyjny systemu, należy go skonfigurować przed rozpoczęciem używania strony:

APP_ENV – powinno mieć wartość „prod”

APP_SECRET – losowy ciąg znaków

MAILER_DSN – ścieżka wysyłki maili, domyślnie ma wartość „sendmail://localhost” czyli maile są wysyłane z localhost. Aby zmienić np na wysyłkę przez SMTP musimy ustawić:

MAILER_DSN=smtp://user:pass@smtp.example.com:port

Więcej informacji pod https://symfony.com/doc/current/mailer.html

Wypełniamy dane do połączenia do bazy danych (jeśli hasło zawiera znaki specjalne należy dać je w cudzysłowie):

DATABASE_HOST=127.0.0.1
DATABASE_PORT=3306
DATABASE_USER=root
DATABASE_NAME=notice3
DATABASE_PASS=''
DATABASE_SERVER_VERSION=5.7

Wersja serwera bazy danych jest polem wymaganym, domyślna to: '5.7′.
Jeśli na serwerze jest baza MariaDB to należy dodać prefiks „mariadb-” np „mariadb-10.3.23”
Więcej informacji pod https://symfony.com/doc/current/configuration.html

APP_DEMO – wersja demo strony, powinno być ustawione na 0

APP_URL – adres URL witryny (używany m.in. w linkach w mailach o końcu wyświetlania ogłoszenia, nie powinien zawierać znaku / na końcu)

APP_LANG – kod domyślnego języka (en lub pl)

Po skonfigurowaniu pliku .env należy uruchomić następujące polecenie w konsoli do instalacji pakietów pamiętaj żeby polecenie uruchamiać w PHP min 7.2 (musi być ta sama wersja w konsoli jaką ma ustawiona domena):

composer install

Jeśli na hostingu nie masz zainstalowanego composera możesz skorzystać z tej instrukcji:

curl -sS https://getcomposer.org/installer | php

Wtedy zamiast composer musisz wpisywać (pod „php” na niektórych hostingach trzeba podać pełną ścieżkę do php na serwerze):

php composer.phar install

Jeśli wyświetla problem z brakiem pamięci można wykorzystać poniższe polecenia:

php -d memory_limit=-1 composer.phar install

Jeśli wyświetliło że używasz starszej wersji PHP spróbuj zaktualizować pakiety poleceniem:

composer update

Jeśli pakiety się poprawnie zainstalowały przechodzimy do kolejnego kroku. Ale jeśli wystąpił błąd (np. z brakiem pamięci lub proces został uśmiercony, wyświetla „killed”) należy skontaktować się z administratorem serwera.

Następnie zapełniamy bazę danych poleceniem:

php bin/console doctrine:migrations:migrate

Następny krok do dodanie użytkownika z prawami administratora z poziomu konsoli poleceniem:

php bin/console app:create-user

Skrypt zapyta się o login, adres email oraz hasło. Adres email zostanie automatycznie ustawiony na adres email administratora.

Po tym możemy się zalogować do panelu admina pod adresem nazwadomeny.pl/admin

Następnie zalecane jest skonfigurowanie kluczy do reCAPTCHA zgodnie z instrukcją

Konfiguracja crona:

Należy ustawić następujące zadania crona z PHP w wersji min 7.2.

Raz dziennie po północy:

php [sciezka do strony]/bin/console cron:daily

Co 10 min (lub rzadziej), wysyłka mailingu:

php [sciezka do strony]/bin/console cron:10min

Patrz także ogólną instrukcję https://blog.wyremski.pl/instrukcja-instalacji-i-konfiguracji-skryptow/ odnośnie ustawienia integracji z płatnościami itd.

W przypadku gdy strona korzysta z SSL należy w pliku public/.htaccess odkomentować (usunąć znak # z początku linii) te dwie linie:

RewriteCond %{HTTPS} !on
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [R,L]

A następnie w pliku .env ustawić APP_URL z https

Jeśli ustawiliśmy APP_URL z „www” na początku to w pliku public/.htaccess usunąć te linie:

RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ http://%1%{REQUEST_URI} [R=301,QSA,NC,L]

I zamiast nich wstawić:

RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]

Patrz https://blog.wyremski.pl/instrukcja-instalacji-i-konfiguracji-skryptow/#uruchomienie_recaptcha
Notice3 używa reCAPTCHA w wersji v3

Skrypt może naraz być uruchomiony w jednym języku. Pliki z tłumaczeniami znajdują się w katalogu /translations a maile w /templates/mails
Kategorie, regiony, filtry należy ręcznie przetłumaczyć w panelu admina.
Domyślny język można zmienić w pliku .env pod zmienną LANG

Aby poprawnie skonfigurować płatności przez Przelewy24, Dotpay, PayPal lub HotPay patrz https://blog.wyremski.pl/instrukcja-instalacji-i-konfiguracji-skryptow/#platnosci

Aby na stronie była możliwość logowania przez Facebook lub Google należy stworzyć odpowiednie aplikacje na swoim koncie Facebook / Google.

Link do instrukcji dla logowania przez Facebook: https://blog.wyremski.pl/instrukcja-instalacji-i-konfiguracji-skryptow/#logowanie_fb

Jako adres URI do przekierowania proszę wpisać: https://nazwa.domeny/logowanie/fb

Link do instrukcji dla logowania przez Google: https://blog.wyremski.pl/instrukcja-instalacji-i-konfiguracji-skryptow/#logowanie_google

Jako adres URI do przekierowania proszę wpisać: https://nazwa.domeny/logowanie/google

Skrypt korzysta z biblioteki LiipImagineBundle do generowania miniatur zdjęć. Z tego też względu pierwsze wyświetlenie miniaturki może chwilę zająć (zależnie od szybkości serwera) dlatego, że skrypt musi wygenerować grafikę w odpowiednich wymiarach. Plik konfiguracyjny znajduje się w lokalizacji /config/packages/liip_imagine.yaml

Można w nim zmienić wymiary miniaturek zdjęć w ogłoszeniach oraz na liście wpisów blogowych. Można także dodać znak wodny do tych zdjęć zgodnie z https://symfony.com/doc/2.0/bundles/LiipImagineBundle/filters/general.html#filter-watermark

Aby na serwerze opróżnić cache zdjęć należy wykonać polecenie:

php bin/console liip:imagine:cache:remove

Wtedy biblioteka będzie generować nowe miniaturki.

Skrypt wymaga aktualnej wersji biblioteki GD Library wspierającej format WEBP.

Więcej informacji pod adresem https://symfony.com/doc/2.0/bundles/LiipImagineBundle/index.html

Skrypt jest wstępnie skonfigurowany pod aplikację PWA. Po instalacji skryptu można zmienić tytuł, kolor i inne dane aplikacji w pliku /manifest.json.
Należy także podmienić ikonki w folderze /uploads/icons w danych wymiarach. W pliku offline.html można edytować tekst wyświetlany przy braku połączenia z Internetem.

Choć do obsługi strony wystarczy sama dobra znajomość poruszania się w Internecie to aby dokonać indywidualnych zmian w plikach należy posiadać wiedzę z zakresu PHP (najlepiej znać framework Symfony). Poniżej zamieszczam listę niektórych z częściej używanych poleceń.

Usuwanie cachu produkcyjnego (po np zmianach w szablonie)

php bin/console cache:clear --no-warmup -e prod

Tworzenie nowego kontrollera

php bin/console make:controller BrandNewController

Tworzenie nowej encji i aktualizacja bazy danych

php bin/console make:entity
php bin/console make:migration
php bin/console doctrine:migrations:migrate

Autor skryptu na prośbę klienta może wysłać najnowszą wersję skryptu, jednak to sam klient musi go zaktualizować.

Uwaga! Przed aktualizacją skryptu wykonaj kopię zapasową plików i bazy danych. Aktualizacja nadpisze wszystkie indywidualnie wykonywane modyfikacje. Wykonujesz aktualizację na własną odpowiedzialność!

Aby zaktualizować skrypt najlepiej najpierw usunąć z serwera katalogi:
/bin/
/config/
/migrations/
/publis/assets/
/src/
/templates/
/translations/

Następnie z nowszej wersji skryptu wgrywamy na serwer wszystkie pliki i katalogi oprócz pliku .env

Sprawdzamy czy w pliku .env nowszej wersji są dodatkowe zmienne i jak tak do dodajemy je do naszego pliku konfiguracyjnego .env

Instalujemy od nowa biblioteki (w przypadku gdy np. dodano nowe pakiety) poleceniem:

composer install

Następnie wykonujemy aktualizację bazy danych (o ile została zaktualizowana) poleceniem:

php bin/console doctrine:migrations:migrate

I na koniec usuwamy cache:

php bin/console cache:clear --no-warmup -e prod
3.0.0 (23.08.2020)Premiera skryptu
3.0.1 (22.09.2020)Aktualizacja pakietów, linki do podstron po angielsku, naprawienie drobnych błędów przy edycji ogłoszenia
3.0.2
(24.09.2020)
Przetłumaczalne szablony maili, autofocus do pierwszych pól formularzy, naprawa problemu z przekierowaniem po zapisaniu podregionu lub podkategorii, naprawa ustawiania pozycji po edycji stron statycznych, możliwość ustawienia domyślnego regionu, adresu oraz telefonu w ustawieniach użytkownika
3.0.3
(14.10.2020)
Wprowadzenie kanału RSS FEED, wyszukiwarki ogłoszeń w panelu administracyjnym oraz na liście użytkowników. Przy aktywacji konta przydzielenie wszystkich ogłoszeń z danego adresu email do użytkownika. Wprowadzenie adresów URL po polsku i angielsku. Aplikacja PWA.
3.1.0
(23.10.2020)
Optymalizacja ładowania kategorii i regionów. Możliwość dodawania „podobnego ogłoszenia”. Alfabetyczne układanie kategorii, regionów oraz stron statycznych w panelu administracyjnym. 3 nowe pola na kody reklam. Automatyczne generowanie Sitemap (przez zadania crona). Możliwość komentowania ogłoszeń, profilów, wpisów blogowych przez Facebooka. Przejście z jQuery Lazy do Vue Lazy. Wyświetlanie liczby ogłoszeń w kategoriach.
3.1.1
(19.11.2020)
Poprawki w generowaniu sitemap. Usunięcie zbędnych tokenów. Uporządkowanie helperów klas i wspólna klasy do captchy oraz do maili. Możliwość dodawania administratorów z poziomu konsoli.
3.2.0
(03.12.2020)
Możliwość dodawania awatara do konta użytkownika oraz opisu na stronę profilu. Możliwość ustawienia opłat w zależności od długości trwania ogłoszenia. Integracja z płatnościami HotPay.
3.3.0
(12.01.2021)
Natywne lazyload do obrazków. Udostępnianie ogłoszeń przez WhatsApp. Logi logowania użytkowników, wysłanych maili i resetu hasła w panelu admina. Kolejkowanie wysyłki maili. Wysyłka mailingu z panelu admina. Możliwość edycji i usuwania ogłoszeń dodanych przez niezalogowanych użytkowników. Poprawki wizualne. Zaznaczanie naraz wielu ogłoszeń i użytkowników w panelu admina. Breadcrumbs (nawigacja okruszkowa) na liście ogłoszeń.
3.3.1
(11.02.2021)
Aktualizacja pakietów. Drobne poprawki funkcjonalności i stylów CSS na mobile. Micro dane dla ogłoszeń.
3.3.2
(01.03.2021)
Wyświetlanie ceny zależnie od kategorii (max 2 poziom kategorii).
3.3.3
(06.05.2021)
Możliwość sortowania ogłoszeń. Poprawa dostępności (dodanie atrybutów aria). Poprawa jakości kodu PHP i JS. Odseparowanie klas PHP z formularzami. Wprowadzenie BaseController.
3.3.4
(19.05.2021)
Zmiany w sortowaniu ogłoszeń. Własny skrypt resetu hasła. Zmiana wyglądu listy ogłoszeń na mobile.
Możliwość ustawiania tytułu SEO dla kategorii. Poprawki przy ładowaniu kategorii na liście ogłoszeń.
3.3.5
(28.06.2021)
Drobne poprawki w sortowania i filtrowaniu ogłoszeń. Aktualizacja do Symfony 5.2
3.4.0
(05.07.2021)
Poprawki w ładowaniu kategorii i filtrów, w CSS oraz w microdata. Ikony do przeglądarek. Generowanie miniaturek w WEBP. Optymalizacja zapytań do bazy danych. Zmiana slajdera z OWL na Swiper.
3.4.1
(07.07.2021)
Wspólne ustawienia waluty do płatności. Zmiana slajdera pełnoekranowego. Możliwość logowania przez konto Facebook i Google.
3.4.2
(12.08.201)
Poprawki w wyświetlaniu filtrów, zapamiętywanie ich widoczności. Zmiana wyglądu maili.
Zapisywanie liczby wyświetleń ogłoszenia. Style dla drukarek. Wykres statystyk w panelu administracyjnym. Zgłaszanie naruszeń w ogłoszeniach. Czarna lista adresów email, IP i słów kluczowych.
3.5.0
(24.08.2021)
Aktualizacja do Symfony 5.3. Przejście z Bootstrap 4 do Bootstrap 5.

Aby włączyć wyświetlanie błędów na ekranie należy w pliku .env zmienić APP_ENV=prod
na

APP_ENV=dev

W wersji produkcyjnej należy wrócić do „prod”. Logi błędów można także podejrzeć w pliku /var/log/dev.log oraz /var/log/prod.log

Przy instalacji pakietów wyświetla „requires ext-zip * -> it is missing from your system. Install or enable PHP’s zip extension.”

Należy z konsoli zainstalować:

sudo apt-get install php7.4-zip

(gdzie 7.4 to wersja PHP)
Jeśli wyświetla bład z „ext-xml” należy uruchomić:

sudo apt-get install php-xml

Przy próbie wysłania maila (np. przy aktywacji ogłoszenia, rejestracji) wyświetla błąd.

Domyślnie w pliku .env jest ustawiona wysyłka maili z localhost:

MAILER_DSN=sendmail://localhost

Jeśli Twój serwer tego nie wspiera musisz ustawić wysyłkę przez np. SMTP:

MAILER_DSN=smtp://user:pass@smtp.example.com:port

Więcej informacji pod https://symfony.com/doc/current/mailer.html

Przy próbie migracji bazy danych wyświetla „An exception occured in driver: could not find driver with mysql”

Należy zainstalować sterownik mysql:

sudo apt install php-mysql

Symfony Make:Migration: The metadata storage is not up to date, please run the sync-metadata-storage command to fix this issue

W pliku konfiguracyjnym /config/packages/doctrine.yaml podana została nieprawidłowa wersja bazy danych. Jeśli na serwerze jest baza MariaDB to należy dodać prefiks „mariadb-” np „mariadb-10.3.23”. Więcej informacji pod adresem https://github.com/doctrine/DoctrineMigrationsBundle/issues/337#issuecomment-645390496

Przekierowanie domeny na katalog public (np. Hostinger)

Niektóre hostingi nie umożliwiają przekierowania domeny na dany katalog. Należy do nich np. Hostinger. Aby przekierować w tej sytuacji domenę na katalog public należy w katalogu public_html stworzyć plik .htaccess z takim kodem (podmieniając nazwę domeny na własną):

RewriteEngine on
RewriteCond %{HTTP_HOST} ^domain.com$ [NC,OR]
RewriteCond %{HTTP_HOST} ^www.domain.com$
RewriteCond %{REQUEST_URI} !public/
RewriteRule (.*) /public/$1 [L]

Problem z polskimi znakami w bazie danych

Problem pojawił się po imporcie gotowej bazy danych z jednego hostingu na hosting home.pl. Stare dane pobierane z bazy danych nie wyświetlały poprawnie polskich znaków. Rozwiązaniem okazało się dodanie do pliku config/packages/doctrine.yaml
doctrine:
dbal:
options:
1002: „SET NAMES 'UTF8′ COLLATE 'utf8_unicode_ci'”

Nie tworzą się zdjęcia, nie zostały załadowane style bibliotek np. edytora wizualnego

Skrypt musi mieć prawa dostępu do zapisu w folderze public. Zarówno composer przy instalacji pakietów jak i później Symfony przy uruchomionej stronie. Należy ustawić prawa dostępu 0777 dla folderu /public.

Ta strona używa ciasteczek (cookies), dzięki którym nasz serwis może działać lepiej. Więcej informacji

The cookie settings on this website are set to "allow cookies" to give you the best browsing experience possible. If you continue to use this website without changing your cookie settings or you click "Accept" below then you are consenting to this.

Close