[Gelöst] Modul wird zu langsam geladen
am 11.08.2014 - 18:39 Uhr in
Liebe Drupal-Profis,
ich bin noch ein relativer Anfänger was Drupal betrifft und neu hier. Ich hoffe, ich habe die richtige Forumkategorie etc. gewählt ...
Meine Frage:
Ich versuche z.B. die Menüleiste nur für angemeldete Nutzer zugängig zu machen. Es funktioniert an und für sich schon, aber bei einer langsamen Internet-Verbindung kann man die Menüeintrage immer noch lesen, bis die Seite ganz geladen wurde. Mein Modul wird also quasi zu spät ausgeführt ...
Kann ich das entweder einfach (!) anders lösen, oder kann ich Drupal sagen, es soll mein Modul früher laden?
Noch besser wäre vielleicht, die Seite erst dann anzuzeigen, wenn alle Inhalte geladen wurden. Gibt es da eine Möglichkeit?
Hier mein Code:
<?php
[...]
function menueleiste_ausblenden_init() {
if(user_is_logged_in()){
// User ist eingeloggt
}
else{
drupal_add_css( drupal_get_path('module', 'menueleiste_ausblenden') .'/menueleiste_ausblenden.css');
echo "<div id='modultext'>Sie müssen sich anmelden, um die Inhalte sehen zu können!</div>";
}
}?>CSS:
.sitemenu {
display: none;
}
#modultext {
top: 130;
text-align: center;
position: relative;
color: red;
font-size: 25;
}Liebe Grüße und Danke im vorhinein,
Niki
- Anmelden oder Registrieren um Kommentare zu schreiben

Drupal zeigt Menüeinträge nur
am 11.08.2014 - 19:06 Uhr
Drupal zeigt Menüeinträge nur dann, wenn der User auch das Recht hat, die damit aufgerufenen Seiten zu sehen. Hat er das Recht nicht, wird ihm auch kein Menüpunkt angezeigt. Das Menü ist damit weg. Das ist eine einfache Möglichkeit dafür zu sorgen, daß das Menü nicht gezeigt wird.
wla schrieb Drupal zeigt
am 11.08.2014 - 19:14 Uhr
Drupal zeigt Menüeinträge nur dann, wenn der User auch das Recht hat, die damit aufgerufenen Seiten zu sehen.
Ich habe dem Benutzer Gast (nicht angemeldeter Benutzer) ALLE Rechte entzogen, trotzdem wird die Menüleite noch angezeigt!
Wozu brauchst du überhaupt
am 11.08.2014 - 20:41 Uhr
Wozu brauchst du überhaupt ein Modul?
Jedes Drupal Menu erzeugt einen Block. In den Blockberechtigungen kannst du auch Rollen auswählen (Gast, Authentifizierter Benutzer etc).
Mir scheint,
am 12.08.2014 - 07:26 Uhr
du machst einen Klimmzug über ein Modul, wo es die Grundfunktionalität von Drupal täte.
Warum löst Du das Ausblenden
am 12.08.2014 - 09:12 Uhr
Warum löst Du das Ausblenden überhaupt über CSS? Das ist das, was mich da am meisten wundert. Wenn natürlich diese CSS-Datei verspätet (oder gar gar nicht) geladen wird, was nicht mal an Deinem Server liegen muss ...
Deine Lösung hat überdies den Nachteil, dass sie nicht greift, falls jemand CSS im Browser deaktiviert, bzw. das Menü im Quelltext weiterhin sichtbar bleibt.
Ich frag mich auch: warum legst Du das Menü nicht einfach in einen Block und konfigurierst diesen Block drupalseitig so, dass er nur für angemeldete User sichtbar ist? Dann wird der entsprechende Code gar nicht erst an diesen User ausgeliefert.
E-Fee schrieb Warum löst Du
am 12.08.2014 - 11:23 Uhr
Warum löst Du das Ausblenden überhaupt über CSS?
Weil mir keine bessere Möglichkeit eingefallen ist ...
Ich frag mich auch: warum legst Du das Menü nicht einfach in einen Block und konfigurierst diesen Block drupalseitig so, dass er nur für angemeldete User sichtbar ist? Dann wird der entsprechende Code gar nicht erst an diesen User ausgeliefert.
Das werde ich mir gleich anschauen. Danke für die Infos!
Liebe Grüße,
Niki
Du hast hier ein CMS
am 12.08.2014 - 12:12 Uhr
das dynamisch Daten ausliefern kann.
Da macht es wenig Sinn, alles auszuliefern, und dann beim Client auszublenden.
Mit den richtigen Verfahren wird nur das geliefert, was auch zur Anzeige kommen soll.
Dafür basiert Drupal auf einer Datenbank und läuft unter einem WEB-Server mit einer Scriptingsprache (PHP).
Vertiefe dich in Drupal, und versuche nicht an Drupal vorbei zu entwickeln.
Außerdem solltest Du die
am 12.08.2014 - 18:24 Uhr
Außerdem solltest Du die Dokumentationen lesen, bevor Du die Drupal-Hooks verwendest... zu hook_init steht da (https://api.drupal.org/api/drupal/modules!system!system.api.php/function/hook_init/7):
To add CSS or JS that should be present on all pages, modules should not implement this hook, but declare these files in their .info file.
E-Fee schrieb Ich frag mich
am 13.08.2014 - 15:03 Uhr
Ich frag mich auch: warum legst Du das Menü nicht einfach in einen Block und konfigurierst diesen Block drupalseitig so, dass er nur für angemeldete User sichtbar ist? Dann wird der entsprechende Code gar nicht erst an diesen User ausgeliefert.
Das habe ich soeben probiert, aber ich habe es nicht geschafft, das Hauptmenü in einen Block zu verschieben(?). Könnte mir bitte jemand sagen, wie das funktioniert? Ich hab nichts gefunden.
Ich verwende das Theme Marinelli.
Liebe Grüße,
Niki