Betrifft: Drupal7 \\ Beispieltabelle: aktionen \\ Beispielmodul: aktionen **Mit Views auf eigene Tabellen zugreifen - intern und extern** * Views eine weitere Tabelle verfügbar machen (anmelden) * Anmeldedaten in aktionen.inc (Variable $plugin) * in einem Unterverzeichnis im Modul (views/views_wizard) * Verzeichnis bekanntgeben: in hook_ctools_plugin_directory() für ($module == 'views_ui' && $plugin == 'views_wizard') * Es werden alle inc-Dateien des Verzeichnisses geladen * Von Views bereitgestellte Tabellen/-incDateien: in views/plugins/views_wizard * Hat views die Datei geladen, dann hat die Seite admin/structure/views/add im Feld Show eine weitere Auswahlmöglichkeit: Aktionen * Tabellendaten verfügbar machen * In hook_views_data() - also aktionen_views_data() * in Datei aktionen.views.inc (meinmodul.views.inc) * anmelden in hook_views_api() - aktionen_views_api() * Feld path, wenn nicht im Hauptverzeichnis des Moduls * Feld version (oder api): Versionsnummer, aktionen_views_api wird ignoriert, wenn version>views_api_version() oder version < views_api_minimum_version() * Tabellenbeschreibung in aktionen_views_data(): * Doku: http://views-help.doc.logrus.com/help/views/api-tables * Felder müssen einen field-Eintrag haben, mit einem handler ('handler' => 'views_handler_field') **Zugriff auf externe Tabellen** * In settings.php eine zweite Datenbank angeben (etwa 'extern' =>array ('default' => array (...)) ) * aktionen_schema() muss in aktionen.install vorhanden sein, * aber kein aktionen_install() und aktionen_uninstall(), DB und Tabelle müssen vorhanden sein * im hook aktionen_views_data() die externe Datenbank angeben * $data['aktionen']['table']['base']['database'] = 'extern' **Mit entity arbeiten** * Modul entity muss installiert und aktiviert sein * Informationen zur entity im hook hook_entity_info() bereitstellen (aktionen.module) * entity-name = 'aktionen', base table = 'aktionen', ... * für externe Tabelle den Controler überschreiben * 'controller class' => 'AktionenController', * im Controler->buildQuery() * aktuelle Connection auf 'extern' setzen: $old_key = Database::setActiveConnection('extern'); * parent-buildQuery ausführen: $query = parent::buildQuery($ids, $conditions, $revision_id); * aktuelle Connection zurücksetzen: Database::setActiveConnection($old_key); * query zurückgeben: return $query; * in aktionen_views_data() 'entity type' angeben * $data['aktionen']['table']['entity type'] = 'aktionen' * in admin/structure/views/view/%/edit kann man im Feld FORMAT/Show die Option auswählen (nicht für Format=table) * weiter passiert nicht viel, da fehlt wohl noch einiges...