übersicht wie in admin/content/node erstellen

am 31.07.2009 - 13:18 Uhr in
Hallo @all,
um mir eine übersicht wie in 'admin/content/node' zu proggen habe ich mir natürlich das modul mal näher angeschaut.
Dann meinen ersten test gemacht und man sehe da tabellen erstellen ist nicht schwierig.
$irgendwas="Hello World";
$sql = "SELECT * FROM expro_tour_operator";
$res = pager_query($sql);
while ($row = db_fetch_object($res)) {
// $rows[] = $row; ersetzt durch untere Zeile
$rows[] = array($row->nid, $row->vid, $row->operator, $irgendwas);
}
$form = theme('table', $header, $rows);
return $form;
}
Jetzt möchte ich aber genau die gleich übersicht wie in 'admin/content/node' proggen. Hat jemand einen vorschlag oder noch besser einen lösungsbeispiel.
hier mein erster ansatzt, es werden auch was ausgegeben, leider fhelt die tabelle. Zur Zeit ist mir eher wichtiger das ich verstehe wie formulare daten in tabellen ausgegeben werden daher sind die links nichtganz so elegant :)
Das untere bsp habe ich aus der admin/content/node und ein wenig modifisirt.
function expro_tour_operator_admin_overview($type = 'new', $arg) {
$form['header'] = array('#type' => 'value', '#value' => array(
theme('table_select_header_cell'),
array('data' => t('operator'), 'field' => 'operator'),
array('data' => t('operations'), 'field' => 'operations'),
array('data' => t('Operations'))
));
$sql = "SELECT * FROM expro_tour_operator";
$result = pager_query($sql);
$destination = drupal_get_destination();
while ($row = db_fetch_object($result)) {
$comments[$row->vid] = '';
$row->name = $row->uid ? $row->registered_name : $row->name;
$form['operator'][$row->vid] = array('#value' => l($row->operator, 'node/'. $row->nid, array('attributes' => array('title' => truncate_utf8($row->operator, 128)), 'fragment' => 'node'. $row->vid)));
$form['operations'][$row->vid] = array('#value' => l(t('edit'), 'row/edit/'. $row->cid, array('query' => $destination)));
}
$form['rows'] = array('#type' => 'checkboxes', '#options' => isset($rows) ? $rows: array());
$form['pager'] = array('#value' => theme('pager', NULL, 50, 0));
return $form;
}
Gruß caracush
- Anmelden oder Registrieren um Kommentare zu schreiben
so jetzt gehts auch wieder
am 01.08.2009 - 10:29 Uhr
so jetzt gehts auch wieder weiter zwishcenzeitlich habe ich eine tabelle note und werte aus der kinder tabelle.
function tester_liste() {
$header = array('Node ID', 'operator', 'Type', 'Terms', 'Created', 'Published', 'Sticky', 'Promoted');
$rows = array();
$noyes = array('No', 'Yes');
$results = db_query("SELECT * FROM {node} n, {expro_tour_operator} o where type = 'expro_tour_operator' and o.nid = n.nid ORDER BY promote DESC, sticky DESC, created DESC");
while ($node = db_fetch_object($results)) {
$termlist = taxonomy_node_get_terms($node->nid);
$terms = array();
foreach ($termlist as $key => $value) { $terms[] = $value->name; }
$rows[] = array($node->nid,
l($node->operator, 'node/'. $node->nid .'/edit'),
$node->type,
implode(' | ', $terms),
format_date($node->created),
$noyes[$node->status],
$noyes[$node->sticky],
$noyes[$node->promote],
);
}
return theme('table', $header, $rows);
}
Wie kann ich den jetzt das drupl_get_form bzw drupal_render($form) dazu bekommen das er mir checkboxen vor die einzelnen zeilen setzt und eine lösch funktion bauen.
Lg caracush
Verzeiung wenn ich hier so
am 01.08.2009 - 10:57 Uhr
Verzeihung wenn ich hier so vor mich hin progge. Das geht aber alles viel einfacher. Man nehme bzw. Kopiere die comment.admin.inc aus dem comments Modul ins eigene Modul und passe die Methoden an seine bedürfnisse an und schon hat man ein eigene listen ansicht in seinem eigenen Modul. Das geht sogar sehr gut.
Wenn das Modul Comments ein Node Modul ist, warum brauche ich dann in der comments tabelle eine UID da ich ja schon über die node->uid an die userdaten ran komme. Ich bin mir jetzt gerade nicht sicher aber ich da sind auch noch andere Felder wie ''Type', 'Terms', 'Created', 'Published', 'Sticky', 'Promoted'' die ich mir such der node holen kann also was soll diese doppelte verawalltung.
Lg catacush
Man kann sich auch einfach
am 01.08.2009 - 11:08 Uhr
Man kann sich auch einfach weniger Arbeit machen, und views bulk operations verwenden :)
Das Comments Modul hat aber seine ganz eigene API und Datenbanktabellen.
Ein Commentar ist so erstmal kein Node.
Schau dir einfach mal die Datenbanktabellen an, dass sollte dir das klar werden, wenn nicht weiter fragen.
--------------
Blog www.freeblogger.org: Deutscher IRC-Channel: irc.freenode.net #drupal.de ... Jabber-me: dwehner@im.calug.de
SirFiChi ist auch dein Halbgott.
Das ist eine ja wie bekant
am 01.08.2009 - 12:07 Uhr
Das ist eine ja wie bekant die Node tabelle
CREATE TABLE `node` (
`nid` int(10) unsigned NOT NULL auto_increment,
`vid` int(10) unsigned NOT NULL default '0',
`type` varchar(32) NOT NULL default '',
`language` varchar(12) NOT NULL default '',
`title` varchar(255) NOT NULL default '',
`uid` int(11) NOT NULL default '0',
`status` int(11) NOT NULL default '1',
`created` int(11) NOT NULL default '0',
`changed` int(11) NOT NULL default '0',
`comment` int(11) NOT NULL default '0',
`promote` int(11) NOT NULL default '0',
`moderate` int(11) NOT NULL default '0',
`sticky` int(11) NOT NULL default '0',
`tnid` int(10) unsigned NOT NULL default '0',
`translate` int(11) NOT NULL default '0',
PRIMARY KEY (`nid`),
UNIQUE KEY `vid` (`vid`),
KEY `node_changed` (`changed`),
KEY `node_created` (`created`),
KEY `node_moderate` (`moderate`),
KEY `node_promote_status` (`promote`,`status`),
KEY `node_status_type` (`status`,`type`,`nid`),
KEY `node_title_type` (`title`,`type`(4)),
KEY `node_type` (`type`(4)),
KEY `uid` (`uid`),
KEY `tnid` (`tnid`),
KEY `translate` (`translate`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
Und das hier dei comments Tabelle
CREATE TABLE `comments` (
`cid` int(11) NOT NULL auto_increment,
`pid` int(11) NOT NULL default '0',
`nid` int(11) NOT NULL default '0',
`uid` int(11) NOT NULL default '0',
`subject` varchar(64) NOT NULL default '',
`comment` longtext NOT NULL,
`hostname` varchar(128) NOT NULL default '',
`timestamp` int(11) NOT NULL default '0',
`status` tinyint(3) unsigned NOT NULL default '0',
`format` smallint(6) NOT NULL default '0',
`thread` varchar(255) NOT NULL,
`name` varchar(60) default NULL,
`mail` varchar(64) default NULL,
`homepage` varchar(255) default NULL,
PRIMARY KEY (`cid`),
KEY `pid` (`pid`),
KEY `nid` (`nid`),
KEY `status` (`status`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
Wozu brauche ich das:
`timestamp` int(11) NOT NULL default '0',
`uid` int(11) NOT NULL default '0',
Wenn ich das schon in der node habe.
`created` int(11) NOT NULL default '0',
`changed` int(11) NOT NULL default '0',
Ich denke da an den grundsatz das in einer relationellen DB keine daten doppelt vorkommen sollen. In der Node habe ich doch alle informationenen über dei inhalte die ich in comments anlege. Ich würde es anders machen. Daher frage ich mich welchen grund das hat.
Muss jetzt loss schreibe später weiter, möchte meine eigene app in Drupal schreiben.
und werde hier einfach mel mein Tabellenschema posten. Bis danni.
Lg caracush
teyhan schrieb Ich denke da
am 01.08.2009 - 12:27 Uhr
Ich denke da an den grundsatz das in einer relationellen DB keine daten doppelt vorkommen sollen. In der Node habe ich doch alle informationenen über dei inhalte die ich in comments anlege. Ich würde es anders machen. Daher frage ich mich welchen grund das hat.
Falsch gedacht (und es heißt "relational"). Extrem-Normalisierung ist keine Pflicht und oft auch im Sinne der Anwendungsperformance nicht sinnvoll.
Was diesen Fall betrifft: Ein Kommentar gehört dem, der ihn schreibt, nicht dem Autor des Nodes zu dem der Kommentar verfasst wurde. Geiches gilt fürs Erstellungs-/Änderungsdatum.
--
mortendk: everytime you use contemplate... Thor is striking down from above with his mighty hammer - crushing and killing a kitten!
webseiter.de
dereine schrieb Man kann
am 01.08.2009 - 12:28 Uhr
Man kann sich auch einfach weniger Arbeit machen, und views bulk operations verwenden :)
Japp, VBO machen das Leben eindeutig viehiiieeel leichter :)
--
mortendk: everytime you use contemplate... Thor is striking down from above with his mighty hammer - crushing and killing a kitten!
webseiter.de
Zitat: Falsch gedacht (und
am 01.08.2009 - 18:48 Uhr
Falsch gedacht (und es heißt "relational"). Extrem-Normalisierung ist keine Pflicht und oft auch im Sinne der Anwendungsperformance nicht sinnvoll.
Wie halt auch im realem Leben: Ausnahmen bestätigen die Regeln.
Was diesen Fall betrifft: Ein Kommentar gehört dem, der ihn schreibt, nicht dem Autor des Nodes zu dem der Kommentar verfasst wurde. Geiches gilt fürs Erstellungs-/Änderungsdatum.
Verzeihung Bitte, bin ein Blutiger Drupal anfänger, habe ganz verschlafen das ein Kommentar naturlich dem Autor gehört und nicht dem ersteller der node. Damit stellt sich aber grundsätzlich die frage was ist eine Node und Was ist ein Nodetyp und hat eine Node auch immer einen note typen. Es sind wohl tausende fragen die sich gerade bei mir ansammeln.
Die zwei wichtigsten fragen für mich währen da:
1. Wann sollte man eine node einsätzen
2. Wann macht absolut kein Sinn?
Ui da kommen die kinder muss jetzt an den grill, bis später
Nodes
am 01.08.2009 - 23:23 Uhr
Damit stellt sich aber grundsätzlich die frage was ist eine Node
Ein Node ist in Drupal ein Beitrag eines bestimmten Inhaltstypen.
Angenommen, Du hast die Inhaltstypen "Page" und "Story", dann kann ein Node entweder eine Instanz des Inhaltstypen "Page" oder auch "Story" sein.
und Was ist ein Nodetyp und hat eine Node auch immer einen note typen.
Jeder Node gehört zu einem bestimmten Inhaltstypen.
Ein Inhaltstyp ist (wenn man es denn so will) eine logische Gruppierung von Inhalten. Also beispielsweise "Artikel" oder "Event" oder "Bild".
1. Wann sollte man eine node einsätzen
Nodes setzt man ein, wenn man Inhalte auf seiner Seite veröffentlichen möchte. Ohne Nodes (also Inhalte) macht eine (mittels Drupal erstellte) Internetseite dementsprechend nicht wirklich Sinn.
2. Wann macht absolut kein Sinn?
Diese Frage?
hth,
Stefan
--
sei nett zu Deinem Themer