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 - 12: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 - 13: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 - 13: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 - 15: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

  • gepatchte PHP Version 7.4 für Windows
  • Canvas Palette: Eine fertige Komponentenbibliothek für Drupal Canvas
  • Hilfe zu Updates oder Composer
  • Vergleich Drupal und Contao
  • [geloest] Blocks in Bootstrap nebeneinander darstellen und nicht untereinander
  • DrupalCamp Frankfurt 27-28 November 2026
  • Bitte mein Bentzerkonto löschen
  • 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
Weiter

Neue Kommentare

  • Muss ja nicht genau php 8.3 sein
    vor 5 Tagen 32 Minuten
  • Guten morgen und Danke
    vor 5 Tagen 7 Stunden
  • Evtl. versuchen auf PHP 8 zu wechseln
    vor 5 Tagen 13 Stunden
  • Danke Schmittrich. Die Frage
    vor 1 Woche 5 Stunden
  • Keine Antwort auf die Frage nach dem Woher
    vor 1 Woche 7 Stunden
  • Danke ich werde mir die
    vor 6 Wochen 5 Tagen
  • Vielen Dank für Ihren
    vor 7 Wochen 18 Stunden
  • Composer ist sehr ratsam
    vor 7 Wochen 2 Tagen
  • Vielen Dank für den
    vor 7 Wochen 5 Tagen
  • Die alten CMS Vergleiche von contentmanager.de
    vor 7 Wochen 5 Tagen

Statistik

Beiträge im Forum: 250323
Registrierte User: 20572

Neue User:

  • alxshell
  • AnthonyhoF
  • Philiphelve

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