Startseite
  • » Home
  • » Handbuch & FAQ
  • » Showroom
  • » Forum
  • » Drupalchannel
  • » Übersetzungsserver
  • » Suche
Startseite › Forum › Drupalcenter.de › Module › CCK und Views ›

Taxonomy mit Views anpassen!?

Eingetragen von Junker (95)
am 30.01.2008 - 09:48 Uhr in
  • CCK und Views
  • Drupal 5.x oder neuer

Moin,

Habe in der Taxonomy einige Vokabulare mit verschiedenen Begriffen.

Vokabular1
-Begriff1
-Begriff2
...

Vokabular2
-Begriff1
-Begriff2
...

usw

Nun möchte ich mit Views die Node-Ansicht BESTIMMTER Vokabulare anders anzeigen. (Also beim Klicken auf einen Taxonomy-Begriff, soll eine "List-View" anstatt der standardmäßigen "Teaser-List" angezeigt werden.
Wichtig ist mir hierbei, dass sich das NUR AUF BESTIMMTE Vokabulare auswirkt. In meinem Beispiel nur auf die Taxonomybegriffe meines Inhaltstypen X und NICHT auf die Blog-Taxonomy.

Irgendwie bekomme ich das nicht hin, deshalb hier meine Gedankengänge:

1. Unter Views die Voreinstellung "taxonomy_term" einschalten und eine Views hinzufügen. Dadurch werden alle Taxonomy-Views überschrieben.

2. In den sich nun öffnenden Views-Einstellungen habe ich folgende Änderungen vorgenommen:

Problem: Diese Änderungen wirken sich auf ALLE Begriffe ALLER Vokabulare aus.

Frage: Wie kann diese Ansicht nur für BESTIMMTE Vokabulare / Begriffe beschränken??????

Danke für eure Hilfe!

‹ Views Member-Liste und Profil Checkboxen Fivestar und Views ›
  • Anmelden oder Registrieren um Kommentare zu schreiben

Vielleicht kommst Du mit dem

Eingetragen von derhasi (221)
am 30.01.2008 - 09:56 Uhr

Vielleicht kommst Du mit dem VIEWS-Argument-Handling Code weiter. (unter den Argumenten zu finden)

undpaul

  • Anmelden oder Registrieren um Kommentare zu schreiben

Junker schrieb Frage: Wie

Eingetragen von ugerhard (59)
am 30.01.2008 - 09:57 Uhr
Junker schrieb

Frage: Wie kann diese Ansicht nur für BESTIMMTE Vokabulare / Begriffe beschränken??????

Das müsste mit einer Kombination aus einem View und dem Taxonomy Redirect Modul möglich sein:

http://drupal.org/project/taxonomy_redirect

  • Anmelden oder Registrieren um Kommentare zu schreiben

Mit dem Redirect modul

Eingetragen von Junker (95)
am 30.01.2008 - 10:20 Uhr

Mit dem Redirect modul funktioniert es nicht.

Und von Argument-Code habe ich keine Ahnung :(

  • Anmelden oder Registrieren um Kommentare zu schreiben

Weiß einfach nicht

Eingetragen von Junker (95)
am 30.01.2008 - 16:22 Uhr

Weiß einfach nicht weiter...
Sitz schon zwei Tage vor diesem Problem und komme nicht weiter...

Wäre super, wenn noch jemand einen Rat geben könnte...

  • Anmelden oder Registrieren um Kommentare zu schreiben

Eine Idee: Theming

Eingetragen von derhasi (221)
am 30.01.2008 - 17:41 Uhr

Eine Idee: Theming
Für taxonomy/term nun eine neue template seite generieren - bin mir nicht sicher, könnte aber dann so aussehen
page-taxonomy-term.tpl.php

Und dort dann abhängig vom term bzw dessen Vokabular mit theme_views, das eine oder andere VIEW ausgeben.

<?php
$id
= arg(2); //arg(0) = 'taxonomy', arg(1) = 'term'
$term = taxonomy_get_term($tid)
if (
$term->vid == 1){
 
theme_views('taxview1',...);
}
else{
 
theme_views('taxviewsonst',...);
}
?>

undpaul

  • Anmelden oder Registrieren um Kommentare zu schreiben

Hab keine Ahnung wie ich das

Eingetragen von Junker (95)
am 30.01.2008 - 19:24 Uhr

Hab keine Ahnung wie ich das konkret machen soll :(

  • Anmelden oder Registrieren um Kommentare zu schreiben

Welches Theme benutzt Du denn?

Eingetragen von derhasi (221)
am 30.01.2008 - 19:52 Uhr

Welches Theme benutzt Du denn? ... bzw. Template?

http://drupal.org/node/104316

undpaul

  • Anmelden oder Registrieren um Kommentare zu schreiben

Ich nutze das

Eingetragen von Junker (95)
am 31.01.2008 - 12:08 Uhr

@hasi
Auf diese Seite bin ich auch schon gestoßen, aber wie gesagt... das ist nicht so mein Ding.
Man müßte eine templateseite erstellen, für welche die "taxonomy/term" regeln nicht gelten / oder nur für diese gelten.
Wenn mir das jemand an einem Beispiel erklären könnte, wäre super...
Wenn das zu aufwendig ist, lasse ich mir das auch über Skype oder ICQ erklären.
Skpye: "jimmyjonnyjack"
ICQ: 81116166

Ich nutze das itheme
http://drupal.org/project/itheme

  • Anmelden oder Registrieren um Kommentare zu schreiben

Ich habe jetzt mal der

Eingetragen von derhasi (221)
am 31.01.2008 - 14:28 Uhr

Ich habe jetzt mal der template.php von itheme eine itheme_page()-function hinzugefügt.
Da die standard phptemplate_page dadurch überschrieben wird, musste deren ganzer Code kopiert werden.

Die drupal_add_js-Anweisungen sind noch aus dem orginal itheme template.php:

<?php
drupal_add_js
(drupal_get_path('theme', 'itheme') . '/js/jquery.cookie.js', 'theme');
drupal_add_js('cookiePath = "' . base_path() . '";', 'inline');
drupal_add_js(drupal_get_path('theme', 'itheme') . '/js/itheme.ui.js', 'theme');



function
itheme_page($content, $show_blocks = TRUE) {

 
/* Set title and breadcrumb to declared values */
 
if (drupal_is_front_page()) {
   
$mission = filter_xss_admin(theme_get_setting('mission'));
  }

 
/* Add favicon */
 
if (theme_get_setting('toggle_favicon')) {
   
drupal_set_html_head('<link rel="shortcut icon" href="'. check_url(theme_get_setting('favicon')) .'" type="image/x-icon" />');
  }

 
// Populate sidebars
 
$layout = 'none';
  if (
$show_blocks) {
    global
$sidebar_indicator;
   
/**
     * Sidebar_indicator tells the block counting code to count sidebars separately.
     */
   
$sidebar_indicator = 'left';
   
$sidebar_left = theme('blocks', 'left');
    if (
$sidebar_left != '') {
     
$layout = 'left';
    }

   
$sidebar_indicator = 'right';
   
$sidebar_right = theme('blocks', 'right');
    if (
$sidebar_right != '') {
     
$layout = ($layout == 'left') ? 'both' : 'right';
    }
   
$sidebar_indicator = NULL;
  }

 
// Construct page title
 
if (drupal_get_title()) {
   
$head_title = array(strip_tags(drupal_get_title()), variable_get('site_name', 'Drupal'));
  }
  else {
   
$head_title = array(variable_get('site_name', 'Drupal'));
    if (
variable_get('site_slogan', '')) {
     
$head_title[] = variable_get('site_slogan', '');
    }
  }

 
$variables = array(
   
'base_path'           => base_path(),
   
'breadcrumb'          => theme('breadcrumb', drupal_get_breadcrumb()),
   
'closure'             => theme('closure'),
   
'content'             => $content,
   
'feed_icons'          => drupal_get_feeds(),
   
'footer_message'      => filter_xss_admin(variable_get('site_footer', FALSE)) . "\n" . theme('blocks', 'footer'),
   
'head'                => drupal_get_html_head(),
   
'head_title'          => implode(' | ', $head_title),
   
'help'                => theme('help'),
   
'language'            => $GLOBALS['locale'],
   
'layout'              => $layout,
   
'logo'                => theme_get_setting('logo'),
   
'messages'            => theme('status_messages'),
   
'mission'             => isset($mission) ? $mission : '',
   
'primary_links'       => menu_primary_links(),
   
'search_box'          => (theme_get_setting('toggle_search') ? drupal_get_form('search_theme_form') : ''),
   
'secondary_links'     => menu_secondary_links(),
   
'sidebar_left'        => $sidebar_left,
   
'sidebar_right'       => $sidebar_right,
   
'site_name'           => (theme_get_setting('toggle_name') ? variable_get('site_name', 'Drupal') : ''),
   
'site_slogan'         => (theme_get_setting('toggle_slogan') ? variable_get('site_slogan', '') : ''),
   
'css'                 => drupal_add_css(),
   
'styles'              => drupal_get_css(),
   
'scripts'             => drupal_get_js(),
   
'tabs'                => theme('menu_local_tasks'),
   
'title'               => drupal_get_title()
  );

  if ((
arg(0) == 'node') && is_numeric(arg(1))) {
   
$variables['node'] = node_load(arg(1));
  }

 
// Build a list of suggested template files in order of specificity. One
  // suggestion is made for every element of the current path, though
  // numeric elements are not carried to subsequent suggestions. For example,
  // http://www.example.com/node/1/edit would result in the following
  // suggestions:
  //
  // page-node-edit.tpl.php
  // page-node-1.tpl.php
  // page-node.tpl.php
  // page.tpl.php
 
$i = 0;
 
$suggestion = 'page';
 
$suggestions = array($suggestion);
  while (
$arg = arg($i++)) {
   
$suggestions[] = $suggestion . '-' . $arg;
    if (!
is_numeric($arg)) {
     
$suggestion .= '-' . $arg;
    }
  }
  if (
drupal_is_front_page()) {
   
$suggestions[] = 'page-front';
  }
 
 
//Teil zum auswählen eines Templates für spezielles Vokabular
 
if (arg(0) == 'taxonomy' && arg(1) = 'term' && $id = arg(2)){
     
$term = taxonomy_get_term($tid)
   
$suggestions[] = 'taxonomy-vocabulary-'.$term->vid;
  } 

  return
_phptemplate_callback('page', $variables, $suggestions);
}
?>

Das letzte IF wurde von mir hinzugefügt um der callback noch einen Vorschlag zu übergeben. Der letzte Vorschlag wird anscheinend zuerst bearbeitet, daher dürfte man dann für vokabularspezifische Abfragen auf 'taxonomy/term/...' mit dem taxonomy-vocabulary-*vid*.tpl.php arbeiten können.

Hoffe das klappt.

undpaul

  • Anmelden oder Registrieren um Kommentare zu schreiben

Bin gerade auch noch auf

Eingetragen von derhasi (221)
am 31.01.2008 - 14:40 Uhr

Bin gerade auch noch auf eine vermutlich einfachere Anpassung der template.php gestoßen, indem man den template-variablen einen Wert für template_files oder template_file übergibt (siehe: _phptemplate_callback). Dies geschieht über die _phptemplate_variables (Diesmal wirklich _phptemplate_variables, nicht _itheme_variables):

<?php
function _phptemplate_variables($hook, $vars) {
  if (
$hook == 'page') {

    
//Teil zum auswählen eines Templates für spezielles Vokabular
     
if (arg(0) == 'taxonomy' && arg(1) = 'term' && $id = arg(2)){
         
$term = taxonomy_get_term($tid);
     
$vars['template_files'] = array('taxonomy-vocabulary-'.$term->vid);
    }
    return
$vars;
  }
  return array();
}
?>

So ist es nicht mehr notwendig die komplette phptemplate_page zu überschreiben.

undpaul

  • Anmelden oder Registrieren um Kommentare zu schreiben

Das ist echt zu viel für

Eingetragen von Junker (95)
am 31.01.2008 - 15:44 Uhr

Das ist echt zu viel für mich... Mein Kopf brennt...
Wäre nicht schlecht, wenn mir das jemand erklären könnte...

Um das Problem noch mal konkreter zu beschreiben... Vielleicht gibt es ja noch eine einfachere Lösung:

Die taxonomy/term soll für ALLE Vokabulare gelten, außer

Vokabular "Blogs" (ID: 2)
Begriff 1 "Hunde" (ID: 6)
Begriff 2 "Katzen" (ID: 7)
Begriff 3 "Kleintiere" (ID: 8)
Begriff 4 "Pferde" (ID: 9)
Begriff 5 "Fische" (ID: 10)
Begriff 6 "Sonstiges" (ID: 11)

Vielleicht kann man diese über das template der taxonomy/term ausschließen?

  • Anmelden oder Registrieren um Kommentare zu schreiben

Wenn Du nur den

Eingetragen von derhasi (221)
am 31.01.2008 - 16:27 Uhr
  • Wenn Du nur den Ansichtentyp des Views ändern willst, wird der Argument-HandlingCode der einfachste Weg sein

    <?php
    $term
    = taxonomy_get_term($args[0]);
    if (
    $term->vid == 2)
    {
     
    $view->page_type = 'table'; // for vid = 2 we are showing table view
    }
    else {
     
    $view->page_type = 'teaser';
    }
    // for any other vocabulary we show Teaser view.
    return $args;
    ?>

    Da Vollansicht und Teaser die Angaben der Felder ignorieren, kannst Du diese für eine Tabellenansicht zum Beispiel normal einstellen.

    Mit dem Views Argument Handling Code lassen sich noch viele andere Sachen, Variablenspezifisch einstellen.

    An PHP-Code wirst Du nicht vorbeikommen.

  • Wenn es bei den wenigen Begriffen bleibt (Hund, Pferde,...) kannst Du auch mit Path URL Alias arbeiten.
  • Wenn Du die komplette Seitenasicht ändern willst, musst Du wahrscheinlich trotzdem die Templates bemühen. Mein vorheriger Ansatz war dazu gedacht, dass Du ein spezielles Template (Alternatvie zu page.tpl.php) erstellen kannst um dort einen gewissen Content direkt in diesem Template (z.B. theme_views statt $content) ausgeben zu lassen.
  • Es gibt auch noch das Modul NAT welches über die Erstellung eines Nodes auch die Erstellung eines Taxonomy-Terms verursacht. Für diese gekoppelten Taxonomieterme lässt sich dann eine Umleitung auf diese Nodes realisieren.
    An diese Nodes könnte in der Ansicht auch ein view angehängt werden.

undpaul

  • Anmelden oder Registrieren um Kommentare zu schreiben

> Frage: Wie kann diese

Eingetragen von lemonis@drupal.org (3)
am 12.03.2008 - 12:42 Uhr

> Frage: Wie kann diese Ansicht nur für BESTIMMTE Vokabulare / Begriffe beschränken??????

Kannst du nicht einfach einen Filter auf "Taxonomy: Vocabulary Name" hinzufügen?

  • Anmelden oder Registrieren um Kommentare zu schreiben

Content template

Eingetragen von tiger (348)
am 12.03.2008 - 13:40 Uhr

Ich habe ein ähnliches Problem dem Modul content template gelöst. Da kannst du die Ausgabe einzelner Inhaltstypen anpassen.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Wie hast du das Problem denn

Eingetragen von FuXXz (135)
am 18.05.2009 - 05:04 Uhr

Wie hast du das Problem denn jetzt letzendlich gelöst?

  • Anmelden oder Registrieren um Kommentare zu schreiben

Benutzeranmeldung

  • Registrieren
  • Neues Passwort anfordern

Aktive Forenthemen

  • Probleme bei Import mit Feeds
  • Modul für Absatznummern / Randnummern
  • [gelöst] RSS verursacht XML-Interpretation fehler
  • [CEBIT] Die CeBIT-Quadratur des Drupal-Kreises?
  • [gelöst]Whitespace vor HTML-Head auf jeder Seite
  • Live Ticker
  • 1052 Column 'status' in where clause is ambiguous
  • Nur ein Bild pro Node ausgeben
  • Heartbeat und Facebook Style Status
  • Taxonomy Menu und D7.12DE
  • Danland: Standard-Startseite formatieren
  • Probleme mit dem Modul "Menu Block"
Weiter

Neue Kommentare

  • Mein Admin hat gerade gesagt
    vor 4 Minuten 12 Sekunden
  • body-Tag
    vor 9 Minuten 19 Sekunden
  • Fehler gefunden
    vor 16 Minuten 43 Sekunden
  • Doodle geht nicht
    vor 19 Minuten 18 Sekunden
  • Fehler gefunden
    vor 20 Minuten 7 Sekunden
  • Nichts ersichtlich
    vor 25 Minuten 27 Sekunden
  • Habe ich noch nicht, werde
    vor 26 Minuten 2 Sekunden
  • Danke!
    vor 36 Minuten 23 Sekunden
  • Korrekt
    vor 41 Minuten 5 Sekunden
  • Es gibt in Views 3 bei den
    vor 45 Minuten 56 Sekunden

Statistik

Beiträge im Forum: 173884
Registrierte User: 15477

Neue User:

  • habicht09
  • Gruenkohl
  • siggiich

» Alle User anzeigen

User nach Punkten sortiert:
stBorchert5515
quiptime4713
Tobias Bähr3874
wla3800
md3776
bv3700
Thoor3678
Alexander Langer3282
dereine2635
Exterior2571
» User nach Punkten
Zur Zeit sind 16 User und 60 Gäste online.

Benutzer online

  • Rustyspoon
  • md
  • Kirsten1965
  • richy
  • pik
  • Alex v. B.
  • coastbike
  • mikeeve
  • nickstedt
  • Frank Ralf
  • x-lette@drupal.org
  • jfmyself
  • olivers
  • Bogus
  • alex1981
  • bv

Hauptmenü

  • » Home
  • » Handbuch & FAQ
  • » Showroom
  • » Forum
  • » Drupalchannel
  • » Ü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
  • Bücherecke

Quicklinks III

  • Tipps & Tricks
  • Drupal Theme System
  • Theme Handbuch
  • Leitfaden zur Entwicklung von Modulen

RSS & Twitter

  • Drupal Planet deutsch
  • RSS Feed Drupal Podcast
  • 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