Drupal Lib zur Verfügung stellen
am 15.03.2017 - 13:05 Uhr in
Hallo Forum,
in einem Modul stelle ich dem Client Javascript zur Verfügung, das klappt soweit auch. Nun möchte ich jedoch eine Javascript-Bib einbinden. Das Libraries-Modul habe ich installiert und meine *.module um den hook_libraries_info() erweitert. Die Bibliothek taucht auch unter Reports auf und wird als detected angezeigt. Ich habe gedacht mit hook_init() kann ich nun die Lib laden, mit
drupal_add_library('moduletest', 'libtest');
komme ich nicht weiter. Mein hauptziel ist es anschließend, die Bibliothek nur auf bestimmten Seiten zu laden.
Bin ich mit add_library überhaupt auf dem richtigen Dampfer oder muss ich doch eher libraries_load verwenden?
mfg
Tim
Mit folgendem Code konnte ich die Lib jetzt hinzufügen, leider wird sie zufrüh geladen:
public function attached() {
$attached = parent::attached();
$attached['libraries_load'][] = array(
'libtest',
);
return $attached;
}
- Anmelden oder Registrieren um Kommentare zu schreiben
Also meine Bibliotheken
am 29.03.2017 - 16:35 Uhr
Also meine Bibliotheken werden jetzt geladen, jedoch zu "früh", da die Abhängigkeit zu einer anderen Bibliothek besteht. Diese wird bereits erfolgreich durch ein anderes Modul (OpenLayers) geladen. Ich verstehe nicht, wie ich die Abhängigkeit angeben kann und ob mein Weg überhaupt der richtige ist, indem ich die init-Funktion verwende.
vielen Dank für eure Hilfe
mfg
Tim
<?php
function openlayers_customcontrols_libraries_info()
{
//\sites\all\libraries\wmchandlingol3
$libraries['wmchandlingol3'] = array(
'name' => 'Export und Import von standard WMC Dokumenten',
'vendor url' => 'https://ims.geoportal.de/git/summary/drupal!WMChandlingol3.git',
'download url' => 'https://ims.geoportal.de/git/summary/drupal!WMChandlingol3.git',
'version arguments' => array(
'file' => 'build/ol3-wmc-parser.min.js', // Could be any file with version info
'pattern' => '/.*?v([^)]+)/',
'lines' => 1,
),
'files' => array(
'js' => array('build/ol3-wmc-parser.min.js'), //this can be a path to the file location like array('lib/simple.js')
),
);
$libraries['wmcgeoportalhandlingol3'] = array(
'name' => 'Export und Import von Geoportal.de Karten als spezifizierte WMC Dokumente',
'vendor url' => 'https://ims.geoportal.de/git/summary/drupal!WMChandlingol3.git',
'download url' => 'https://ims.geoportal.de/git/summary/drupal!WMChandlingol3.git',
'version arguments' => array(
'file' => 'build/ol3-wmc-parser-geoportal.min.js', // Could be any file with version info
'pattern' => '/.*?v([^)]+)/',
'lines' => 1,
),
'files' => array(
'js' => array('build/ol3-wmc-parser-geoportal.min.js'), //this can be a path to the file location like array('lib/simple.js')
),
);
return $libraries;
}
function openlayers_customcontrols_init()
{
libraries_load('wmchandlingol3');
libraries_load('wmcgeoportalhandlingol3');
}
?>
www.geoportal.de
Hallo,
am 01.04.2017 - 11:32 Uhr
das ist nicht der richtige Weg in Drupal 8.
Schau mal in hook_libraries_info,
wie dort die abhängigen libraries geladen werden sollten:
$libraries['dependencies'] = array(
// Load the 'example' library, regardless of the version available:
'example',
// Only load the 'example' library, if version 1.2 is available:
'example (1.2)',
// Only load a version later than 1.3-beta2 of the 'example' library:
'example (>1.3-beta2)'
// Only load a version equal to or later than 1.3-beta3:
'example (>=1.3-beta3)',
// Only load a version earlier than 1.5:
'example (<1.5)',
// Only load a version equal to or earlier than 1.4:
'example (<=1.4)',
// Combinations of the above are allowed as well:
'example (>=1.3-beta2, <1.5)',
);
Gruss
Robert
https://awri.ch
Ich habe eine Schweizer Tastatur und daher kein scharfes ß ;-)
geoport sucht, glaub ich, für
am 01.04.2017 - 13:46 Uhr
geoport sucht, glaub ich, für Drupal 7...(Versionsangabe)
Kann leider nicht helfen bei dem Thema.
Grüße Jenna
Hi,
am 01.04.2017 - 15:02 Uhr
Danke Jenna, da hatte ich gar nicht drauf geachtet.
Macht aber keinen Unterscchied, da die API für libraries
von 7 direkt in 8 übernommen wurde wie es aussieht.
http://www.drupalcontrib.org/api/drupal/contributions!libraries!libraries.api.php/function/hook_libraries_info/7
https://awri.ch
Ich habe eine Schweizer Tastatur und daher kein scharfes ß ;-)
Hi, ich habe meine function
am 03.04.2017 - 09:16 Uhr
Hi,
ich habe meine function openlayers_customcontrols_libraries_info() jetzt einmal um libraries['dependencies'] erweitert und auch einmal die Abhängigkeit direkt eingehängt leider klappt das so nicht. Fällt jemandem eventuell noch etwas ein, oder sieht eventuell meinen Fehler? Vielen Dank
<?php
$libraries['wmcgeoportalhandlingol3'] = array(
'name' => 'Export und Import von Geoportal.de Karten als spezifizierte WMC Dokumente',
'vendor url' => 'https://ims.geoportal.de/git/summary/drupal!WMChandlingol3.git',
'download url' => 'https://ims.geoportal.de/git/summary/drupal!WMChandlingol3.git',
'version arguments' => array(
'file' => 'build/ol3-wmc-parser-geoportal.min.js', // Could be any file with version info
'pattern' => '/.*?v([^)]+)/',
'lines' => 1,
),
'files' => array(
'js' => array('build/ol3-wmc-parser-geoportal.min.js'), //this can be a path to the file location like array('lib/simple.js')
),
// 'dependencies' => array(
// 'openlayers3',
// ),
);
//Definiert die Abhängigkeit zu OpenLayers
$libraries['dependencies'] = array(
'openlayers3',
);
return $libraries;
?>
www.geoportal.de
Hallo. Was klappt
am 03.04.2017 - 10:25 Uhr
Hallo.
Was klappt nicht?
findet er eine library nicht oder gibt es eine Fehelrmeldung ind der Javascript Konsole (Firebug)?
Ganz oben lädst du doch wmchandlingol3 => wmcgeoportalhandlingol3.
Wurde denn die openlayers3 Bibliezthek geladen?
Denn hier lädst Du wmcgeoportalhandlingol3 => openlayers3
MfG
Robert
https://awri.ch
Ich habe eine Schweizer Tastatur und daher kein scharfes ß ;-)
Hallo. Was klappt
am 03.04.2017 - 10:58 Uhr
Hallo.
Was klappt nicht?
findet er eine library nicht oder gibt es eine Fehelrmeldung ind der Javascript Konsole (Firebug)?
Ganz oben lädst du doch wmchandlingol3 => wmcgeoportalhandlingol3.
Wurde denn die openlayers3 Bibliezthek geladen?
Denn hier lädst Du wmcgeoportalhandlingol3 => openlayers3
MfG
Robert
https://awri.ch
Ich habe eine Schweizer Tastatur und daher kein scharfes ß ;-)
Hi Robert, es wird alles
am 03.04.2017 - 14:43 Uhr
Hi Robert,
es wird alles geladen, jedoch in falscher Reihenfolge, die bibliothek OpenLayers wird aktuell erst nach dem wmchanldingol3 geladen.
OpenLayers ist eine externe Bibliothek, auf diese setzt das wmchandlingol3 auf, deswegen möchte ich gerne meiner bibliothek sagen, dass sie erst geladen werden darf, wenn openlayers bereits geladen ist.
mfg
Tim
www.geoportal.de
Hi, dann ist es, denke ich
am 03.04.2017 - 18:37 Uhr
Hi,
dann ist es, denke ich mal falsch, beides als Bibliotheken einzubinden.
Diese werden ziemlich früh eingebunden (bevor anderen Scripts)
Binde wmchandlingol3 doch als normales Script ein.
Schau mal hier unter weighted Javascript.
https://www.drupal.org/docs/7/api/javascript-api/managing-javascript-in-drupal-7
Gruss
Robert
https://awri.ch
Ich habe eine Schweizer Tastatur und daher kein scharfes ß ;-)
Hi Robert, genau so mache ich
am 04.04.2017 - 05:22 Uhr
Hi Robert,
genau so mache ich das aktuell, habe jedoch gedacht, dass das irgendwie eleganter geht, sprich das ich lediglich eine Abhängigkeit angebe und Drupal kümmert sich von alleine um die Reihenfolge.
vielen Dank für deine Hilfe.
mfg
Tim
www.geoportal.de