1. Upoznavanje sa 4D okolišem Ovaj dio treba obuhvatiti osnovnu pripremu za rad u razvoju blokova. 1.1 Priprema za izradu blokova Za početak, trebate postaviti sljedeće tehnologije: • Virtualna mašina / Linux: Trebat će vam Linux-based VM. • WordPress: WordPress treba biti instaliran i pokrenut, jer će se blokovi integrirati unutar njega. • MySQL: Instalirajte i konfigurirajte MySQL za potrebe baze podataka. • NGINX: NGINX kao web server za posluživanje vaše aplikacije. • PHP – PHP Memcached: Instalirajte PHP i potrebne PHP module, uključujući Memcached za keširanje. • Code Editor: Postavite editor koda poput VS Code-a za lakše kodiranje. • Github: Osigurajte da ste upoznati s korištenjem Git-a za verzioniranje vašeg koda i pohranjivanje na GitHubu. 1.2 Dokumentacija i 4D varijable • Obavezne klase: Koje klase morate koristiti u vašem codebase-u? Ako možete podijeliti te klase, mogu ih detaljnije objasniti. • W4D klase: Ako su u pitanju apstraktne ili osnovne klase koje čine temelj za prilagođene blokove, potrebno je objasniti kako se koriste. • Smjernice i željena struktura blokova: Ako imate specifične smjernice o strukturi blokova, to će pomoći u daljnjem razvoju. 1.3 Upoznavanje s dizajnom blokova i dizajn setova • Figma: Ako ste već koristili Figma za dizajn, mogu vam pomoći u povezivanju dizajna s kodom. • Upute i opća pravila: Ako postoje pravila ili smjernice o dizajnu, molim vas podijelite ih kako bi se vodilo prema tim principima. • Česta pitanja: Ako imate najčešće postavljana pitanja vezana uz razvoj blokova, slobodno ih podijelite, a ja ću ih obraditi. 1.4 Korisni linkovi i literatura • Imenovanje blokova i dokumenata: Ako imate specifične konvencije za imenovanje blokova, datoteka, i sl., podijelite ih sa mnom. • Imenovanje klasa i datoteka: Imenovanje klasa i datoteka važno je za čitljivost i održavanje koda. Ako imate smjernice za ovo, navedite ih. • BEM Konvencija: Ako slijedite BEM (Block Element Modifier) konvenciju za CSS, objasnit ćemo kako ju implementirati. ________________________________________ 2. Proces izrade bloka Ovaj dio treba obuhvatiti proces od početne ideje do implementacije bloka. 2.1 Definiranje specifikacija bloka Prvo, potrebno je definirati što blok treba raditi: • Je li to statički ili dinamički blok? • Koji su parametri potrebni za blok (npr. tekst, slike)? • Hoće li blok komunicirati s bazom podataka? Ako da, kakve upite trebate? Ako možete podijeliti primjere specifikacija blokova, mogu biti precizniji. 2.2 Razrada i plan izrade bloka Ovdje ćete razraditi cijeli proces razvoja bloka: • Prototipiranje i mockupovi: Postoji li faza prototipa? • Radni tijek razvoja: Kako tim radi na blokovima? Razvija li se frontend prvo, pa backend? ________________________________________ 3. Korak 1: Izrada front-end izgleda bloka Ovdje ćemo opisati kako se razvija front-end za blok. 3.1 Izrada statičnog elementa HTML Objasnite osnovnu strukturu HTML-a koju koristite za blok. • Koje HTML oznake se koriste? • Koristite li neki templating engine (npr. Twig)? 3.2 Stilizacija statičnog elementa SCSS Objasnite kako stilizirate blok koristeći SCSS. • Kako primjenjujete stilove na blok? • Imate li ponovljivih komponenti ili klasa? 3.3 Optimizacija responzivnosti za manje uređaje Kako osigurati da blok bude responzivan? • Koristite li media queries? • Koje korake poduzimate da testirate responzivnost? ________________________________________ Korak 2: Parametrizacija Inicijalizacija • Dodavanje novog bloka u listu blokova: Kako registrirati blok u WordPress sustavu? • Dodavanje datoteke bloka u dokumentaciju plugina/teme: Kako povezati datoteke blokova u dokumentaciji plugin-a ili teme? Parametrizacija jednostavnog bloka • Izrada dokumenta za setiranje bloka: Kako postaviti parametre za blok? • Izrada dokumenta za prikaz bloka: Kako će blok biti prikazan na stranici? • Composer: Ako koristite Composer za upravljanje ovisnostima, objasnit ćemo kako to raditi. • Testiranje: Kako testirati blokove u različitim uvjetima? Parametrizacija složenog bloka Za složene blokove trebate: • Views: Kako strukturirati prikaze blokova? • Forms: Ako blok uključuje forme, kako ih implementirati? • ForEach pristup: Kako iterirati kroz podatke u bloku? • Limitiranje broja renderanih elemenata: Kako kontrolirati broj elemenata koji se prikazuju? ________________________________________ Što mi treba od vas Za detaljniji vodič, trebam sljedeće: 1. Primjeri koda: Ako imate specifičan kod za jednostavne ili složene blokove, podijelite ga. 2. Struktura WordPress-a: Kako registrirate blokove i koji su osnovni dijelovi vaše teme ili plugina? 3. PHP ili JavaScript klase: Ako koristite određene klase za logiku blokova, podijelite ih. 4. Dizajn ili mockupovi: Ako imate dizajne u Figmi ili neki drugi alat, mogu vam pomoći s njihovom implementacijom u kod. 5. Testiranje: Kako testirate blokove? Imate li specifične alate za testiranje? ________________________________________ Neka vas ovo vodi u pravom smjeru. Slobodno mi se javite s detaljima koji su vam potrebni, i mogu vam pomoći s konkretnim primjerima i kodom! This is the text you gave me yesterday as guides for a new employe who should do the new block task what code or information do you need to finalise this into a multi page document so even someone who doesn't know how to code can understand how blocks are made I will explain the process of making a block First you start on your custom page and make the php file mine is template-landing.php and it contains all the blocks that i am making (the static frontend part first) here is the file

Et voluptate repellat cum aspernatur consequatur

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec purus augue, varius et ante a, varius feugiat turpis. Sed dictum orci nec libero placerat, ullamcorper aliquet orci condimentum.

Et voluptate repellat cum aspernatur consequatur

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec purus augue, varius et ante a, varius feugiat turpis. Sed dictum orci nec libero placerat, ullamcorper aliquet orci condimentum.

Suspendisse eget velit venenatis, porta magna id, lobortis neque

Duis sollicitudin, quam in vulputate scelerisque, diam ipsum varius elit, pharetra laoreet ligula justo eget diam

Pogledajte ponudu
hero image
and then you make an scss file in this directory themes/web-4d-theme/web-4d-theme/resources/sass/w4d/components and name it "_filename.scss" , and you have to forward it in index.scss and in the _filename.scss you need to do use "../abstract" as * like this ".account { display: grid; grid-template-columns: 1fr 348px; gap: 5.625rem; margin-bottom: 5rem; &-sidebar { &__user { padding: 1.25rem 1.625rem; color: var(--white); background-color: var(--base-color-80); border-radius: 0.25rem; margin-bottom: 1.5rem; &-email { font-size: 1.25rem; font-weight: 700; display: block; line-height: 2; } p { color: var(--white); margin-bottom: 0 !important; } } &__nav { margin-bottom: 0.75rem; &-link { padding: 0.75rem 1.5rem; display: block; border: 1px solid var(--base-color-40); background-color: var(--white); transition: 200ms ease-out; &--active { color: var(--accent-color); font-weight: 600; } &:hover { background-color: var(--light-color-10); } &:not(:first-child) { border-top: unset; } &:first-child { border-top-left-radius: 0.25rem; border-top-right-radius: 0.25rem; } &:last-child { border-bottom-left-radius: 0.25rem; border-bottom-right-radius: 0.25rem; } } } &__logout { padding: 0.75rem 1.5rem; color: var(--base-color-60); background-color: var(--light-color-10); display: block; border: 1px solid var(--base-color-40); border-radius: 0.25rem; } } }" Then you are done with frontend and you need to parametrize the block step 1 /var/www/html/wp-content/plugins/4D-WPPlugin/includes/constants/w4d-blocks.php add block here and add images to plugins/4D-WPPlugin/assets/img/block-screenshots and plugins/4D-WPPlugin/assets/img/block-screenshots then make file in plugins/4D-WPPlugin/includes/admin/blocks/views Like this "

Postavljanje istaknutih kartica

Dodaj karticu
#
Naslov
Opis
Poveznica
Ikonica
Edit
Del
'; foreach ($settings as $id => $row) { $title = htmlspecialchars($row['title'] ?? '-'); $description = htmlspecialchars($row['description'] ?? '-'); $image_src = wp_upload_dir()['baseurl'] . ($row['icon'] ?? ''); $link = htmlspecialchars($row['link'] ?? '-'); echo '
'.$id.'
'.$title.'
'.$description.'
'.$link.'
Image Description
'; } echo '
'; } function display_block_general_settings($block): void { $block_id = intval($_GET['block_id'] ?? ''); $block_type = $block['type'] ?? ''; $overline_text = $block['overline_text'] ?? ''; $block_title = $block['title'] ?? ''; $button_text = $block['button_text'] ?? ''; $button_link = $block['button_link'] ?? ''; echo '
'; W4D_LandingPageHelper::get_global_block_settings_html($block); echo '

Postavke bloka

Nadnaslov

Mali tekst iznad naslova koji obično sadrži do 4 riječi

Naslov

Isti se prikazuje na vrhu stranice i tablici blokova

Tekst gumba

Isti se prikazuje na vrhu stranice i tablici blokova

Poveznica

Isti se prikazuje na vrhu stranice i tablici blokova

'; W4D_LandingPageHelper::display_block_action_buttons($block_type, $block_id); echo '
'; }" and then in forms if necessary plugins/4D-WPPlugin/includes/admin/blocks/forms 'Ikonica', ]; echo '
'; W4D_LandingPageHelper::display_block_settings_header($title, $setting_id, $block_type, $action); echo '
'; display_block_settings($settings, $action, $block_type); echo '
'; if ($action === "edit" && !empty($settings)) { W4D_LandingPageHelper::display_image_previews($settings, $image_types); } echo '
'; function display_block_settings($settings, $action, $block_type): void { $title = ''; $description = ''; $link = ''; if ($action === "edit") { $title = htmlspecialchars($settings['title'] ?? ''); $description = htmlspecialchars($settings['description'] ?? ''); $link = htmlspecialchars($settings['link'] ?? ''); } echo '

Postavke kartice

Naslov

Kratki naslov koji se prikazuje ispod ikonice

Opis

Tekst koji se pojavljuje odmah ispod naslova

Link

Poveznica na koju vodi kartica

Istaknuta slika

Rezolucija

'; W4D_LandingPageHelper::display_file_input('icon'); echo '
'; } and then display file plugins/4D-WPPlugin/includes/views/blocks 4){ $highlight_cards = array_slice($highlight_cards, 0, 4); } $overline_text = $block['overline_text'] ?? ''; $block_title = $block['title'] ?? ''; $button_text = $block['button_text'] ?? ''; $button_link = $block['button_link'] ?? ''; echo '
'; if ($overline_text) { echo '

'. esc_html($overline_text) .'

'; } echo '

'. esc_html($block_title) .'

'; if ($button_text) { echo '' . esc_html($button_text) .''; } echo '
'; foreach ($highlight_cards as $card ) { $title = $card['title'] ?? ''; $desc = $card['description'] ?? ''; $icon_src = wp_upload_dir()['baseurl'] . ($card['icon'] ?? ''); $button_link = $card['link']; echo '
cart-icon

'. esc_html($title) .'

' . esc_html($desc) . '

'; } echo '
'; } and add it to composer.json and run "composer dumpautoload"