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

blöcke mit eigenem Inhalt und Strucktur

Eingetragen von Mystery (63)
am 07.02.2015 - 17:29 Uhr in
  • Module

Hallo zusammen.

Ich möchte gern in meinem Header einen Block haben, mit individuellem Inhalt und Strucktur.

Ist ein Gast auf der Seite dann soll Folgendes da sein:

  1. eine h2 mit Willkommen Gast
  2. Ein Button für Regetrieren und ein Button für Login

Ist ein User auf der Seite dann soll Folgendes da sein:

  1. eine h2 mit Willkommen Username
  2. Ein Button für Mein Profil und ein Button für Logout
  3. ein Feld, wo die Userpunkte des Nutzers stehen

1. Wie binde ich meine "block-userlogin.tpl.php" ein, dass diese dann auch in der Region "userlogin" als block template angewendet wird?
2. Muss ich für die Region "userlogin" über Strucktur / Blöcke auch noch einen Block anlegen?
2.1. Wenn ja, wie bekomme ich da meinen Inhalt rein, das dieser dann auch Individuell für jeden Nutzer ist?
2.2. Wenn nein, wie bekomme ich den Inhalt dann in diesen Block?
3. Ich möchte gerne für die Menübutton auf das vorhandene Usermenü von Drupal zurückgreifen.

Ich hoffe es ist verständlich ausgedrückt, und jemand kann mir ausführlicher beschreiben, wie ich an die Sache herangehen muss, ohne mir links zu den üblichen Drupalhandbüchern zu schicken. Diese habe ich bereits durchgelesen und komme mit den Erklärungen nicht wirklich klar, da mein englisch im Fachbereich Webdesign nicht perfekt ist..

‹ [gelöst]CKEditor und Tabellenkalkulation Multilingual-Seite - Problem mit Slider-Effekt ›
  • Anmelden oder Registrieren um Kommentare zu schreiben

Das sind viele Fragen in

Eingetragen von niebegeg.net (111)
am 07.02.2015 - 21:10 Uhr

Das sind viele Fragen in einer zusammengefasst. Entsprechend schwer kann es werden, Dir all die Auskünfte zu geben, die Du brauchen kannst.
Schauen wir mal...

Um Gästen und angemeldeten Benutzern zwei verschiedene Blöcke anbieten zu können, legst Du auch zwei Blöcke an. Der erste ist ein Textblock und hat eben den Titel "Hallo Gast" sowie die zwei Buttons als HTML im Textbereich. Den Block fügst Du in die Header-Region ein und gibst ihr als rollenbasierte Berechtigung mit, das nur "anonyme" Besucher diesen Block sehen.

Für angemeldete Benutzer gibt es einen Block "User menu", der vom user.module bereit gestellt wird und schon mal die Links "Mein Konto" und "Abmelden" enthält. Weitere Module können Links in diesem Menüblock hinzufügen. Du siehst eben diesen Block auch hier auf dieser Website oben links.
In Deinem Fall solltest Du mit PHP-Code zu Werke gehen: Du erstellst ein Modul und implementierst den Hook hook_block_view_alter(&$data, $block). Dort kannst Du die Anzeige des Blocks "User menu" beliebig umbauen und z.B. den Titel in "Hallo #Name#" ändern. Dieser Block "User menu" wird sowieso nur bei angemeldeten Benutzrn angezeigt, somit hast Du zwei verschiedene Anzeigen für Gäste und angemeldete Benutzer.

Da Du geschrieben hast, dass Du die Blöcke in den Header bekommen wilst. Üblicherweise nutzt man dafür eine Region "header" (oder so) eines Themes. Eine Region "User login" ist dafür unüblich. Oder hast Du Dir eine solche Region eingebaut? Pack "einfach" die beiden o.g. Blöcke in die Header-Region. Ein Template "block-userlogin.tpl.php" würde ich dafür erstmal nicht bauen/kopieren, da die von Dir gewünschten Änderungen vor dem Theming erldigt werden können, nicht beim Theming.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Das war schon mal ein guter

Eingetragen von Mystery (63)
am 07.02.2015 - 22:19 Uhr

Das war schon mal ein guter Anfang Dirk.

Ja in meinem Header habe ich eine region namens User Login. Das ist soweit vorbereitet.

Also komme ich um das Modul schreiben nicht herum. Damit hatte ich schon mal angefangen.

Gibt es denn auch Deutsche tut seiten, wo so etwas gut erklärt ist?

Speziell jetzt zu dem Willkommen Gast Block. Im Body kann ich dann im plan text einfach mein html code eingeben? oder muss ich das per php machen?

  • Anmelden oder Registrieren um Kommentare zu schreiben

Zur letzten Frage: Ja, Du

Eingetragen von niebegeg.net (111)
am 07.02.2015 - 23:04 Uhr

Zur letzten Frage: Ja, Du kannst direkt HTML dort eingeben. Dann solltest Du aber das textformat auf "Full HTML" stellen. Mit "Filtered HTML" (oder so) bekommst Du nur Bruchteile Deiens HTMLs ausgegeben.

Für den Rest wende Dich am besten an den Chat (Channel #drupal.de auf ird.freenode.net), dann kannst Du gern kleine Fragen stellen udn findest viele Entwickler, die das schon gemacht haben.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Ich würde das anders

Eingetragen von torfnase (1525)
am 07.02.2015 - 23:49 Uhr

Ich würde das anders angehen.
Wenn du einen Block mit mehreren Funktionalitäten haben willst, z.B. in Abhängigkeit davon, ob jemand eingeloggt ist oder nicht, dann nehme als Textformat "PHP-Filter" und dann schreibst du die Sachen selbst.
Damit hast du die größtmögliche Flexibilität.

Gruß
Berthold

  • Anmelden oder Registrieren um Kommentare zu schreiben

So geht das natürlich auch.

Eingetragen von niebegeg.net (111)
am 08.02.2015 - 00:04 Uhr

So geht das natürlich auch. ich persönlich würde den PHP-Filter jedoch aus Sicherheitsbedenken auf keiner meiner Sites aktivieren.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Ok. Den PHP Filter habe ich

Eingetragen von Mystery (63)
am 08.02.2015 - 01:04 Uhr

Ok. Den PHP Filter habe ich auch aus.

Gibt es denn eine Deutsche erklärung, wo die ganzen hook funktionen etwas näher erklärt sind?

  • Anmelden oder Registrieren um Kommentare zu schreiben

Man kann ja dieses Textformat

Eingetragen von torfnase (1525)
am 08.02.2015 - 03:29 Uhr

Man kann ja dieses Textformat nur für Admins zulassen.
Meinst du wirklich, dass man damit so ein großes Sicherheitsloch reißt ?

Da würde mich die Meinung auch hier im Forum interessieren.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Ich habe mich jetzt

Eingetragen von Mystery (63)
am 08.02.2015 - 13:47 Uhr

Ich habe mich jetzt entschieden.

Ich werde das ganze in einem Eigenen Modul dchreiben. So ist es dann auch einfacher, das ganze um funktionen zu erweitern.

Zu dem was ich brauch:

Nach login....

Usernamen
Userpoints
Link zur Profilseite
Link zum Abmelden

Da meine PHP Kenntnisse noch nicht so groß sind, versuch ich das mal mit meiner logik aufzubauen. Wenn da fehler sind, dann berichtigt mich mal bitte.

--> User loggt sich ein
--> Modul holt sich die Userdaten (uid, username) und gibt diese mit return zurück
--> anhand der uid sucht das Modul den Punktestand aus der userpoints datenbank und gibt diese per return zurück.

Somit habe ich uid, username und punktestand.

Wie kann ich denn dem Modul nun sagen, das es einen Block generieren soll, der auch unter Strucktur / blöcke auswählbar ist und nur von angemeldeten Usern sichtbar ist?
Desweiteren möchte ich, dass die Daten der Abfrage nicht drupal mässig mit content rausgeschmissen werden, sondern folgendermassen:

<div class="welcome">
    <h3>Willkommen <?php print $username ?><h3>
</div>
<div class="points">
   <p>Du hast Aktuell <?php print $userpoints ?>
</div>
<div class="menu">
   <a href="LINK ZUM KONTROLLZENTRUM DES NUTZERS">Mein Profil</a>
   <a href="LINK ZUM ABMELDEN DES NUTZERS">Logout</a>
</div>

Wenn mir jemand die nötigen Funktionen dazu nennen könnte, wäre ich sehr dankbar dafür :-)

  • Anmelden oder Registrieren um Kommentare zu schreiben

Mystery schrieb Ich habe mich

Eingetragen von niebegeg.net (111)
am 08.02.2015 - 22:08 Uhr
Mystery schrieb

Ich habe mich jetzt entschieden.

Ich werde das ganze in einem Eigenen Modul dchreiben. So ist es dann auch einfacher, das ganze um funktionen zu erweitern.

Gute Entscheidung!

Mystery schrieb

Wenn mir jemand die nötigen Funktionen dazu nennen könnte, wäre ich sehr dankbar dafür :-)

Du musst die Hooks hook_block_info() und
hook_block_view() implementieren.

Es gibt ein Projekt examples.module, in dem im Modul block_example beispielhaft ein Block erstellt wird: http://cgit.drupalcode.org/examples/tree/block_example/block_example.module - das kann eine Vorlage für Dich sein. Du brauchst allerdings nur beide oben genannten Hooks implementieren.

  • Anmelden oder Registrieren um Kommentare zu schreiben

torfnase schrieb Man kann ja

Eingetragen von niebegeg.net (111)
am 08.02.2015 - 22:14 Uhr
torfnase schrieb

Man kann ja dieses Textformat nur für Admins zulassen.
Meinst du wirklich, dass man damit so ein großes Sicherheitsloch reißt ?

Man kann darüber streiten, ob ein Admin in der Lage ist, sicheren Code in so ein Textfeld zu schreiben. Und was jemand anstellen kann, dem es gelingt, mit Adminberechtigung übers Frontend PHP-Code in eine Seiten einer Website einzuschleussen.

Ich würde nicht mal mir selbst trauen. Und benutze es deshalb nicht. Für allgemeingültige Aussagen müssen wir andere Drupaler finden. ;)

  • Anmelden oder Registrieren um Kommentare zu schreiben

Danke dirk. Das werde ich mir

Eingetragen von Mystery (63)
am 08.02.2015 - 22:45 Uhr

Danke dirk. Das werde ich mir mal ganz genau angucken.

Klingt auf jeden fall genau nach dem, was ich suche. Da muss ich dann nur noch die Datenbankabfrage ordentlich hinbekommen, und dann sollte das hoffentlich funktionieren

  • Anmelden oder Registrieren um Kommentare zu schreiben

Noch mal zur Diskussion

Eingetragen von montviso (2188)
am 09.02.2015 - 09:50 Uhr

Noch mal zur Diskussion PHP-Code in Blöcken für Admins zulassen.
Wenn man dam Admin nicht zutraut, sicheren Code in den Block zu schreiben, dann darf er aber auch keine Module schreiben, oder?

Und wenn sich jemand unberechtigterweise Admin-Zugang auf die Seite verschafft, dann ist das Kind so und so in Brunnen gefallen...

Ich habe es inzwischen auch verinnerlicht und schreibe lieber Module.
Allerdings so ganz verstanden habe ich die Begründungen nicht bis ins Letzte...

Sorry Mystery, ist ja eigentlich OffTopic...aber halt dennoch immer wieder eine interessante Frage.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Es sei dir verziehen

Eingetragen von Mystery (63)
am 09.02.2015 - 11:03 Uhr

Es sei dir verziehen montviso, wenn du noch was passendes zu meiner Problematik hast. :-)

Speziell die Datenbank Abfragen im Modul.

Lg

  • Anmelden oder Registrieren um Kommentare zu schreiben

montviso schrieb Noch mal zur

Eingetragen von niebegeg.net (111)
am 09.02.2015 - 11:14 Uhr
montviso schrieb

Noch mal zur Diskussion PHP-Code in Blöcken für Admins zulassen.
Wenn man dam Admin nicht zutraut, sicheren Code in den Block zu schreiben, dann darf er aber auch keine Module schreiben, oder?

Es ist wie immer eine Ermessensfrage: Bei der Modulentwicklung schreibe ich PHP-Code in einem Editor oder einer IDE, habe Syntax highlighting, Code completion, Syntax checks und hoffentlich Tests. Im Frontend habe ich eine Textbox.

montviso schrieb

Und wenn sich jemand unberechtigterweise Admin-Zugang auf die Seite verschafft, dann ist das Kind so und so in Brunnen gefallen...

Es ist ein Unterschied, ob jemand mit Adminberechtigung Content ändern/löschen, User anlegen oder das Sitelayout umbauen kann, oder ob er dank SQL-Statements Direktzugriff auf die Datenbank und die gesamte Codebasis hat. Schlimm ist beides, aber es ist schlimm in Abstufungen. Oder?

  • Anmelden oder Registrieren um Kommentare zu schreiben

Ein paar Grundkenntnisse in

Eingetragen von wla (9454)
am 09.02.2015 - 11:15 Uhr

Ein paar Grundkenntnisse in SQL solltest Du dazu schon haben. Ich baue mir bei solchen Anforderungen einfach einen View, der mein Problem löst und lasse mir von Views die erzeugte Abfrage anzeigen. Die überarbeite ich dann noch etwas, denn es geht manches einfacher, wenn man die Abfrage gezielt aufbaut, als bei einer einer generischen Erzeugung. Diese so gewonnene Abfrage kannst Du dann noch mit phpMyAdmin überprüfen.

  • Anmelden oder Registrieren um Kommentare zu schreiben

@Mystery, ich schau mir das

Eingetragen von montviso (2188)
am 09.02.2015 - 11:26 Uhr

@niebegeg.net , ja, stimmt, zwischen Schwarz und Weiß gibt es auch "Schlimm" in Graustufen. ;-)

Wenn ich in Versuchung gerate, mal schnell ein paar Zeilen Code in Blocks zu schreiben, dann ist das nicht mehr, als ein paar Zeilen ausgeben, z.B. einen Usernamen oder eine kurze Berechnung.
Sobald der Code komplexer wird, würde ich auch jederzeit ein Modul vorziehen, das ich im IDE schreibe und debugge.

Früher habe ich das mal in einem Projekt so gelöst:
Datei im System abgelegt und im IDE bearbeit und per include() im Block einbinden.
Aber ich sehe das auch nicht mehr unbedingt als die sauberste Methode, nur sehr pratkisch.

  • Anmelden oder Registrieren um Kommentare zu schreiben

@Mystery, kannst Du Deine

Eingetragen von montviso (2188)
am 09.02.2015 - 11:35 Uhr

@Mystery, kannst Du Deine Frage zur Datenbank-Abfrage noch mal konkreter stellen?
Ich verstehe nicht so genau, wo Du da hängst - auch nicht nach Lesen des Threads.

Geht es z.B. um das Thema userpoints?
Wo kommen die her?
Handelt es sich um das Modul User points?
https://www.drupal.org/project/userpoints

Dann mußt Du Dich mal mit der API beschäftigen.
http://api.worldempire.ch/api/userpoints/userpoints.api.php/group/userpo...

Da gibt es z.B. die Funktion userpoints_get_current_points().
Der gibst Du als Argument die ID des Users mit.

Da habe ich auf die Schnelle ein Beispiel gefunden, wie die Funktion eingesetzt wird:
http://drupal.stackexchange.com/questions/88888/how-can-i-check-whether-...
Im Beispiel gehts um Rules, sicher findest Du noch mehr.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Ganz genau dieses User Point

Eingetragen von Mystery (63)
am 09.02.2015 - 12:33 Uhr

Ganz genau dieses User Point modul nutze ich.

Ich werde die abfrage mal schreiben, und dann hier posten. Wenn da fehler auftreten, könnt ihr mir diese ja berichtigen und ggf. auch erklären, warum das falsch ist.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Ich bin nicht sicher, ob Dir

Eingetragen von montviso (2188)
am 09.02.2015 - 12:50 Uhr

Ich bin nicht sicher, ob Dir das klar geworden ist aus meinen Links:
Da es eine API gibt (Sammlung hilfreicher Funktionen für dieses Modul), mußt Du nicht selbst eine Datenbankabfrage schreiben, sondern kannst einfach die genannte Funktion ausgeben lassen.
Also ganz wenig Code.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Doch das ist mir klar, Mir

Eingetragen von Mystery (63)
am 09.02.2015 - 13:16 Uhr

Doch das ist mir klar, Mir geht es auch eher um den Syntax und das es dann auch das ausgibt, was ich möchte :-)

PHP ist leider nicht meine Stärke und bis jetzt hatte ich auch wenig mit funktionen in bezug auf php zu tun.

Hier mal der Code. Laut Drewamweaver sind keine Syntax fehler drin.

<?php
function userlogin_username_alter(&$name, $account) {

$user = user_load($account->uid);

return
$name;
}
function
userpoints_get_current_points($uid = NULL, $tid = NULL) {
 
$points = drupal_static(__FUNCTION__, array());
  if (!
$uid) {
    global
$user;
   
$uid = $user->uid;
  }
 
// 0 is a valid value for the Uncategorized category.
 
if (!isset($tid)) {
   
$tid = userpoints_get_default_tid();
  }
  if (!isset(
$points[$uid][$tid])) {
    if (
$tid === 'all') {
     
$points[$uid][$tid] = (int) db_query('SELECT points FROM {userpoints_total} WHERE uid = :uid', array(':uid' => $uid))->fetchField();
    }
    else {
     
$points[$uid][$tid] = (int) db_query('SELECT points FROM {userpoints} WHERE uid = :uid AND tid = :tid', array(':uid' => $uid, ':tid' => $tid))->fetchField();
    }
  }
  return
$points[$uid][$tid];
}

print (
"Willkommen " . $name);
print (
"Du hast Aktuell " . $points . " Punkte");

?>

  • Anmelden oder Registrieren um Kommentare zu schreiben

Du mußt die Funktionen nicht

Eingetragen von montviso (2188)
am 09.02.2015 - 13:30 Uhr

Du mußt die Funktionen nicht komplett übernehmen, sondern nur ausgeben.

Das wäre dann in etwas sowas:

<?php
global $user;
$username = $user->name;
$userid = $user->uid;
$userpoints = userpoints_get_current_points($userid, 'all');

print
"Willkommen ". $username.<br>Du hast ".$userpoints." Punkte.";
?>

  • Anmelden oder Registrieren um Kommentare zu schreiben

Ah ok. Das ist natürlich ne

Eingetragen von Mystery (63)
am 09.02.2015 - 13:35 Uhr

Ah ok. Das ist natürlich ne bessere Variante.

Danke für die Zusammenfassung der Funktion :-)

  • Anmelden oder Registrieren um Kommentare zu schreiben

Benutzeranmeldung

  • Registrieren
  • Neues Passwort anfordern

Aktive Forenthemen

  • Как войти на сайт 1win и начать играть в онлайн казино и ставки на спорт, простые инструкции для новичков и опытных игроков.
  • Advertising Modul gesucht
  • Mysql Ver 8.0.41 zu MariaDB 10.11.11
  • Drupal 11 neu aufsetzen und Bereiche aus 10 importieren
  • Doppelte Einträge verhindern
  • [abgeschlosen] PHP Composer von Plesk + .bashrc nicht vorhanden
  • Drupal 7 Focal Point – Bild auf Desktop vollständig anzeigen, nur in Responsive zuschneiden
  • ECA validiere Felder mit unlimitierter Eingabe
  • Zugriff auf Webform beschränken/gewähren
  • Drupal 10.4.5 und Bootstrap 3.x.
  • Probleme mit Drupal 10 - HTTP Statuscode 403 (gelöst)
  • View mit mehreren Ansichten, übersteuert nicht
Weiter

Neue Kommentare

  • War Eure Suche erfolgreich?
    vor 7 Stunden 35 Minuten
  • V-Server ..
    vor 1 Woche 17 Stunden
  • ... generelle
    vor 1 Woche 17 Stunden
  • oder..
    vor 2 Wochen 1 Tag
  • Also ich will dich ja nicht
    vor 2 Wochen 2 Tagen
  • nochmal MariaDB vs Mysql
    vor 2 Wochen 2 Tagen
  • Vielen Dank - feedback zu den Videos
    vor 3 Wochen 6 Tagen
  • Falls dieses Thema noch mal
    vor 4 Wochen 2 Tagen
  • Prima, dann schreib bitte
    vor 4 Wochen 3 Tagen
  • Ah perfekt. Es hat an der
    vor 4 Wochen 3 Tagen

Statistik

Beiträge im Forum: 249989
Registrierte User: 20271

Neue User:

  • KeilyLelm
  • CharlestydaY
  • Darrenwem

» Alle User anzeigen

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