Startseite
  • » Home
  • » Handbuch & FAQ
  • » Forum
  • » Übersetzungsserver
  • » Suche
Startseite › Forum › Drupalcenter.de › Anfängerfragen ›

[gelöst] Template.php - Eigenen Link in Nodelinks-Bereich einbinden

Eingetragen von dercheffe (87)
am 24.08.2013 - 13:56 Uhr in
  • Anfängerfragen
  • Drupal 7.x oder neuer

Hallo zusammen,

auf meiner Website möchte ich gerne in den "Node Links" (an der Stelle ist auch der "Neuen Kommentar schreiben"-Link zu finden) eines bestimmten Inhaltstyps (bei mir "Hotel") einen eigenen Link hinzufügen.
Aber nur dann, wenn der eingeloggte Nutzer mindestens eine von drei Nutzerrollen besitzt (bei mir "Privatnutzer", "Hotelier" und "administrator").
Nach verschiedenen Recherchen im Netz hab ich mir jetzt mal folgende Function zusammengestrickt:

<?php

function globewheeler_node_view_alter(&$build) {
    
if (
$build['#bundle'] == 'hotel'){  
    global
$user;
    if ( (
in_array('Hotelier', $user->roles)) or (in_array('Privatnutzer', $user->roles)) or (in_array('administrator', $user->roles)) ) {
   
   
$build['links']['node']['#links']['add-hotel-image'] = array(
   
'title' => t('Upload a hotel image'),
   
'href' => 'node/add/hotelbild',
   
'html' => TRUE,
   
'attributes' => array(
     
'title' => t('Upload a new hotel image!'),
     
'query' => array('param1' => '10'),
     ),
   );

  }
}
}
?>

Ich habe versucht, hier eine Parameterübergabe einzubauen, die an den Link angehängt werden soll. Diese wird aber einfach ignoriert. Ansonsten funktioniert die Generierung des Links einwandfrei.
Ist der Query-Filter unzulässig? In der API konnte ich leider keine Lösung finden. Hat jemand eine Idee wo mein Fehler stecken könnte?

Danke schon mal für eure Hilfe.

‹ Mehrsprachigkeit - Sprachumschalter [gelöst] Template.php - Eigenen Link in Nodelinks-Bereich einbinden ›
  • Anmelden oder Registrieren um Kommentare zu schreiben

Ich wuerde es mal mit

Eingetragen von quiptime (4972)
am 25.08.2013 - 09:33 Uhr

Ich wuerde es mal mit globewheeler_preprocess_node(&$variables) versuchen.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Danke für den Tipp. Hab es

Eingetragen von dercheffe (87)
am 25.08.2013 - 16:45 Uhr

Danke für den Tipp. Hab es mal damit versucht, kann aber von der Funktion aus - so wie mir scheint - nicht auf die Links zugreifen (zumindest wirft mir

<?php
kpr
($variables['node']);
?>
. nichts passendes aus).
Wenn ich
<?php
kpr
($variables);
?>
ausführen will, bekomme ich einen memory-Limit-Fehler von Krumo bzw. PHP angezeigt.

Wenn ich in meinem Code-Beispiel (vom Erstbeitrag dieses Threads) die Parameter einfach an den Link ranhänge (etwa so : 'href' => 'node/add/hotelbild?param1=wert1',), werden das Fragezeichen und das Gleichheitszeichen in hotelbild%3Fparam1%3Dwert1 umgewandelt.

Mein Code basiert auf dem Beispiel von hier. Das mit der Parameterübergabe hab ich von hier. Kann zwar grundsätzlich PHP, aber sich in die API von D 7 reinzudenken ist echt nicht ohne.

Gibt es evtl. noch eine Lösung?

  • Anmelden oder Registrieren um Kommentare zu schreiben

Hab es jetzt mal mit preprocess_node probiert

Eingetragen von dercheffe (87)
am 06.09.2013 - 15:31 Uhr

Hallo zusammen,

konnte jetzt mein Code-Beispiel auf preprocess_node umschreiben, leider ohne Erfolg.

Hier mein Code:

<?php

function globewheeler_preprocess_node(&$variables, $hook) {

    global
$user;
    if ( (
in_array('Hotelier', $user->roles)) or (in_array('Privatnutzer', $user->roles)) or (in_array('administrator', $user->roles)) ) {
       
   
$variables['content']['links']['node']['#links']['add-hotel-image'] = array(
   
'title' => t('Upload a hotel image'),
   
'href' => 'node/add/hotelbild',
   
'html' => TRUE,
   
'attributes' => array(
     
'title' => t('Upload a new hotel image!'),
     
'query' => array(
         
'param1' => '10'
         
) 
     ),
   );

  }
      
}

?>

Ohne $get-Parameter am Link ist alles prima. Nur sobald ich versuche einen Parameter dranzuhängen (Parameterschlüssel ist "param1", der Wert ist "10") wird dieser einfach ignoriert. So langsam bin ich echt ratlos. Hat keiner eine Idee?

Danke und Grüße

  • Anmelden oder Registrieren um Kommentare zu schreiben

'html' => TRUE falsch platziert

Eingetragen von quiptime (4972)
am 06.09.2013 - 15:42 Uhr

Die Verwendung von

<?php
'html' => TRUE,
?>
ist falsch.

Siehe Link zur API l() Funktion.

Kannst Du weglassen wenn der Link nur Text ist.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Danke dir, hab ich jetzt

Eingetragen von dercheffe (87)
am 06.09.2013 - 16:12 Uhr

Danke dir, hab ich jetzt entfernt.

Der Link-Bereich in den Nodes wird ja über theme_links() generiert.

Wenn ich die API-Doku richtig verstanden habe, wird ja der Link vom "href"-Teil an die l()-Funktion zum parsen übergeben.
Die l()-Funktion wiederum lässt im "attributes"-Teil Parameter aus der url()-Funktion zu.

Zitat:

Additional $options elements used by the url() function.

.
Somit sollte eigentlich der "query"-Parameter für get-Werte zulässig sein oder? Ist meine Syntax hier irgendwie falsch? Kann natürlich auch sein, dass ich den Wald vor lauter Bäumen nicht sehe ;)

  • Anmelden oder Registrieren um Kommentare zu schreiben

Jetzt hab ich's :)

Eingetragen von dercheffe (87)
am 06.09.2013 - 16:53 Uhr

Mit diesem Code geht es jetzt *freu*:

<?php

function globewheeler_preprocess_node(&$variables, $hook) {

    global
$user;
    if ( (
in_array('Hotelier', $user->roles)) or (in_array('Privatnutzer', $user->roles)) or (in_array('administrator', $user->roles)) ) {
       
   
$variables['content']['links']['node']['#links']['add-hotel-image'] = array(
   
'title' => t('Upload a hotel image'),
   
'href' => 'node/add/hotelbild',
   
'attributes' => array(
     
'title' => t('Upload a new hotel image!')
        ),
   
'query' => array(
       
'param1' => 'wert1'
       
), 
   );  
  }
}
?>

Mein Fehler war, dass der 'query'-Teil nicht im 'attributes'-Array verschachtelt ist. Danke nochmal an alle, die mir geholfen haben!

Viele Grüße
Philipp

  • Anmelden oder Registrieren um Kommentare zu schreiben

Benutzeranmeldung

  • Registrieren
  • Neues Passwort anfordern

Aktive Forenthemen

  • 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
  • Welche KI verwendet ihr?
  • Update Manger läst sich nicht Installieren
Weiter

Neue Kommentare

  • melde mich mal wieder, da ich
    vor 6 Tagen 5 Stunden
  • Hey danke
    vor 1 Woche 41 Minuten
  • Update: jetzt gibt's ein
    vor 1 Woche 18 Stunden
  • Hallo, im Prinzip habe ich
    vor 1 Woche 5 Tagen
  • Da scheint die Terminologie
    vor 1 Woche 5 Tagen
  • Kannst doch auch alles direkt
    vor 2 Wochen 2 Tagen
  • In der entsprechenden View
    vor 2 Wochen 2 Tagen
  • Dazu müsstest Du vermutlich
    vor 2 Wochen 2 Tagen
  • gelöst
    vor 4 Wochen 6 Tagen
  • Ja natürlich. Dass ist etwas,
    vor 5 Wochen 1 Stunde

Statistik

Beiträge im Forum: 250233
Registrierte User: 20450

Neue User:

  • Mroppoofpaync
  • 4aficiona2
  • AppBuilder

» 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 23 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