Talán így egyszerűbb.
Van a termék (product) és van a kirakat elem (product_display).
A terméknek van cikkszáma, ára, neve, képe. Lehet még egyéb EGYEDI tulajdonsága is pl. szín, méret <- ezek taxonómiából vannak képezve és argumentumnak vannak beállítva, raktárkészlete, stb.
A kirakat elem ami terméket illetve termékeket tartalmaz. Bármilyen termékeket összefoghatsz a kirakat elemben, de általában olyanokat fogsz össze amik alapvetően egyformák. Elképzelhető sőt elég gyakori, hogy egy kirakati elemhez csak egy termék tartozik. A kirakat a terméken kívül még olyan információkat hordoz ami MINDEN a kirakat elemben összefogott termékre jellemző. Ilyenek a termék neve, leírása, termékcsoportja. Ezeken kívül még lehetnek egyéb jellemzői pl. anyaga.
Tehát van egy pólóboltod ahol a weboldalon (kirakat) meg akarod mutatni a különböző pólókat úgy, hogy mindegyikből csak egy jelenjen meg, de a vevő tudja a kirakat elemnél kiválasztani a színt és méretet.
Ebben az esetben ilyen termékeket hozol létre:
Cikkszám Név Ár Szín Méret 100 Rövid ujjú póló 900.- fehér XS 101 Rövid ujjú póló 900.- fehér S 102 Rövid ujjú póló 900.- fehér M . . 110 Rövid ujjú póló 900.- kék XS 111 Rövid ujjú póló 900.- kék S 112 Rövid ujjú póló 900.- kék M . .
Ehhez egy darab kirakat elemet hozol létre ami ezt tartalmazza:
Termék név: Rövid ujjú póló
Termék: 100, 101, 102, ..., 110, 111, 112, ...
Leírása: Rövid vagy hosszú leírás a termékről
Termékcsoport: Póló, Rövid ujjú póló
Anyaga: 100% pamut
Amikor ez a kirakat elem megjelenik akkor a kosár gomb körül ott a szín és méret választó, ahol be lehet állítani a megfeleő TERMÉKET a rendeléshez.
Üdv!
Dudás József
- A hozzászóláshoz regisztráció és bejelentkezés szükséges
oda, ahol szeretnéd hozzáadni a teget
te tudod, hol szeretnéd ezt a teget használni, előfordulhat például, hogy csak bizonyos tartalom típusok esetén akarod hozzáadni, akkor talán a template_preprocess_node() lesz a megfelelő 'hely' a hozzáadásra.
ha minden oldalon szeretnéd használni egy bizonyos sminkben, akkor talán a template_preprocess_html() is jó 'hely' lehet, ehhez ilyesmit kell írnod a sminked template.php filejába:
function SMINKEDNEVE_preprocess_html(&$vars) { // Peldaul hozzaadunk most egy viewport taget, osszeallitjuk a tombot $viewport = array( '#tag' => 'meta', '#attributes' => array( 'name' => 'viewport', 'content' => 'width=device-width, initial-scale=1, maximum-scale=1', ), ); // Hozzaadjuk az elobb osszerakott tombot. A masodik parameter a 'viewport' egy tetszolegesen valasztott egyedi azonositoja lesz ennek a tegnek, ez azert kell, hogy ha valaki kesobb alterezni akarja hook_html_head_alter() -el, ezzel tudja majd azonositani. drupal_add_html_head($viewport, 'viewport'); }
fenti példa egy 'viewport' taget ad hozzá.
-
clear: both;
- A hozzászóláshoz regisztráció és bejelentkezés szükséges
argumentumos nézet
Készítesz egy nézetet, ami létrehoz egy blokkot, ami termékeket listáz. Az argumentumnál pedig beállítod a termékkód mezőt, aztán Provide default argument > PHP kód, és azzal átadod a nézetnek a termékkódot – amit, ha jól látom, akár URL-ből ki tudsz halászni, ott van minden termék URL végén.
<?php $product_id = explode('/', $_GET['q']); $product_id = $product_id[6]; $product_id = explode('-', $product_id); array_pop($product_id); return $product_id = implode('-', $product_id); ?>
Vagy valami hasonló. Még igazgatni kell, hogy ne dobáljon warningokat, ha nem a várt URL-t kapja, továbbá validálni (vagy a $product_id elemeit (int)-tel semlegesíteni).
- A hozzászóláshoz regisztráció és bejelentkezés szükséges
ugyanarról beszélünk?
function modr8_db_rewrite_sql($query, $primary_table, $primary_field, $args) { switch ($primary_field) { case 'nid': // this query deals with node objects $access = (user_access('administer nodes') || user_access('moderate content')); if (!$access) { global $user; $return = array(); if ($primary_table != 'n') { $return['join'] = "LEFT JOIN {node} n ON $primary_table.nid = n.nid"; } if ($user->uid == 0) { $return['where'] = "(n.moderate != 1)"; } else { $return['where'] = "(n.moderate != 1 OR n.uid = ". (int)$user->uid .")"; } return $return; } break; } }
Ez itt a kódunk. Namost ha a tábla nem n, akkor JOIN-olja a node táblát, ha viszont n, akkor felteszi, hogy node, és teszi bele a feltételt. Tehát a hiba máshol van :) Mert egy lekérdezésben n van megadva aliaszként, pedig nem a node táblára vonatkozik a lekérdezés.
Rákerestem ilyen lekérdezésekre a kiegészítő modulokban, és a Drupalban. A comment modulban találtam rá. Drupal 5.3-ban ez van:
SELECT nc.nid FROM {node_comment_statistics} nc WHERE nc.comment_count > 0 ORDER BY nc.last_comment_timestamp DESC
A fent beküldött lekérdezés ennek a felturbózott változata modr8 és más jogosultság kezelő kiegészítőkkel, amiket a többi modul ráaggat.
Ez a CVS logok alapján a Drupal 5.1 és 5.2 között lett kijavítva, hogy az nc tábla aliaszt használja, előtte az n aliaszt használta hibásan. Magyarul kedves GaBy: tessék frissíteni a Drupal újabb kiadására, és a probléma megoldódik. (Ez még sok más potenciális hibát is megold és pár biztonsági rés befoltozását is jelenti).
- A hozzászóláshoz regisztráció és bejelentkezés szükséges







LQrtam
Nem ez való neki.. Sajna eddig jobbat nem találtam, mint
hook_form_FORM_ID_alter vudu. Itt kell varázsolni:
Elvileg a többit megoldja a form_api.
Ha meg ilyen date, vagy hasonló furfangos elementet akarsz megfogni, akkor sajna szét kell nézni a modulban, ami azt a form elementet előállítja, de 90%, az adott form-mezőnél meg lehet fogni a #required propertyt.
----
Rájöttem, miért kérdezek olyan ritkán a drupal.hu-n. Amíg szedem össze az infokat a kérdéshez, mindig rájövök a megoldásra.