Startseite
  • » Home
  • » Handbuch & FAQ
  • » Forum
  • » Übersetzungsserver
  • » Suche
Startseite › Forum › Drupalcenter.de › Module › Views ›

Modul created Content Type mit CCK Felder

Eingetragen von dodokoko (10)
am 26.11.2010 - 15:08 Uhr in
  • Views
  • Drupal 6.x

Hallo
ich entwickler gerade ein Modul für "Projekte". Dieses soll einen Content Type erstellen.

function pproject_node_info() {
  return array(
    'pproject' => array(
      'name' => t('Project'), // Required.
      'module' => 'pproject',  // Required.
      'description' => t('Create a new project node.'), // Required.
      'has_title' => TRUE,
      'title_label' => t('Project name'),
      'has_body' => TRUE,
      'body_label' => t('Project description'),
      'min_word_count' => 2,
      'locked' => TRUE
    )
  );
}

Das Modul ist von CCK-Modul abhängig und soll das Content Type "Project" (oben) um einige CCK Felder erweitern. Bis jetzt habe ich versucht, mich an dem hook_form anzuhängen. Es ist aber glaube ich nicht der richtige Anzatz um CCK Felder einzufügen.

function pproject_form($node, $form_state) {
  $form = node_content_form($node, $form_state);
 
  // declaring the fieldset
  $form['pproject_project'] = array(
  '#type' => 'fieldset',
   '#title' => t('Project options')
  );
  $form['pproject_project']['pproject_project_license'] = array(
    '#type' => 'select',
    '#title' => t('Source code license'),
'#default_value' => $default,  
    '#options' => array(
      1 => t('Apache License 2.0'),
      2 => t('Artistic License/GPL'),
      3 => t('Eclipse Public License 1.0'),
      4 => t('GNU General Public License v2'),
      5 => t('GNU General Public License v3'),        
    ),
    '#description' => t('Please select a license.'),
  );

  //
  // Vermutlich ist das falscher Ansatz, um das CCK Fields zu benutzen
  // man sollte denke ich erstmal diese einfügen und zum Content-Type referenzieren ?
  //
  $form['field_nodereference'] = array(
    '#type' => 'nodereference_autocomplete',
    '#title' => 'Nodereference Field',
    '#value_callback' => 'nodereference_options',
  );   

  return $form;
}

Ich würde gerne wissen, wie man CCK Felder für einem Content Type erstellt?
  also ich suche nach eine funktion => content_create_field() oder so ähnlich :), die CCK-API war leider keine Hilfe bis jetzt :(

Kennt jemand vielleich einen Tutorial oder Modul (das ein Content Type erstellt der aber auch CCK Felder beinhaltet)?

Danke

‹ Buttons mit CCK??? Views Liste mit Text und Bild ›
  • Anmelden oder Registrieren um Kommentare zu schreiben

ich würde mir dazu mal das

Eingetragen von wla (9463)
am 26.11.2010 - 15:52 Uhr

Ich würde mir dazu mal das Modul Content unter CCK ansehen. Da wird so etwas doch gemacht. Den Code analysieren und nachsehen, mit welchen Funktionen die Felder erzeugt werden.

Beste Grüße
Werner

  • Anmelden oder Registrieren um Kommentare zu schreiben

Features

Eingetragen von stBorchert (6003)
am 26.11.2010 - 19:56 Uhr

Hallo.
Wenn Du mit dem Modul einen Inhaltstypen erstellen willst, der keine selbst definierten Feldtypen enthält, kann ich Dir wärmstens das Modul [do:features Features] empfehlen.
Damit kannst Du den Inhaltstypen in ein Modul ("Feature") exportieren und er wird dann automatisch bei der Installation des Moduls angelegt.

hth,

 Stefan

  • Anmelden oder Registrieren um Kommentare zu schreiben

Hallo stBorchert, deinen

Eingetragen von dodokoko (10)
am 29.11.2010 - 10:03 Uhr

Hallo stBorchert,
deinen Vorschlag ist eine sehr gute Möglichkeit. Danke

Ich werde es aber trozdem weiter versuchen über PHP-Code (CCK-API) die Felder einzufügen. Ich will es einfach wissen wie das geht :)
Das was mich wirklich verwundert, ist die Tatsache, dass man über das Problem keine Infos findet. Das CCK-Handbuch (http://drupal.org/handbook/modules/cck) ist leider nur für User gedacht und nicht für Developer. Aber egal.

Also meine Lösung wäre folgende:

In der content.admin.inc, sollte man sich erstmal content_field_overview_form anschauen.

Create von CCK-Felder geht mit:

function content_field_overview_form_validate($form, &$form_state) {
  _content_field_overview_form_validate_add_new($form, $form_state);
  _content_field_overview_form_validate_add_existing($form, $form_state);
}

Wenn einer eine einfache Möglichkeit kenn, würde mich sehr freuen es zu erfahren :)

Danke

  • Anmelden oder Registrieren um Kommentare zu schreiben

Wie wäre es mit der Funktion

Eingetragen von wla (9463)
am 29.11.2010 - 13:06 Uhr

Wie wäre es mit der Funktion content_field_instance_create in content.crud.inc? Du mußt allerding heraus bekommen, welche Werte im $field-array übergeben werden müssen. Diese Funktion erzeugt ein neues CCK-Feld.

Beste Grüße
Werner

  • Anmelden oder Registrieren um Kommentare zu schreiben

Ja, du hast vollkommen

Eingetragen von dodokoko (10)
am 29.11.2010 - 15:41 Uhr

Ja, du hast vollkommen Recht

  // Add subtitle field
      $field = array();
      $field['field_name'] = 'field_subtitle';
      $field['type_name'] = 'pproject_news';
      $field['type'] = 'text';
      $field['module'] = 'text';
      $field['required'] = FALSE;
      $field['widget_type'] = 'optionwidgets_select';
      $field['active'] = TRUE;
      content_field_instance_create($field);

      $field = content_fields('field_subtitle', 'pproject_news');
      $field['widget']['label'] = 'Subtitle';
      $field['widget']['weight'] = -3;
      $field['widget']['type'] = 'optionwidgets_select';
      $field['display_settings']['weight'] = -3;
      $field['display_settings']['label']['format'] = 'hidden';
      $field['display_settings']['teaser']['format'] = 'default';
      $field['display_settings']['full']['format'] = 'default';
      content_field_instance_update($field);

  • Anmelden oder Registrieren um Kommentare zu schreiben

Lösung

Eingetragen von dodokoko (10)
am 01.12.2010 - 10:17 Uhr

Hallo,
ich will hier das Forum nich zuspammen, aber ich habe mich entschieden die Lösung des Problems zu posten. Der Grund dafür ist, das man sehr sehr wenig Information bzw. dokumenttation über das Problem findet.
Also in folgende beispiel wird zuerst einen CCK-Fieldset erstellt dann wird eine CCK-SelectBox und am Ende wird das CCK-SelectBox dem Fieldset zugeordnet.

function _nnproject_cckfields_install(){
  module_load_include('inc', 'content', 'includes/content.crud'); 
 
    $group = array();
    $group['label'] = 'Project options';
    $group['group_name'] = 'group_nnproject_projectoptions';
    $group['group_option'] = null;
    $group['group_type'] = 'standard';
    $group['weight'] = 2;
    $group['parent'] = null;
    $group['settings'] = array();
    $group['settings']['form'] = array();
    $group['settings']['form']['style'] = 'fieldset_collapsible' ; //'fieldset' 'fieldset_collapsible' 'fieldset_collapsed';
    $group['settings']['form']['description'] = null;
    $group['settings']['display'] = array();
    $group['settings']['display']['description'] = null;
    $group['settings']['display']['label'] = 'above';
    $group['settings']['display']['teaser'] = array();
    $group['settings']['display']['teaser']['format'] = 'fieldset';
    $group['settings']['display']['teaser']['exclude'] = 0;
    $group['settings']['display']['full'] = array();
    $group['settings']['display']['full']['format'] = 'fieldset';
    $group['settings']['display']['full']['exclude'] = 0;   
    fieldgroup_save_group('nnproject', $group);
         
  // TODO: check of modul 'text'
  // Add 'Source code license' field
      $field = array();
      $field['field_name'] = 'field_nnproject_license';
      $field['type_name'] = 'nnproject';   
      $field['description'] = 'Please select a license.';     
      $field['type'] = 'text';
      $field['module'] = 'text';
      $field['required'] = FALSE;                        // Required
      $field['widget_type'] = 'optionwidgets_select';
      $field['active'] = TRUE;
      $field['allowed_values'] = '';
      $field['allowed_values_php'] = "return array( 1 => 'Apache License 2.0',
                2 => 'Artistic License/GPL',
                                                    3 => 'Eclipse Public License 1.0'
                                                  );";                
      content_field_instance_create($field);

     
      $field = content_fields('field_nnproject_license', 'nnproject');   
      $field['group'] = 'group_nnproject_projectoptions';            
      $field['multiple'] = 0;                         // Number of values
      $field['max_length'] = null;                    // Maximum length          
      $field['widget']['label'] = 'Source code license';
      $field['widget']['weight'] = -3;
      $field['widget']['type'] = 'optionwidgets_select';
      $field['display_settings']['weight'] = -3;
      $field['display_settings']['label']['format'] = 'hidden';
      $field['display_settings']['teaser']['format'] = 'default';
      $field['display_settings']['full']['format'] = 'default';
      content_field_instance_update($field); 

     
      fieldgroup_update_fields(array('field_name' => 'field_nnproject_license', 'group' => 'group_nnproject_projectoptions', 'type_name' => 'nnproject'));
}

  • Anmelden oder Registrieren um Kommentare zu schreiben

Benutzeranmeldung

  • Registrieren
  • Neues Passwort anfordern

Aktive Forenthemen

  • Dynamische Ansicht von Seiteninhalt (als Tabelle?)
  • Vergabe von Berechtigungen für bestimmte Rollen; mir fehlt der Haken bzw. das „Veröffentlicht“
  • Ich brauche dringen Hilfe zu Updates oder ggf. wwie geht Composer?
  • Medien und andere Daten mit Feeds von Drupal 7 auf Drupal 10 migrieren
  • Rolle erstellen nicht zu finden
  • für drupal11 ein Slider Modul
  • [gelöst] W3CSS Paragraphs Views
  • Drupal 11 neu aufsetzen und Bereiche aus 10 importieren
  • Wie erlaubt man neuen Benutzern auf die Resetseite zugreifen zu dürfen.
  • [gelöst] Anzeigeformat Text mit Bild in einem Artikel, Drupal 11
  • Social Media Buttons um Insteragram erweitern
  • Nach Installation der neuesten D10-Version kein Zugriff auf Website
Weiter

Neue Kommentare

  • Arrrrg. Nix Tabelle :-D /*
    vor 2 Wochen 5 Tagen
  • Textboxen mit Tabelle
    vor 2 Wochen 6 Tagen
  • Du sollst ja auch keine
    vor 2 Wochen 6 Tagen
  • Theme
    vor 2 Wochen 6 Tagen
  • Welches Theme benutzt du
    vor 2 Wochen 6 Tagen
  • Mit Responsive Raster hatte
    vor 3 Wochen 2 Stunden
  • Hallo Alex,um das Häkchen
    vor 3 Wochen 11 Stunden
  • Modul view_unpublished
    vor 3 Wochen 1 Tag
  • Modul "override node options"
    vor 3 Wochen 2 Tagen
  • Im Grunde ist dass ein
    vor 3 Wochen 4 Tagen

Statistik

Beiträge im Forum: 250270
Registrierte User: 20479

Neue User:

  • Stevebok
  • Robertnobia
  • AltonRaf

» Alle User anzeigen

User nach Punkten sortiert:
wla9463
stBorchert6003
quiptime4972
Tobias Bähr4019
bv3924
ronald3857
md3717
Thoor3678
Alexander Langer3416
Exterior2903
» User nach Punkten
Zur Zeit sind 0 User und 48 Gäste online.

Hauptmenü

  • » Home
  • » Handbuch & FAQ
  • » Forum
  • » Übersetzungsserver
  • » Suche

Quicklinks I

  • Infos
  • Drupal Showcase
  • Installation
  • Update
  • Forum
  • Team
  • Verhaltensregeln

Quicklinks II

  • Drupal Jobs
  • FAQ
  • Drupal-Kochbuch
  • Best Practice - Drupal Sites - Guidelines
  • Drupal How To's

Quicklinks III

  • Tipps & Tricks
  • Drupal Theme System
  • Theme Handbuch
  • Leitfaden zur Entwicklung von Modulen

RSS & Twitter

  • Drupal Planet deutsch
  • RSS Feed News
  • RSS Feed Planet
  • Twitter Drupalcenter
Drupalcenter Team | Impressum & Datenschutz | Kontakt
Angetrieben von Drupal | Drupal is a registered trademark of Dries Buytaert.
Drupal Initiative - Drupal Association