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

[gelöst]Link auf Node -> Colorbox tauglich machen

Eingetragen von Bernsch (243)
am 16.02.2012 - 22:06 Uhr in
  • Themes & Theming
  • Drupal 7.x oder neuer

Hallo!

Ich habe einen Block-View erstellt wo ich die nächsten Termine aufliste...
Im FullCalendar gehen die Veranstaltungen (die ich mit dem Inhaltstype "Events" erstelle) in einer Colorbox auf. (das kann man im View beim FullCalendar so einstellen.)

Ich hätte aber auch gerne dass die Termine in meinem Block-View ebenfalls in einer Colorbox aufgehen.
Die Termien werden in einer Liste angezeigt. Der Titel im View-Block ist ebenso wie beim FullCalendar View (= Kalenderansicht) auf den Event-Node verlinkt...

Habe beim Block-View schon versucht den Titel eine Klasse "colorbox" zu geben. (wie es im WYSIWYG-Editor ja teilweise mit Bildern funktioniert...). Leider hat das bei einem Text-Link in meinem Block-View "Termine" nicht geklappt...

Jemand eine Idee?

‹ Contentfield "Langer Text" als Liste ausgeben [gelöst] Forum Templates überschreiben ›
  • Anmelden oder Registrieren um Kommentare zu schreiben

Colorbox für Nodes

Eingetragen von stBorchert (6003)
am 17.02.2012 - 08:41 Uhr

Hallo.
Hast Du eher Probleme, den Links die Klasse "colorbox" hinzuzufügen, oder das die Nodes nicht in der colorbox geöffnet werden?
Letzteres funktioniert nämlich nicht ganz so einfach.

Zufälligerweise hatte ich das gestern erst bei einem Projekt gemacht.

1. in einem eigenen Modul einen Field-Formatter definieren (in diesem Fall für node_reference-Felder):

<?php
/**
* Implements hook_field_formatter_info();
*/
function nodesincolorbox_field_formatter_info() {
 
$formatter = array();
  if (
module_exists('colorbox')) {
   
// Define a new field formatter to open nodes in colorbox.
   
$formatter['nodesincolorbox_colorbox_node'] = array(
     
'label' => t('Title (Colorbox)'),
     
'description' => t('Display the title of the referenced node as a link to open the node with colorbox.'),
     
'field types' => array('node_reference'),
    );
  }
  return
$formatter;
}
?>

2. hook_field_formatter_prepare_view() und hook_field_formatter_view() definieren:

<?php

/**
* Implements hook_field_formatter_prepare_view().
*/
function nodesincolorbox_field_formatter_prepare_view($entity_type, $entities, $field, $instances, $langcode, &$items, $displays) {
 
// Let nodereference module handle the formatter preparation.
 
node_reference_field_formatter_prepare_view($entity_type, $entities, $field, $instances, $langcode, $items, $displays);
}

/**
* Implements hook_field_formatter_view().
*/
function nodesincolorbox_field_formatter_view($entity_type, $entity, $field, $instance, $langcode, $items, $display) {
 
$settings = $display['settings'];
 
$result = array();

  switch ($display['type']) {
    case
'nodesincolorbox_colorbox_node':
      foreach (
$items as $delta => $item) {
        if (
$item['access']) {
         
$node = $item['node'];
         
$label = entity_label('node', $node);
         
$uri = entity_uri('node', $node);
         
$result[$delta] = array(
           
'#type' => 'link',
           
'#title' => $label,
           
'#href' => $uri['path'] . '/colorbox', // Add path element.
           
'#options' => $uri['options'],
           
'#attributes' => array(
             
'class' => array('colorbox-load'), // Add class for colorbox.
           
),
          );
          if (!
$node->status) {
           
$result[$delta]['#prefix'] = '<span class="node-unpublished">';
           
$result[$delta]['#suffix'] = '</span>';
          }
        }
      }
      break;
  }

  return $result;
}
?>

3. in der template.php neue Template-Suggestions für den colorbox-Popup hinzufügen:

<?php

/**
* Override variables used in html templates.
*/
function mytheme_preprocess_html(&$vars) {
 
$args = arg();
 
// Last path element equals "colorbox"?
 
$colorbox = (array_pop($args) == 'colorbox') ? TRUE : FALSE;
  if (
$colorbox) {
   
// Add template suggestions for popups.
   
$vars['theme_hook_suggestions'][] = 'html__colorbox';
  }
}

/**
* Override variables used in html templates.
*/
function mytheme_preprocess_page(&$vars) {
 
$args = arg();
 
// Last path element equals "colorbox"?
 
$colorbox = (array_pop($args) == 'colorbox') ? TRUE : FALSE;
  if (
$colorbox) {
   
// Add template suggestions for popups.
   
$vars['theme_hook_suggestions'][] = 'page__colorbox';
  }
}
?>

4. die Templates html--colorbox.tpl.php und page--colorbox.tpl.php erstellen:

<?php
/**
* @file html--colorbox.tpl.php
*/
print $page;
?>
<?php
/**
* @file page-colorbox.tpl.php
* Page template for colorbox.
*/
?>

<?php print render($title_prefix); ?>
<?php if ($title): ?>
  <h1 class="title" id="page-title">
    <?php print $title; ?>
  </h1>
<?php endif; ?>
<?php print render($title_suffix); ?>
<?php print render($page['content']); ?>
?>

5. Einstellung in colorbox setzen (unter admin/config/media/colorbox):

Danach kann man für die entsprechenden Felder den erstellten Formatter auswählen und die Nodes werden in einer Colorbox geladen.

  • Anmelden oder Registrieren um Kommentare zu schreiben

REWRITE RESULTS

Eingetragen von Bernsch (243)
am 18.02.2012 - 19:34 Uhr

Danke Stefan für deine ausführliche und sicherlich auch funktionierende Lösung! Hm.. ich tu mich hald ein bischen schwer weil ich noch nie ein Modul geschrieben habe... Das wird dan wohl mein erstes werden gg ;-) Naja.. mal schaun... ich werde mich mal mit dem Thema befassen (wenn ich dann endlich mal Zeit habe) und mich wieder melden...

Ich habe noch etwas anderes probiert das leider "nur FAST" geklappt hat. Und zwar habe ich im View unter dem Feld - in meinem Fall - dem Titel unter REWRITE RESULTS --> Dieses Feld als Link ausgeben folgendes angebene: Linkpfad: [current-page:url] und bei Klasse für Links: Colorbox eingegeben.

Jetzt macht es zwar die Colorbox auf wenn ich auf den Titel draufklicke - es erscheint aber nru ein weisses Fenster mit dem schließen Butten rechts unten und KEIN Inhalt. Es rührt sich aber auch nichts wenn man mit der Maus draufklickt oder in den abgedunkelten Bereich klickt. Ich muss die Seite Neu laden damit ich den "eingefrorenen Zustand" weg bekomme... Aber es hätte fast geklappt ggg

Naja.. dann werd ich mich wohl mal an deinen Code halten müssen :-) ...

lg, bernsch

  • Anmelden oder Registrieren um Kommentare zu schreiben

noch ein paar Fragen

Eingetragen von Bernsch (243)
am 24.02.2012 - 12:23 Uhr
stBorchert schrieb

1. in einem eigenen Modul einen Field-Formatter definieren (in diesem Fall für node_reference-Felder):.

Schreib ich das in die meinmodul.module Datei?
Wo ist in deinem Code der Modulname? --> nodesincolorbox? (ist das dein Modulname?)

stBorchert schrieb

2. hook_field_formatter_prepare_view() und hook_field_formatter_view() definieren:

Wo definiere ich diesen Code bzw. wo erstelle ich diesen Code. (in meinmodul.module ?

stBorchert schrieb

3. in der template.php neue Template-Suggestions für den colorbox-Popup hinzufügen:

Hier geh ich davon aus, dass ich das 1:1 in meine template.php übernehmen kann

stBorchert schrieb

4. die Templates html--colorbox.tpl.php und page--colorbox.tpl.php erstellen:

Soweit OK --> übernehme den Code 1:1 in die neu erstellen tempaltes

stBorchert schrieb

5. Einstellung in colorbox setzen (unter admin/config/media/colorbox):

soweit OK :-)

Danke für deine Hilfe!!!

  • Anmelden oder Registrieren um Kommentare zu schreiben

Modul

Eingetragen von stBorchert (6003)
am 24.02.2012 - 12:44 Uhr
Bernsch schrieb

... Field-Formatter definieren ... Schreib ich das in die meinmodul.module Datei?

Ja, genau. In diesem Fall also in nodesincolorbox.module.

Bernsch schrieb

Wo ist in deinem Code der Modulname? --> nodesincolorbox? (ist das dein Modulname?)

Korrekt.

Bernsch schrieb

... hook_field_formatter_prepare_view()...
Wo definiere ich diesen Code bzw. wo erstelle ich diesen Code. (in meinmodul.module ?

Ja, genau da.

Bernsch schrieb

Hier geh ich davon aus, dass ich das 1:1 in meine template.php übernehmen kann

Wenn Dein Theme "mytheme" heisst, dann ja. Ansonsten musst Du "mytheme" noch mit dem Namen Deines Themes ersetzen. Eventuell gibt es bereits Funktionen mit den Namen, dann musst Du diese bestehenden Funktionen mit dem Code erweitern.

Tipp: http://drupal.org/node/1074360

  • Anmelden oder Registrieren um Kommentare zu schreiben

GELÖST

Eingetragen von Bernsch (243)
am 11.06.2012 - 10:23 Uhr

Ich denke das ganze hat sich mit dem Modul colorbox_node erledigt :-) !
lg

  • Anmelden oder Registrieren um Kommentare zu schreiben

Noch nicht ganz...

Eingetragen von KreativManagement (32)
am 23.11.2012 - 19:10 Uhr

Hallo, nun hat sich auch bei mir mit http://drupal.org/project/colorbox_node einiges erledigt.

Aber leider habe ich das Problem das ich einer Grafik im View nicht die entsprechende class zuordnen kann. Ich will die grafik zum zum inhalt in der colorbox darstellen. klappt nicht... weiss nicht wie... Auch die hochgeladene Grafik kann ich nicht mit einer class versehen... oder wie geht das... ohne in den themes code oder so herumzuspielen?

  • Anmelden oder Registrieren um Kommentare zu schreiben

hallo

Eingetragen von KreativManagement (32)
am 23.11.2012 - 19:16 Uhr

das klappt bei mir nicht.... [current-page:url] funktioniert nicht... muss ich das anders schreiben..?

  • 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 1 Woche 1 Tag
  • Hey danke
    vor 1 Woche 1 Tag
  • Update: jetzt gibt's ein
    vor 1 Woche 2 Tagen
  • Hallo, im Prinzip habe ich
    vor 1 Woche 6 Tagen
  • Da scheint die Terminologie
    vor 2 Wochen 1 Stunde
  • Kannst doch auch alles direkt
    vor 2 Wochen 4 Tagen
  • In der entsprechenden View
    vor 2 Wochen 4 Tagen
  • Dazu müsstest Du vermutlich
    vor 2 Wochen 4 Tagen
  • gelöst
    vor 5 Wochen 21 Stunden
  • Ja natürlich. Dass ist etwas,
    vor 5 Wochen 1 Tag

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 11 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