Katalógus termékeknek

makgab képe

Hi!

1. Termékeknek kellene egy katalógus modul (egyedi mezőkkel).
A termékeknek meg kellene jelenniük a főoldalon (mint egy hír) és rákattintva megjelenik a részlet.
Erre új tartalomtípus kell?

2. Hogyan lehet többnyelvűsíteni ezeket a termékeket (pl. angol, magyar, német)?
Ha pl. a felhasználó német nyelvet választ (a nyelv blokkban), akkor a német termék és leírás jelenjen meg?

Egyelőre csak az elv érdekelne.

G.

Drupal verzió: 
Ave képe

Modulok: ubercart, uc_views

Itt olvashatsz a többnyelvű oldalakról
http://drupal.hu/kezikonyv/tippektrukkok/tobbnyelvu

0
0
makgab képe

nem egészen ubercart-szerű dolgora gondoltam, mert kellenek speciális mezők/adatok is amik nincsenek az übercart-ban.
Meg többnyelvű kellene. Azt nem tudja az ubercart, ha jól tudom. Tehát többnyelvű termék megjelenítés kellene.

G.

0
0
makgab képe

Olyan tartalomtípust szeretnék, aminek egyedi mezői vannak (pl. több csatolás is lehetséges hozzá).
Ehhez elég a CCK modul v. írni kell már egy egyedi modult?

G.

0
0
Nagy Gusztáv képe

Nem kell hozzá új modult írnod.

0
0

Nagy Gusztáv

makgab képe

Azt szeretném, hogy ezt az egyedi tartalmat, ha megtekinti a felhasználó, akkor egy gombbal email-t küldjön az admin-nak.
Tehát a CCK-val felépített tartalomtípusú tartalmat megnézi a felhasználó, látja a részletes adatokat. Alul pedig egy gombbal email-t küld a rendszer az admin-nak, ajánlatkérés ill. megrendelés.
Ehhez már kell egy kisebb modult irni?

Saját modul esetén:
Modulból hogyan lehet új tartalomtípust létrehozni egyedi mezőkkel? A "node_type" táblában kell létrehozni egy rekordot. Mi kell még?

Gábor

0
0
szantog képe

Én a Flag és a Rules modult használnám.
A Flagg-el tudsz csinálni mondjuk egy "Megrendelés" flag-et, és az adott tartalomtípus megtekintésekor lesz egy ugyanilyen linked. A Rules-szal pedig beállíthatod, hogyha valaki megrendelés flaggeli a node-ot, akkor küldjön emailt.
Az adminisztrátor számára meg létrehozhatsz egy külön nézetet, ahol listázhatod a megjelölt node-okat.

0
0

----
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.

makgab képe

Az ubercart kódját nézem, de nem egészen világos, hogyan kapcsolja össze a "Product" tartalomtípust (node_type) a terméktáblával (uc_products). Illetve hogyan viszi fel a "Product" tartalomtípust a modul installkor.

A hook_content_extra_fields() függvény lesz az? A két alapmezőn kívül itt lehet még definiálni mezőket?
Ezekbe az extra mezőkbe írt adatot hogy menti az "uc_produts" táblába.

Érdekel a dolog. :)

G.

0
0
makgab képe

Ez kell nekem egyedi tartalomtípushoz, ugye?
http://api.drupal.org/api/drupal/developer--examples--node_example.module

Ez létrehoz saját tartalomtípust?

G.

0
0
makgab képe

igen. :)

G.

0
0
aboros képe

de a példában említett feladathoz nem kell ez neked. miért is nem jó az a típus, amit cckval hoztál létre?

ha kell egyátalán saját modult írnod, akkor az csak annyit kéne csináljon, hogy a hook_links -ben a 'product' type esetén bevarr még két linket, amik pedig egy függvényt hívnak ami levelet küld.

de nagyon csodálkoznék, ha még nem létezne ilyen.

0
0

-
clear: both;

makgab képe

i18n modullal kellene még többnyelvűsíteni ezt.
erre lehet hogy új témát kellene indítanom.
láttam egy témát ezzel kapcsolatban, de nem volt egészen világos:
http://drupal.hu/kezikonyv/tippektrukkok/tobbnyelvu

G.

0
0
aboros képe

vagy pedig jó lesz az a típus amit cckval hoztál létre, semmi köze nincs.

én próbálnék még modult keresni, ha nem találok és már nagyon unom a keresgélést, akkor pedig a hook_link felé mennék.

0
0

-
clear: both;

makgab képe

A hook_link-re nem találok mintát. Mire is gondoltál?

<?php
function theme_node_example_order_info($node) {
	$output = '<div class="node_example_order_info">';
	$output .= t('The order is for %quantity %color items.', array('%quantity' => check_plain($node->quantity), '%color' => check_plain($node->color)));
	$output .= '</div>';
	return $output; 
}
 
?>

Ide kellene egy link v. gomb hogy email-t küldjön az admin-nak.

G.

0
0
aboros képe

http://api.drupal.org/api/function/hook_link/6
hogy egészen pontosan mit akarsz csinálni, azt te tudod. ezzel a hurokkal tudsz tartalom típusokhoz olyan linkeket hozzáadni, mint amilyen például az "új hozzászólás" vagy a flag modul linkjei vagy.. van még jópár modul, ami használja a linkeket.

nodeokhoz linkek fűzésének ez a módja. erre gondoltam csak. ennek egy href -re kell mutatnia. ami talán nem is baj, ha nem csak annyi van, hogy kattint az ember és bumm elküldi a levelet, hanem mondjuk egy űrlapra dob a link, ahol már előre ki van választva a termék aminél a linkre kattintottam és még megadhatok plusz adatokat, pl mi a telefonszámom, e-mailcímem, ilyesmi. de mondom, te tudod, hogy pontosan mit akarsz csinálni, én csak rámutattam egy hurokra, amerre érdemes lehet elindulni.

ezt a fenti sminkhurkot nem is tudom, hogy honnan szedted vagy mit kellene csinálnia vagy mivan most egyátalán?? :)

0
0

-
clear: both;

makgab képe

A példa a Drupal 'node_example'-ből való. Erre van szükségem.
Az idézett függvény pedig a tartalom megjelenítését végzi el. Szépen működik, ki is próbáltam. :)
Viszont nekem még csak egy link v. gomb kell (mindegy melyik), amivel a felhasználó automatikusan küld egy ajánlatkérés email-t a Drupal segítségével az admin-nak.
De lehet hogy egy kapcsolati űrlap jobb lenne(?), ami email-t küld az admin-nak.
Ebben tudsz segíteni, hogy lehet ezt megvalósítani az említett kódban?

G.

0
0
szantog képe

"Viszont nekem még csak egy link v. gomb kell (mindegy melyik), amivel a felhasználó automatikusan küld egy ajánlatkérés email-t a Drupal segítségével az admin-nak."
Vow!
Lásd párral fentebb..

0
0

----
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.

makgab képe

Csak nem találok egy konkrét mintát a hook_link()-re. :(
A Drupal api-ban elolvastam, meg nézem a drupal kódját is, de nem egészen világos.

G.

0
0
makgab képe

Próbaként:

<?php
 
/**
 * Implementation of hook_link().
 */
function node_example_link($type, $node = NULL, $teaser = FALSE) {
  $links = array();
 
  if ($type == 'node') {
    if ($teaser == 1 && $node->teaser && !empty($node->readmore)) {
      $links['node_read_more'] = array(
        'title' => t('Read more'),
        'href' => "node/$node->nid",
         'attributes' => array('title' => t('Read the rest of !title.', array('!title' => $node->title)))
      );
    }
  }
 
  return $links;
} 
 
?>

A node.module-ban találtam és átírtam node_example_link()-re.
Erre mit kellene ennek csinálnia. Meg kell jelennie egy linknek, nem? Csak hol? :)

G.

0
0
nevergone képe

Sajnos úgy tűnik, hogy jópár dologgal nem vagy tisztában a Drupal működését illetően. Valószínűsítem, hogy ilyen össze-vissza kikapkodott kóddarabokkal nem is jutsz előbbre, ha legalább vázlatokban nincs képed az egész működéséről.
Én azt javaslom, hogy először is gondold végig pontosan, hogy mit is szeretnél elérni, mert érzésem szerint már ez is hiányzik. Aztán ha van programozói affinitásod, akkor alaposan szedd ráncba a PHP tudásodat, majd (akár többször is) rágd át magad ezen.
Érzésem szerint megragadtál egy ponton, és a jelenlegi irányt erőltetve nem is fogsz továbbjutni onnan.

0
0
makgab képe

tudom mit akarok, csak nem találtam mintát.

De eddig jutottam, ami működik is:

<?php
 
function theme_node_example_order_info($node) {
	$output = '<div class="node_example_order_info">';
	$output .= t('The order is for %quantity %color items.', array('%quantity' => check_plain($node->quantity), '%color' => check_plain($node->color)));
	$output .= '</div>';
        $output .= l('Mailing order...','nodebase');
	return $output; 
}
 
 
function node_example_menu() {
   $items = array();
 
   $items['nodebase'] = array(
    'page callback' => 'mailing',
    'access callback' => 'user_access',
    'access arguments' => array('access content'),
    ); 
 
   return $items;
}
 
 
//** mailing
function mailing() {
  //drupal_mail('node_example', 'notice', $account->mail, user_preferred_language($account), $params);
  $output = "Mailing sending...";
  return $output;
}
 
 
/*
 * hook_mail
 */
function node_example_mail($key, &$message, $params) {
  $language = $message['language'];
  $variables = user_mail_tokens($params['account'], $language);
  switch($key) {
   case 'notice':
   $message['subject'] = t('Notification from !site', $variables, $language->language);
   $message['body'][] = t("Dear !username\n\nMessage...bla...bla...", $variables, $language->language);
   break;
   }
}
?>

A hook_link nem szükséges nekem.
Csak a drupal_mail-t kellene használnom. a $to paraméterben szeretném megadni, hogy az admin-nak menjen. Az $account váltózóban a 1-est (admin) kell megkeresni. Ott vannak a regisztrált userek?

G.

0
0
aboros képe

<?php
//** mailing
function mailing() {
  $account = user_load(1); //we load user1 to get his/her mail address
  drupal_mail('node_example', 'notice', $account->mail, user_preferred_language($account), $params);
  $output = "Mailing sending...";
  return $output;
}
?>

amúgy itt elég nagy a katyvasz csak szólok. a theme_node_example_order_form egy sminkhurok, így magába nem csinál semmit, meg is kell valahol hívnod azt. gyanítom az übercartból másoltad. és még azt se teljesen értem, hogy minek kell a hook_menu.

persze ha működik, működik, de tulajdonképpen ugyan azt csinálod, mint egy hook_linkes megoldás, csak kicsit nyakatekertebben. :)

0
0

-
clear: both;

makgab képe

Mármint a theme_node_example_order_info() fv-re gondoltál. :)
De működik! A drupal.org-ról néztem a mintát. Akkor hívódik meg, amikor a főoldalon a beküldött tartalomra rákattint a user (és ezzel látja a teljes tartalmat). Egy kicsit nézz utána a dolgoknak! /Bocs, ne vedd komolyan :)/
Csak van sikerélményem ismét... :)

Az übercart-nak semmi köze a kódhoz. Az uc el van felejtve. :)
A menü azért kell, hogy meg lehessen hívni a:

$output .= l('Mailing order...','nodebase');

Tudtommal hook_menu()-ből lehet ezt.

De ez hiányzott: $account = user_load(1);

Kösz!

G.

0
0
aboros képe

utánanézek.

0
0

-
clear: both;