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 - 14: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 (9461)
am 26.11.2010 - 14: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 - 18: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 - 09: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 (9461)
am 29.11.2010 - 12: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 - 14: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 - 09: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

  • Rolle erstellen nicht zu finden
  • Medien und andere Daten mit Feeds von Drupal 7 auf Drupal 10 migrieren
  • 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
  • Composer nach Umzug
  • [gelöst] Taxonomie Begriffe zeigt nicht alle Nodes an
  • Drupal 11 + Experience Builder (Canvas) + Layout Builder
Weiter

Neue Kommentare

  • Rollen
    vor 3 Tagen 22 Stunden
  • Inzwischen sind wir bei
    vor 2 Wochen 15 Stunden
  • Migrieren von D7 auf D8/ D10/ D11
    vor 2 Wochen 1 Tag
  • melde mich mal wieder, da ich
    vor 9 Wochen 5 Tagen
  • Hey danke
    vor 9 Wochen 6 Tagen
  • Update: jetzt gibt's ein
    vor 10 Wochen 20 Minuten
  • Hallo, im Prinzip habe ich
    vor 10 Wochen 4 Tagen
  • Da scheint die Terminologie
    vor 10 Wochen 4 Tagen
  • Kannst doch auch alles direkt
    vor 11 Wochen 1 Tag
  • In der entsprechenden View
    vor 11 Wochen 1 Tag

Statistik

Beiträge im Forum: 250237
Registrierte User: 20466

Neue User:

  • StevenEness
  • ocvk2810
  • marouane.blel

» Alle User anzeigen

User nach Punkten sortiert:
wla9461
stBorchert6003
quiptime4972
Tobias Bähr4019
bv3924
ronald3857
md3717
Thoor3678
Alexander Langer3416
Exterior2903
» User nach Punkten
Zur Zeit sind 0 User und 25 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