Startseite
  • » Home
  • » Handbuch & FAQ
  • » Forum
  • » Übersetzungsserver
  • » Suche
Startseite › Forum › Drupalcenter.de › Allgemeines zu Drupal ›

Tokens innerhalb von Themes benutzen?

Eingetragen von drupaler3000 (78)
am 21.08.2008 - 13:56 Uhr in
  • Allgemeines zu Drupal
  • Drupal 5.x oder neuer

Ich möchte gerne ein Token in meinem Template benutzen! Das Token Modul habe ich natürlich installiert.

Dazu habe ich mal die Api des Tokens Moduls durchforstet und das richtige ist glaube ich das:

token_get_values($type = 'global', $object = NULL)

Dabei kriegt man dann soetwas:

stdClass Object {
[tokens] => array(
[0] => mytoken1,
[1] => mytoken2
),
[values] => array(
[0] => value1,
[1] => value2,
)
}

Nun möchte ich den Token, [term-id], dass heißt die Funktion dieses Tokens in meinem Template verwenden. Es gibt mir die "ID of top taxonomy term". Also die tid des ersten Taxonomy terms.

Diese tid möchte ich für eine Funktion aus einem anderen thread(http://www.drupalcenter.de/node/12082) verwenden, ich habe bereits die ersten Schritte gewagt:

<?php
$term_values
= token_get_values($type = 'global', $object = NULL);
$average = custom_average_xy($values['term-id']);
?>

Leider kommt eine Fehlermeldung: Das Script sagt mir dann, es könnte das stdClass Object nicht als Array nutzen. Wie muss ich dann vorgehen?

‹ Wie erstellt ein Admin pro User eine Seite, die nur dieser User sehen kann/darf/soll? Autor nicht anzeigen ›
  • Anmelden oder Registrieren um Kommentare zu schreiben

drupaler3000 schrieb Dabei

Eingetragen von McGo (145)
am 21.08.2008 - 14:35 Uhr
drupaler3000 schrieb

Dabei kriegt man dann soetwas:

stdClass Object {
[tokens] => array(
[0] => mytoken1,
[1] => mytoken2
),
[values] => array(
[0] => value1,
[1] => value2,
)
}

Ok, daran siehst du, dass die Rückgabe kein Array, sondern ein Objekt ist (stdClass Object). Auch wenn print_r das etwas array-like darstellt.

drupaler3000 schrieb

<?php
$term_values
= token_get_values($type = 'global', $object = NULL);
$average = custom_average_xy($values['term-id']);
?>

Leider kommt eine Fehlermeldung: Das Script sagt mir dann, es könnte das stdClass Object nicht als Array nutzen. Wie muss ich dann vorgehen?

Na klar, du sprichst das Objekt $values ja auch als Array und nicht als Objekt an. Probier mal:

<?php
$term_values
= token_get_values($type = 'global', $object = NULL);
$average = custom_average_xy($term_values->term-id);
?>

  • Anmelden oder Registrieren um Kommentare zu schreiben

Es kommt zwar keine

Eingetragen von drupaler3000 (78)
am 21.08.2008 - 14:55 Uhr

Es kommt zwar keine Fehlermeldung, aber es gibt auch leider nichts aus...

Ich habe es ja auch schon probiert mit array davor oder is_array.

Ich habe es halt mit $values['term-id'], weil es so auch im modul definiert ist:

<?php

// And now taxonomy, which is a bit more work. This code is adapted from
      // pathauto's handling code; it's intended for compatability with it.
     
if (module_exists('taxonomy') && !empty($node->taxonomy) && is_array($node->taxonomy)) {
        foreach (
$node->taxonomy as $term) {
         
$original_term = $term;
          if ((object)
$term) {
           
// With freetagging it's somewhat hard to get the tid, vid, name values
            // Rather than duplicating taxonomy.module code here you should make sure your calling module
            // has a weight of at least 1 which will run after taxonomy has saved the data which allows us to
            // pull it out of the db here.
           
if (!isset($term->name) || !isset($term->tid)) {
             
$vid = db_result(db_query("SELECT t.vid FROM {term_node} r INNER JOIN {term_data} t ON r.tid = t.tid INNER JOIN {vocabulary} v ON t.vid = v.vid WHERE r.nid = %d ORDER BY v.weight, t.weight, t.name LIMIT 1", $object->nid));
              if (!
$vid) {
                continue;
              }
             
$term = db_fetch_object(db_query("SELECT t.tid, t.name FROM {term_data} t INNER JOIN {term_node} r ON r.tid = t.tid WHERE t.vid = %d AND r.nid = %d ORDER BY weight LIMIT 1", $vid, $object->nid));
             
$term->vid = $vid;
            }

           
// Ok, if we still don't have a term name maybe this is a pre-taxonomy submit node
            // So if it's a number we can get data from it
           
if(!isset($term->name) && is_array($original_term)) {
             
$tid = array_shift($original_term);
              if (
is_numeric($tid)) {
               
$term = taxonomy_get_term($tid);
              }
            }
           
$values['term'] = check_plain($term->name);
           
$values['term-raw'] = $term->name;
           
$values['term-id'] = $term->tid;
           
$vid = $term->vid;

            if(!empty(
$vid)) {
             
$vocabulary = taxonomy_get_vocabulary($vid);
             
$values['vocab'] = check_plain($vocabulary->name);
             
$values['vocab-raw'] = $vocabulary->name;
             
$values['vocab-id'] = $vocabulary->vid;
            }
            break;
          }
        }
      }
     
// It's possible to leave that block and still not have good data. 
      // So, we test for these and if not set, set them.
     
if (!isset($values['term'])) {
       
$values['term'] = '';
       
$values['term-raw'] = '';
       
$values['term-id'] = '';
       
$values['vocab'] = '';
       
$values['vocab-raw'] = '';
       
$values['vocab-id'] = '';
      }

      break;
  }
 
  return
$values;
?>

Könnte man vielleicht einfach diese Funktion nutzen(token_node.inc), oder damit eine neue Funktion definieren, und praktisch die Funktion des tokens noch mal selber definieren?

  • Anmelden oder Registrieren um Kommentare zu schreiben

Ich habe es gerade nochmal

Eingetragen von drupaler3000 (78)
am 21.08.2008 - 16:05 Uhr

Ich habe es gerade nochmal direkt ausgegeben, und er gibt nicht NICHTS aus, sondern 0! ...

  • Anmelden oder Registrieren um Kommentare zu schreiben

Benutzeranmeldung

  • Registrieren
  • Neues Passwort anfordern

Aktive Forenthemen

  • Beim Aufruf einiger Inhalte erhalte ich folgende Fehlermeldung
  • Neuinstallation: vermutlich ein rewrite-Problem
  • Drupal CMS installieren
  • [erledigt]MP3 in Drupal 10 einbinden
  • (gelöst)Drupal 11 installieren
  • Titel ausblenden
  • Ich brauche dringen Hilfe zu Updates oder ggf. wwie geht Composer?
  • Dynamische Ansicht von Seiteninhalt (als Tabelle?)
  • Vergabe von Berechtigungen für bestimmte Rollen; mir fehlt der Haken bzw. das „Veröffentlicht“
  • Medien und andere Daten mit Feeds von Drupal 7 auf Drupal 10 migrieren
  • Rolle erstellen nicht zu finden
  • für drupal11 ein Slider Modul
Weiter

Neue Kommentare

  • Gefunden
    vor 6 Wochen 5 Tagen
  • Vielen Dank für die ausführlichen Hinweise...
    vor 7 Wochen 2 Tagen
  • Mögliche Ursachen und nächste Schritte
    vor 7 Wochen 2 Tagen
  • Was für einen Server benutzt
    vor 9 Wochen 5 Tagen
  • Wenn die Subdomain auf
    vor 10 Wochen 14 Stunden
  • ordnerstruktur
    vor 10 Wochen 1 Tag
  • Die Subdomain muß auf den
    vor 10 Wochen 3 Tagen
  • Verwende doch das Tag dafür,
    vor 13 Wochen 5 Tagen
  • Guckst du hier: step by step
    vor 13 Wochen 4 Tagen
  • Guckst du hier: step by step
    vor 13 Wochen 4 Tagen

Statistik

Beiträge im Forum: 250294
Registrierte User: 20542

Neue User:

  • Kupit_hiPi
  • Thomasbxh
  • Kupit_qsPi

» Alle User anzeigen

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