Hi!
Teszt jelleggel írtam egy modult, ami egy sql eredményét írná ki theme table formában.
Csak egy "Array" jelenik meg a blokkban. Mit néztem el? :(
<?php /* * * Block hook * */ function myblock_block($op = 'list', $delta = 0, $edit = array()){ switch($op){ case 'list': $blocks[0]['info'] = "My Module Block"; return $blocks; case 'view': $blocks['subject'] = "My Module"; // Block content!!!!!!!!!! $blocks['content'] = blockview(); return $blocks; } } /* * Blocklist ************************************************************************ */ function blockview() { $header = array( array('data' => t('ID'), 'field' => 'pid', 'sort' => 'asc'), array('data' => t('NAM'), 'field' => 'nam'), ); $form['header'] = array( '#type' => 'value', '#value' => $header, ); $sql = 'SELECT pid, nam FROM {myblock} '; $sql .= tablesort_sql($header); $result = pager_query($sql, 50, 0); $form['myblock']['#tree'] = TRUE; while ($myblock = db_fetch_object($result)) { $form['myblock'][$myblock->pid] = myblock_row($myblock); } $form['pager'] = array('#value' => theme('pager', NULL, 50, 0)); $form['#theme'] = 'myblock'; return $form; } /* * Row ************************************************************************ */ function myblock_row($myblock) { $form['pid'] = array( '#type' => 'markup', '#value' => $myblock->pid, ); $form['nam'] = array( '#type' => 'markup', '#value' => $myblock->nam, ); return $form; } /* * Theme ************************************************************************ */ function theme_myblock($form) { $header = $form['header']['#value']; $rows = array(); foreach (element_children($form['myblock']) as $key) { // Build the table row. $rows[] = array( array('data' => drupal_render($form['myblock'][$key]['pid'])), array('data' => drupal_render($form['myblock'][$key]['nam'])), ); } $output = theme('table', $header, $rows); if ($form['pager']['#value']) { $output .= drupal_render($form['pager']); } $output .= drupal_render($form); return $output; } ?>
Drupal verzió:
Fórum:
blokkban
Vagy blokkban a theme table nem használható?
Vagy blokkban a theme table
Vagy blokkban a theme table nem használható?
Már miért is ne?
Én ugyan sosem csináltam még lekérdezősdi rendezős táblázatosdit, de elképzelésem sincs, hogy esetedben hogy sikerült belekeverni egy mezei táblázat létrehozásába a fapit, hiszen a nevében is benne van hogy _FORM_ és a változóidban is ott a $form, meg a végén a drupal_render_form.
Szóval a Drupal logikájából kiindulva nehezen tudom elképzelni, hogy drupal_render_form kelljen egy egyszerű táblázathoz, úgyhogy induljunk ki onnan, hogy vagy írd le azt, hogy milyen formot akarsz létrehozni, ha tényleg azt akarsz, vagy dobjál ki minden fapi cuccot a kódból, és utána térjünk rá vissza.
----
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.
itt
Alapesetben így generálunk egy táblázatot, ahogy anno segítettetek itt a fórumon (itt).
Csak próbáltam ehhez igazodni. Ha ez nem a legszebb megoldás, akkor a segítségeteket kérem. A lényeg, hogy blokkban szeretném egy sql eredményét megjeleníteni táblázatban.
Most őszintén! Te érted azt a
Most őszintén! Te érted azt a kódot, vagy agyatlan copypaste-ről van? (Amivel egyébként semmi gond nincs, amíg nem kezdi el farigcsálni az ember, amit nem ért.)
Modult írni anélkül, hogy _kivétel nélkül_ minden egyes soráról nem tudod, hogy miről szól kb olyan, mint bombát gyártani akciófilm-élmények alapján. Lehet, hogy összejön, lehet, hogy kicsit pukkan is, de valaki biztosan sírni fog, legkésőbb akkor, ha más kézbeveszi a kódodat.
A hivatkozott topicban van minden, meg annak a hivatkozásában van minden, ami ebben az esetben nem kell, sőt, lehet, hogy Pasqualle sem így csinálná ezt, mint három évvel ezelőtt.
Ha blokkban kell egyszerű táblázat, minden feldolgozás nélkül, nem kell semmi form varázslás (form= felhasználói bevitel) Még sosem csináltam ilyet, de a buksis emlékeim és az api dokumentáció alapján meglepődnék, ha ennél több kellene egy táblázathoz:
----
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.
Köszönöm a segítséget,
Köszönöm a segítséget, de:
1./ Magam írtam a kódot és persze messze nem tökéletes a tudásom. Ezért is kértem segítséget. A minta csak egy kiindulás volt. Az volt a kérdés (egyik része), hogy ez blokkban is használható-e. Ha nem írtam volna mintát, gondolom abba kötöttél volna bele, hogy miért nincs semmi kód részemről, csak a kész megoldást várom.
2./ Én sem fikázok senkit, ha valakinek nem tud valamit és segítséget kér. Nem kell arcoskodni...
3./ Anno a Drupal doksiból raktuk össze a kódot (tehát minta alapján). Ha akkor jó volt a Drupal mintája, gondolom most is jó. A fenti kód csak az én egyszerű próbálkozásom volt a Drupal minta alapján.
Helyesen
A helyes, működő kód:
print helyett return
ugye igy definialod a blokkodat:
úgyhogy a tartalmat előállító függvénynek nem kiírni kell a tartalmat, hanem azzal kell neki visszatérni.
így:
mondjuk.
-
clear: both;