szantog képe

Nem ez való neki.. Sajna eddig jobbat nem találtam, mint
hook_form_FORM_ID_alter vudu. Itt kell varázsolni:

function MODULOM_form_[node_type]_node_form_alter(&$form, &form_state) {
  $disabled_rids = array(3, 4, 5); //role idket kell előszedni
  global $user;
  if (in_array($disabled_rids, $user->roles)) {
    $form['field_MEZODNEVE']['#required'] = TRUE;
  }
}

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.

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

don brada képe

Ez van a sminkeben a topMenure...:

  1. <div id="topMenu">
  2.  
  3. <?php if (isset($primary_links)) : ?>
  4. <?php print theme('links', $primary_links, array('class' => 'links primary-links')) ?>
  5. <?php endif; ?>
  6.  
  7. </div>

Az őrületbe kerget ez a smink. Nem támogatja a legördülőt, és semmilyen ismert modul menüt (simple, superfish) nem jelenít meg ahol szeretném.
Rettenetesen örülnék, ha vki segítene, mert teljesen feladtam, hogy lesz dropdown-om.

0
0
dj képe

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.

1
0

Üdv!
Dudás József

Szotyi képe

Egyenlőre így kategórizáltam a termékeket:

Létrehoztam Commerce Product tartalomtípusokat:

  • Háztartási nagygépek
  • Háztartási kisgépek
  • Világítástechnika

Csináltam egy darab "Termékmegjelenítés" sima tartalomtípust.
- Címmel (ez ugye alapértelmezett)
- Body-val (ez fogja tartalmazni a termékek leírását)
- Termékhivatkozással, ahol mindhárom Commerce Product-ot pepipáltam.

Csináltam "Háztartási nagygép", "Háztartási kisgép" és "Világítástechnika" szótárakat, bennük elhelyeztem a kategóriákat. (Pl: Beépíthető hűtőgép, Beépíthető kávéautomata stb), Illetve egy darab "Gyártó" szótárat is.

Ezeket hozzáadtam a Commerce Product tartalomtípusokhoz.
-----

1. Feladat: Termék neve és termékmegjelenítés neve automatikus generálódjon!
Megoldás:
Szükséges modulok:
auto_nodetitle: Termékmegjelenítés tartalomtípusnak lehet állítani a Title-jét
Automatic Entity Label: mezőknél lehet mahinálni.
/ ez nem biztos, hogy kell: title modul: Commerce terméknek is lehet állítani a Cím-ét a mezők kezelésénél. /

Termék neve automatikusan generálódjon: Auto Label fül -
Automatically generate the label and hide the label field - Pattern for the title: [commerce-product:field-gyarto] [commerce-product:sku] [commerce-product:field-kategoria]

Termékmegjelenítés neve automatikusan generálódjon:
Felépítés - Tartalomtípusok - Termékmegjelenítés - Automatic title generation: Automatically generate the title and hide the title field,
Pattern for the title: [node:field_termek]
[ Tartalomtípus mentése ]

2. Vigyük a termékekkategóriákat oldalblokkba!

Szükséges modulok: taxonomy menu, menu_block, dhtml menu
Bekapcsolás:
drush en taxonomy_menu -y,
drush en menu_block -y,
drush en dhtml_menu -y

Hozzunk létre egy Háztartási nagygépek menüpontot!
Felépítés - Menük - Menü hozzáadása
Cím: Háztartási nagygépek
Menünév: haztartasi-nagygepek
[ Mentés ]
Felépítés Taxonómia - Háztartási nagygépek kategóriája
Menu location: Háztartási nagygépek
[ Mentés ]

Rakjuk ki oldalsávba:
Felépítés - Blokkok - Add menu block
Menü: Háztartási nagygépek
Régió beállításai - iShopping (alapértelmezett smink): Első oldalsáv
[ Mentés ]

Állítsuk be a blokkot:
Beállítások - Felhasználói felület - DHTML menu
Clone Menu link - [ Beállítások mentése ]

---------------------------

Szépen ki is listázza a kategóriákat, csak az a gond, hogy ha rákattintok egyre (pl Hűtőgép) akkor nem jelenít meg semmit sem a nézet, pedig amúgy vannak feltöltve termékek!

Kérdés: hogyan kéne beállítani ezt taxonomia nézetet hogy mutasson is termékeket?

0
0

Péter

makgab képe

Talán nem a drupal_get_form() fv-el kellene generálnom az oldalt?
https://www.drupal.org/node/930760

<?php
function mymodule_menu() {
...
  $items['mypage-html'] = array(
    'title' => 'My page with HTML-style function',
    'page callback' => 'mymodule_html_page',
    'access callback' => TRUE,
  );
...
  return $items;
}
 
function mymodule_html_page() {
  $output = '<p>A paragraph...</p>';
  $output .= '<ul><li>first item</li><li>second item</li><li>third item</li></ul>';
  return $output;
}
 
?>
0
0
Dean képe

Sajnos ki kellett kapcsolni azt a funkciót, hogy ha van address, akkor onnan vegye a user nevet (és ezzel a megszólítást).
Szerettem volna úgy megoldani, hogy csak az autocomplete mezők "gyógyuljanak meg". Sajnos erre nem találtam megoldást és ti sem írtatok tippeket.
Azért leírom ide (ha valakinek ez kell), hogy hogyan kell kikapcsolni (globálisan mindenhol) ezt a funkciót:

  1. <?php
  2. /**
  3.  * Implements hook_username_alter().
  4.  */
  5. function CUSTOMMODULE_username_alter(&$name, $account) {
  6. $name = $account->name;
  7. }
  8. ?>
0
0
aboros képe

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á.
1
0

-
clear: both;

tiburi képe

Na közben összehoztam és bevallom kicsit komplikált, ahhoz képest, mint hogy ez tényleg nem egy nagy feltétel szerintem:

Én így oldottam meg:
Kapcsolatok
Taxonómiakifejezés: Felhasználó EgyediCsoportmezőm használatával
(field_egyedicsoportmezom) Felhasználó: EgyediCsoportmezőm
(field_egyedicsoportmezom) Felhasználó: Tartalom szerzője

Szövegkörnyezeti szűrők
(field_egyedicsoportmezom) Felhasználó: EgyediCsoportmezőm

Alapértelmezés szerinti érték biztosítása --> PHP Kód

  1. global $user;
  2. $user_uid = user_load($user->uid);
  3. $tartalmaim = $user_uid->field_egyedicsoportmezom['und']['0']['tid'];
  4. return $tartalmaim;

A mezőknél csak a tartalomcímek vannak megadva, a szűrési feltételeknél

  • Taxonómiaszótár: Programok által használt név (= EgyediCsoportmezőm vocabulary)
  • (tartalmak) Tartalom: Típus (= Az a tartalomtípus amit látni akarok), de ez opciós...

Na röviden ennyi, hálás köszönet a hozzászólásodért, sokat segített!

2
0
Illyés Edit képe

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

0
0
Hojtsy Gábor képe

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

0
0