adatbázisban tárolt tartalom nem egységes megjelenítése
Sziasztok!
Hogyan szokás azt megoldani hogy egy webáruház tartalmát adatbázisban tároljuk de van több mint 10 féle html oldal struktúra, amiben meg kell jeleníteni a tartalmat. Mindez két nyelvű oldalon.
A tartalmat HTML kódostul tárolni az adatbázisban, vagy minden egyes html tag-ban megjelenítendő tartalmat
külön sorban tárolni, és php-ban összerakni az oldalt?
Az utóbbival próbálkoztam egy ilyen táblában tárolva a tartalmat:
tartalom_id int
html_tag set('h1', 'h2', 'h3', 'h4', 'h5', 'p', 'ul', 'img')
tartalom_hu text
tartalom_en text
sorszam int
css_class varchar(20)
css_id varchar(20)
termek_id int
a sorszam mező szerint rendezem sorba a tag-okat az oldalon és a termek_id a külső kulcs ami az egyes termékhez kapcsolja a tartalmakat
Van esetleg más jobb megoldás is?
■ Hogyan szokás azt megoldani hogy egy webáruház tartalmát adatbázisban tároljuk de van több mint 10 féle html oldal struktúra, amiben meg kell jeleníteni a tartalmat. Mindez két nyelvű oldalon.
A tartalmat HTML kódostul tárolni az adatbázisban, vagy minden egyes html tag-ban megjelenítendő tartalmat
külön sorban tárolni, és php-ban összerakni az oldalt?
Az utóbbival próbálkoztam egy ilyen táblában tárolva a tartalmat:
tartalom_id int
html_tag set('h1', 'h2', 'h3', 'h4', 'h5', 'p', 'ul', 'img')
tartalom_hu text
tartalom_en text
sorszam int
css_class varchar(20)
css_id varchar(20)
termek_id int
a sorszam mező szerint rendezem sorba a tag-okat az oldalon és a termek_id a külső kulcs ami az egyes termékhez kapcsolja a tartalmakat
Van esetleg más jobb megoldás is?
adat
html_tag
mező nem tudom mit keres ott, vagy hogy hogyan is van elképzelve ez a tartalom. Mint már írtam, az adatoknak semmilyen információt nem kell hordozni arról, hogy hogyan fog az megjelenni, az a sablonozó rendszer része.mivel sokféle oldal struktúra
Kezdő vagyok ebben azért kérdem.
most egy darab termek.php oldal van és a html_tag mező tartalmától függően csinál a php
egy megfelelő html tag-ot benne a tartalom_hu mező tartalmával:
Árúval verébre
Az adatbázisban tényleg csak az információ legyen tárolva, pl.: termek_id, termek_nev, termek_leiras_hu, termek_leiras_en
Ha van egy termékeket listázó oldalad (temeklista.php), akkor ott lekérdezed a termékeket egy tömbbe, majd mondjuk egy foreach ciklussal végigmész ezen a tömbön, amiben echo-val kiíratod a nevüket, tetszőleges HTML körítést használva.
Ezeken a neveken lehet egy link, ami mondjuk a termek.php?termek=termek_id oldalra mutat. (Értelemszerűen a termek_id lesz a termékhez tartozó azonosító)
A termek.php-ban pedig csak a kívánt azonosítójú terméket kérdezed le, ugyan abból a táblából természetesen. Majd ennek jellemzőit (Név, Leírás) szintén tetszőleges HTML környezetbe kiíratod.
Remélem ebből az egyszerű példából érted, hogy is kellene ezt megtervezni. Az egyes fájlok tulajdonképpen sablonok, amelyekben csak a nyers adatot kell lekérdezned és azokat ott helyben ellátni HTML tagekkel.
Tipp: Kezdők még bele szoktak esni abba a hibába, hogy hajlamosak minden statikus HTML kódrészt PHP-val kiíratni. Tehát, ha például a termékeket egy táblázatba jeleníted meg, akkor a táblázat fejlécét, vagy magának az oldalnak a fej, illetve láblécét, nem dinamikusan előállított tartalmait nem kell PHP-val echo-ztatni, mert csak feleslegesen fut át az értelmezőn.
Ugyan ez igaz a te esetedben is, az adatbázisban tárolt HTML-el. Feleslegesen foglalja a helyet az adatbázisban, feleslegesen kapja meg a PHP értelmező, csak lassít az oldal működésén. Legyen statikus ami csak lehet.
kicsit túlbonyolítottadd
Tippem szerint a többnyelvűség zavart meg egy kicsit.
Egyszerű példa: adott termékről tárolni kell nevét, leírását, árát, képeket
id
price
webshop_product_i18n tábla (product_id és lang legyen közössen a primary key, így egy termékhez egy nyelven csak egy bejegyzés kerülhet be)
product_id
lang
description
title
webshop_product_images tábla
id
product_id
image
ha a magyar nyelvű termékre van szükséged:
plusz rácsatolod az images táblát, most nem írom le.
Olyat is tehetsz, hogy ha pl angol nyelven (lang='en'), nincs meg az adott termék (mert nincs hozzá bejegyzés az i18n táblában), akkor csinálsz egy lang='hu' lekérdezést és azt jelentíted meg, íj módon fallback, ha az admin csak egy nyelvet töltött ki akkor is megjelenjen a termék az angol oldalon is.
A description mezőben nyugodtan tárolhatsz html tartalmat (nem a teljes oldalét, csak a formázott leírást), sőt javaslom tinymce vagy ckeditor használatát.
A lényeg, hogy logikai részekre bontsd szét,pl.: a leírást nem kell soha tovább bontanod, az egy egységes. Ha kell más adat, pl termék súlya, termék mérete, színe stb. ezeknek külön külön egy egy mező kell(és ezeket fordítani sem kell, mehetnek webshop_product táblába)
Köszönöm a segítséget.
Lehet hogy nem jól írtam le a problémát.
Tehát lesz kb 50 féle termék de a termékeket megjelenítő oldalak szinte mindegyik más, mert minden termékhez más más információ tartozik, amik terjedelemben is különböznek és megjelenésben is és a felsorolások táblázatok bekezdések más más sorrendben jönnek egymás után. Tehát lesz egy termékoldal ami így néz ki:
cím
alcím
felsorolás
bekezdés
felsorolás
aztán egy másik:
cím
egy bekezés
második bekezdés
harmadik bekezdés
aztán egy harmadikféle:
cím
egy bekezdés
táblázat1
táblázat2
Erre értettem hogy sokféle oldalstruktúra lesz.
Ezt hogy lehetne megoldani úgy hogy egy táblában tárolom az információt a termékekről és egy (vagy többféle?) sablonnal
megjelenítem azokat?
Kubi javaslata egyszerűbbé teszi a dolgot. Egy ilyen CKeditor-os megoldás (és html az adatbázisban) azt hiszem segíteni fog.
Hát, ha tényleg
De szerintem próbáld meg a leírásokat "szabványosítani", én még nem láttam olyan webshopot, ahol ilyen megoldás lett volna.
És ez nem feltétlenül jelenti azt, hogy a tiéd "nyerő" lesz az újdonság miatt. Arra is gondolj, hogy:
- Mi lesz, ha a terméklista kibővül 50-ről mondjuk 500-ra?
- A Júzernek mennyire lesz csábító, hogy a különböző termékekről nagyon más formában kell olvasnia? (Szerintem ez inkább negatívum.)
- Ki és hogyan rögzíti a termékleírást? (Ugye aki nem ért HTML-ül, annak kezébe még wysiwyg eszközzel sem szívesen adunk tag-eket!)
- Hogyan oldod meg egy termékleírás módosítását?
Szóval javaslom, hogy bevált megvalósítások közül válassz.
Szerintem még így is lehet
Mondjuk egy mezőbe az kerül, hogy melyik sablon tartozik az adott termékhez, aztán hogy azt a sablont egy teljes fáj, vagy egy függvény, vagy csupán switch case elágazás generálja, az attól függ mennyire bonyolult a megjelenésbeli különbség.
Gondolom az oldal fő részei nem fognak változni: fejléc, lábléc, tartalmi sáv, oldalsáv... Ezek is lehetnek külön fájlokban, amit a fő program össze includeol a lekérdezett termék sablonnal egyetemben.
Egyébként tényleg nem szerencsés nagyon eltérő megjelenést használni egy webshopban, csak összezavarja a felhasználókat. Inkább a színekkel, design elemekkel érdemes az adott termék egyediségére felhívni a figyelmet. Mondjuk nő parfümök esetében egy lágy nőies színekkel felépített sablon, még szerszámok esetében erősebb, gépiesebb hatású sablon. De ettől függetlenül a betűméretek, az információk elhelyezése és maga a layout szerkezet ugyanaz maradjon.
Igazad van
Nem egy szokványos webáruház
hardver termékeket kell megjeleníteni (amit persze meg is lehet rendelni) emellett disztribútorai is lesznek egy szintén hardvertermékeket gyártó külföldi cégnek.
plusz szolgáltatások pl hardver szoftver tervezés megvalósítás. Nem lehet egységesíteni a tartalmat.
Tehát nem hajszárítókat meg csavarhúzókat akarnak árusítani hanem minden termék egyedi egészen különböző műszaki információkkal. Különböző terjedelemben is és mint írtam valahol van táblázat mert olyan info van amit abban lehet megjeleníteni valahol több felsorolás valahol kevesebb stb.
Akkor egyértelmű: A termék
Szóval az adott termék teljes infó oldalának formázása legyen SQL-ben eltárolva.
Felvitelhez, átszerkesztéshez pedig lehet használni valamilyen wisiwing szerkesztőt, mondjuk TinyMCE-t.
Másik ötlet
Szerintem ez vagy nem webshop, vagy (inkább) egy websop és egy dokumentációs (gyártói) oldal.
Igazad van, a saját gyártású termékhez szükséges a részletes leírás, ez minden termék esetében teljesen egyedi is, viszont a shopban, ahol csak összeklattyolgatja a Júzer a kosarába a termékeket, ott nem kell ezt teljes terjedelmében megjeleníteni. Csak annyit pl., hogy ez egy ilyen-olyan vrinyó, ködlámpával meg klímával, teljes "júzermanuálll" itt-és-itt. Ezzel a megoldással egységesíteni tudod a shopot, a visszatérő vásárló/megrendelő nem kell, hogy a nagy tartalmat nézegesse (-> gyorsan és könnyen vásárol és örül neki), aki pedig "most jött", az lát először egy áttekintést és azt a cuccost, ami jobban érdekli, megnézheti részletesebben. Ahogy ebből a rövid leírásodból megítélem: mindenkinek ez a jobb. (Persze a részletes leírásokat már másik táblába, akár HTML-ben.)
Szerk.: Hidraulikus cuccokat forgalmazó cégnél láttam is ilyet, shopban minimális infó + link a doksihoz. A doksik meg a gyártó(k)tól származó pdf-ek voltak.