[gelöst] hook_theme() Funktion
am 24.11.2011 - 19:20 Uhr in
Hallo,
ich programmiere mit Drupal erst seit ein paar Tagen Module, und bin noch ein totaler Anfänger.
Ich möchte gerne eine art "Neuigkeiten" - Funktion programmieren wie es sie bei Facebook gibt. Also der Nutzer kann in ein Textfeld reinschreiben was er z.B. gerade macht und daunter sollten die Meldungen von ihm oder anderen Nutzern dann angezeigt werde.
Nun habe ich es soweit geschafft das ein Textfeld angezeigt wird und die dort reingeschrieben sachen in einer Datenbank gespeichert werden. Nur hab ich ein Problem mit der Ausgaben, untzwar sollten unter dem Textfeld dann die Meldungen aus der Datenbank ausgelesen werde. Dafür habe ich eigentlich gedacht ich mache das mit der hook_theme() Funktion, und lasse dann die Datensätze in einer tpl Datei auslesen und unterdem texfeld anzeigen. Allerdings wird mir nichts angezeigt. Ich bekomme es nichtmal hin einen einfachen Satz auszugeben. Hier mein Code:
<?php
function stream_menu() {
$items['stream'] = array(
'title' => 'Stream',
'page callback' => 'drupal_get_form',
'page arguments' => array('stream_form'),
'access arguments' => array('use_stream'),
);
return $items;
}
function stream_theme() {
return array(
'stream_form' => array(
'arguments' => array('form' => NULL),
'render element' => 'form',
'template' => 'stream-form',
),
'stream_view' => array(
'arguments' => array('var' => NULL),
'template' => 'stream-view',
),
);
}
function stream_form($form, &$form_state) {
$form['text'] = array(
'#type' => 'textfield',
'#title' => t('Please input something!'),
'#required' => TRUE,
);
$form['submit'] = array(
'#type' => 'submit',
'#value' => t('Go'),
);
return $form;
}
function stream_view($var){
}
function stream_form_submit($form, &$form_state) {
// hier wird die Eingabe in der Datenbank gespeichert
}
function template_preprocess_stream_form(&$variables) {
$variables['text_form_content'] = array();
$text_form_hidden = array();
foreach (element_children($variables['form']) as $key) {
$type = $variables['form'][$key]['#type'];
if ($type == 'hidden' || $type == 'token') {
$text_form_hidden[] = drupal_render($variables['form'][$key]);
}
else {
$variables['text_form_content'][$key] = drupal_render($variables['form'][$key]);
}
}
$variables['text_form_content']['hidden'] = implode($text_form_hidden);
$variables['text_form'] = implode($variables['text_form_content']);
}
?>Was muss ich nun in die Funktion stream_view schreiben, damit das ganze angezeigt wird.
Vielen dank schonmal ;)
lg, DragWyatt
- Anmelden oder Registrieren um Kommentare zu schreiben

Also ich an deiner Stelle
am 24.11.2011 - 21:50 Uhr
Also ich an deiner Stelle würde in hook_menu nicht
drupal_get_formangeben, sondern eine eigene Funktion. Die ruft danndrupal_get_formauf und gibt darunter noch die Meldungen aus.Das wäre meinerseits auch die
am 24.11.2011 - 23:01 Uhr
Das wäre meinerseits auch die beste Lösung.
Wenn Du Beispiele benötigst hier kurz melden.
Hallo, danke für die
am 25.11.2011 - 14:22 Uhr
Hallo,
danke für die Antworten. Wenn ich
drupal_get_formim Menu entferne und auf die Funktion stream_view angebe, dann zeigt er mir je nachdem was ich in den return schreibe entweder das Textfeld an oder die Ausgabe.Hier mein code:
<?php
function stream_view(){
$output = theme('stream_view', array('content' => 'test'));
drupal_get_form('stream_form');
return $output;
}
?>
Jetzt gibt es mir einfach nur test aus, was ja auch richtig ist. Nur wir kann ich das Formular auch noch ausgeben?
lg DragWyatt
So habe jetzt eine Lösung
am 26.11.2011 - 11:40 Uhr
So habe jetzt eine Lösung gefunden:
<?php
function stream_view(){
$output .= render(drupal_get_form('stream_form'));
$output .= theme('stream_view', array('content' => 'test'));
return $output;
}
?>
So wird beides Angezeigt. Nochmal danke für die Hilfe.
lg,
DragWyatt