Nur ein paar CCK-Felder in einem Formular anzeigen
Eingetragen von Scentyoo (60)
am 15.12.2010 - 18:14 Uhr in
am 15.12.2010 - 18:14 Uhr in
Hallo, ich habe einen content-type mit 15 CCK-Feldern. Nun möchte ich ein Formular erstellen, in dem nur 2 Felder angezeigt werden. Statt über hook_form_alter die überflüssigen rauszulöschen, muss man das doch auch einzeln aufrufen können, oder?!
- Anmelden oder Registrieren um Kommentare zu schreiben
Hä? Was denn für ein Formular
am 15.12.2010 - 20:16 Uhr
Hä? Was denn für ein Formular mit 2 Feldern? Wie darf man das verstehen?
Du hast einen Node-Type mit 15 CCK-Feldern - ok. Und weiter? Was für ein Formular soll das denn sein mit den 2 Feldern?
Ok, habs inzwischen selbst
am 15.12.2010 - 21:05 Uhr
Ok, habs inzwischen selbst herausgefunden... Hab mich schrittweise durch die ganzen Funktionen die aufgerufen werden gewühlt :-P
Hier die Lösung:
<?php
function test_module_form($form_state, $node) {
// Node laden
$node = node_load($nid);
// Formular der Node erzeugen
module_load_include('inc', 'node', 'node.pages');
$temp_form = drupal_retrieve_form('test_node_form', $form_state, $node);
module_load_include('inc', 'content', 'includes/content.node_form');
content_form(&$temp_form, &$form_state);
// Formular mit den gewünschten Feldern erzeugen
$form['field_test_testfield'] = $temp_form['field_test_testfield'];
$form['#field_info']['field_test_testfield'] = $temp_form['#field_info']['field_test_testfield'];
return $form;
}
?>
ich brauche etwas ähnliches
am 16.12.2010 - 17:24 Uhr
vielleicht kann mir auch jemand weiterhelfen.
Ich will meine views-template so anpassen, dass ich selbst entscheiden kann wo mir die Felder angezeigt werden.
Momentan ist es so:
print $rows
da wird eins nach dem andern angezeigt.
ich hätte gern dass ich selbst entscheiden kann welches er lädt:
print $rows->field_inhalt
hab schon einiges durchprobiert, komm aber nicht dahinter.
Hat jemand einen Tipp für mich?
EDIT:
Jetzt hab ich das hier gefunden:
http://www.appnovation.com/theming-views-drupal-6-simple-way
Ich glaube das ist, was ich brauche.
Aber kann mir jemand genau erklären wie das nun funktioniert?
Ich versteh's immer noch nicht.
Und was genau verstehst du
am 16.12.2010 - 17:37 Uhr
Und was genau verstehst du nicht?
Man nehme die Standard-Theme-Datei "views-view-fields.tpl.php", kopiere diese in den Ordner des verwendeten Themes und benenne die Datei entsprechend der Theminginfo um.
Dann kannst du in der Datei mittels $fields['name_des_felds'] auf die einzelnen Felder zugreifen und die gezielt ausgeben.
Also bei mir tut sich da
am 16.12.2010 - 17:53 Uhr
Also bei mir tut sich da nichts.
Und was ich nicht verstehe daran ist, ich habe meine Felder benannt in CCK (field_beliebiger_name).
Ist das jetzt der Name über den ich zu den Feldern komme?
Also: print $fields['field_beschreibung']
So bekomm' ich keine Ausgabe.
Erläutere doch mal bitte
am 16.12.2010 - 18:34 Uhr
Erläutere doch mal bitte Schritt für Schritt, wie du vorgegangen bist.
Also ich hab eine normale
am 17.12.2010 - 10:06 Uhr
Also ich hab einen Inhaltstyp (CCK) erstellt mit 5 Feldern (einschließlich dem Titel).
Danach hab ich eine Ansicht (Views) erstellt die mir diesen Inhaltstyp mit allen Feldern unformattiert ausgibt,
also einfach die Felder nach der Reihe.
Und jetzt wollte ich mittels der Template-Dateien jedes Feld einzeln ansprechen damit ich die Ausgabe besser steuern kann,
weil mein Layout doch etwas ausgefallener sein soll.
Da habe ich verschiedene Dinge ausprobiert die mir kein Ergebnis lieferten, viel im Internet zu dem Thema gesurft und schließlich den o.g. Link
gefunden und dachte auch schon das ist die Lösung, allerdings bekomm ich immer noch keine Ausgabe.
So weit bringen die Infos
am 17.12.2010 - 15:39 Uhr
So weit bringen die Infos noch gar nichts. Was hast du für Theme-Dateien angelegt, wo hast du die her, wie heißen die, wo hast du sie hin kopiert usw. solche Infos sind wichtig.
Achso
am 17.12.2010 - 15:55 Uhr
Achso ok.
-page.tpl.php
-node.tpl.php
-block.tpl.php
-block-admin.tpl.php
-comment.tpl.php
-node.tpl.php
-template.php
die habe ich selbst angelegt, damit komm ich auch klar, bis dahin hat alles funktioniert wie's sollte.
dann hab ich noch die
-views-view.tpl.php
-views-view-fields.tpl.php
EDIT: achja, die .tpl dateien liegen alle in dem Verzeichnis meines themes.
und die views machen mir noch schwierigkeiten, die habe ich aus der Theme: Information rauskopiert.
Zur Views-Info:
Die Ansicht seitenaufbau zeigt Einträge vom Typ Node an.
Darstellung: Unformatiert
Zeilendesign: Felder
Felder
Inhalt: Kleines Standard
Inhalt: Seitenbesc Standard
Inhalt: großes Standard
Inhalt: kleines Standard
Node: Titel
Um das ganze noch abzurunden:
Es geht mir darum, dass ich eine Seite gebaut habe, die mit wenig Text aber sehr mit Bildern arbeitet.
großes Bild oben, links darunter ist der Titel der Seite und darunter der Inhalt
rechts von Inhalt und Titel sind 2 Felder wo nochmals Bilder drin sind.
Was ich mit dem View bezwecken will, ist dass ich übers Eingabeformular Text und Titel eingebe,
danach die Bilder hochlade und das ganze gleich so wie ich's haben will in mein Layout einfliesst.
Ist mein Ansatz also so überhaupt richtig?
Ansonsten dachte ich mir wär auch noch ne Möglichkeit verschiedene Views zu machen,
die nur immer ein Bestimmtes Feld auslesen und diesen View dann auf die Bereiche aufzuteilen.
Vielleicht denke ich aber auch ganz in die falsche Richtung.
Momentan sind die Bilderuploads noch nicht vorhanden, mir ging's mal darum,
dass der Text jetzt mal an der richtigen Stelle sitzt, das Layout besteht ja bereits.
Hast du die
am 17.12.2010 - 16:11 Uhr
Hast du die views-view-fields.tpl.php aus dem Theme-Ordner des Views-Moduls?
Im Modul-Ordner von Views gibt es einen Ordner namens "theme", dort liegen besagte Standard-Theme-Dateien. Und dort findest du auch die views-view-fields.tpl.php, die kopierst du dir in dein Theme und dann kannst du sie bearbeiten.
Des weiteren solltest du dir mal Devel installieren (http://drupal.org/project/devel) und in die views-view-fields.tpl.php den Befehl
<?php dsm($fields); ?>
einfügen, dann wird dir beim Aufruf der View eine Drupal-Message angezeigt, welche dir Informationen über die Variable $fields liefert, dort kannst du dann sehen, wie die Felder heißen und wie du sie ansprechen musst etc.Sollte diese Drupal-Nachricht nicht auftauchen, dann probier mal, den Theme-Cache zu leeren (entweder unter Einstellungen->Leistung-> Button "Cache leeren" oder im Block des Devel-Moduls auf "Cache leeren" klicken), dann dürfte es klappen.
Die views-tpl-dateien habe
am 20.12.2010 - 09:36 Uhr
Die views-tpl-dateien habe ich mir von Theme: Information kopiert.
mit dsm($fields); bekomm ich jetzt keine anzeige, caches geleert und vorlagendateien habe ich neu eingelesen.
muss ich den dsm befehl an eine bestimmte stelle schreiben?
In Theme: Information stehen
am 20.12.2010 - 09:46 Uhr
In Theme: Information stehen doch aber nur die Namen von potentiellen Theming-Dateien drin, wie willst du denn von dort eine Theming-Datei kopieren?
Wie bereits geschrieben, du sollst erstmal die entsprechende Theming-Datei aus dem theme-Ordner des Views-Modul-Ordners in deinen Ordner deines Themes kopieren.
Naja dachte das sind die
am 20.12.2010 - 10:50 Uhr
Naja dachte das sind die benötigten Dateien, wenn ich draufklicke bekomm ich die Datei angezeigt.
Ich hab mir die jetzt mal aus dem Theme-Ordner kopiert.
test: <?php dsm($fields); ?>
<?php foreach ($fields as $id => $field): ?>
<?php if (!empty($field->separator)): ?>
<?php print $field->separator; ?>
...
bringt folgende ausgabe:
test:
Ein Verweis auf andere Seiten in Form eines Bildes.
Eine Beschreibung die unter dem Titel angezeigt wird.
Großes Bild in der Mitte der Seite
Ein anderer Verweis auf sonstigen Inhalt der Seite.
Ein Seitentest für views
EDIT:
Ich hab jetzt eine Ausgabe mit:
print_r($fields);
erhalten:
[view] => view Object
(
[db_table] => views_view
[base_table] => node
[args] => Array
(
)
[use_ajax] =>
[result] => Array
(
[0] => stdClass Object
(
[nid] => 10
[node_data_field_small_pic_1_field_small_pic_1_value] => Ein Verweis auf andere Seiten in Form eines Bildes.
[node_type] => seitenansicht
[node_vid] => 10
[node_data_field_small_pic_1_field_beschreibung_value] => Eine Beschreibung die unter dem Titel angezeigt wird.
[node_data_field_small_pic_1_field_big_picture_value] => Großes Bild in der Mitte der Seite
[node_data_field_small_pic_1_field_small_pic_2_value] => Ein anderer Verweis auf sonstigen Inhalt der Seite.
[node_title] => Ein Seitentest für views
Das bringt mich schon mal weiter.
Aber auch nicht wirklich.
Wie greife ich denn jetzt auf diese Werte zu?
das print_r ergibt bei mir eine endlos lange ausgabe, ich bin ein wenig überfordert damit.
Ich hab's endlich geschafft
am 21.12.2010 - 09:36 Uhr
Falls es mal jemandem weiterhelfen sollte, hier die Lösung:
<?php
print $fields['field_mein_feld_value']->content
?>
gibt genau die Ausgabe die man in dem Feld hat.
Weitergeholfen hat mir das hier:
[gelöst] Felder von Views in ein Fieldset, bzw. DIV-Container einbetten
Hoffe damit wird noch weiteren geholfen sein.