it-swarm-eu.dev

Změňte výchozí výběr pro filtr vystavený zobrazení 2

Ve svém zobrazení mám vystavený filtr, který umožňuje uživatelům vybrat si mezi dvěma různými typy obsahu. Výchozí hodnota pro vystavený filtr se zdá být vybrána podle toho, který typ obsahu je na prvním místě abecedně. Pokud tedy nechám uživatele, aby si vybrali mezi typy obsahu „Band“ a „Song“, výchozí je „Band“. Chci tuto výchozí hodnotu změnit na jiný typ obsahu (v tomto příkladu „Song“). Nemohu najít v rozhraní Zobrazení možnost pro toto. Musím to udělat přes hook_form_alter? Pokud ano, jak přesně bych to udělal?

7
Chaulky

Zkoušel jsem tak, jak to navrhl @ David Lanier, ale nemohl jsem kolem toho úplně zabalit hlavu. Takže jsem se vrátil k Drupal základům a vyzkoušel jsem to z přístupu hook_form_alter()). Po nějakém řešení problémů jsem také našel příspěvek o změně výchozích hodnot filtru Zobrazení . Použil jsem stejný přístup a fungoval to. Níže je kód, který se používá, s několika úpravami, abych odstranil můj obsah specifický pro daný web. Jako vždy nezapomeňte nahradit "modulename" názvem vašeho modulu. .

function modulename_form_alter(&$form, $form_state, $form_id) {
 // is this the right form?
 if($form['#id'] == 'name-of-the-views-form-displayed') {
   if (empty($_GET['label-of-the-filter']))  {
    $form_state['input']['label-of-the-filter'] = 'default-value-for-filter';
   }
  }
}

Stačí nahradit name-of-the-views-form-displayed s, uhodli jste, název formuláře zobrazení, který chcete změnit. Nejjednodušší způsob, jak to najít, je prozkoumat zdroj pohledu v prohlížeči (pro to miluji Firebug) a najít element form, poté ho uchopit za atribut id. Chcete-li najít název filtru a hodnotu, kterou byste měli nastavit, změňte filtry a proveďte „vyhledávání“. Podívejte se do adresního řádku a uvidíte hodnoty, které potřebujete použít jako parametry v adrese URL.

Doufám, že to pomůže získat další kolem tohoto problému také!

5
Chaulky

Udělal jsem to tak

function hook_form_views_exposed_form_alter(&$form, &$form_state) {

  global $user;
  $account = user_load($user->uid);
  $term = taxonomy_term_load($account->field_user_industry[LANGUAGE_NONE]['0']['tid']);

  unset($form['field_event_industry_tid']['#size']);
  if ($form['#id'] == 'views-exposed-form-events-events-pane') {
    // get the view argument if defined
    $term_filter=$_GET;
    unset($term_filter['q']);
    $term_arg = $term_filter;
    if (!empty($term_arg)) {
      $terms = $term_arg;
    }

    // change our input as required
    if (isset($terms)) {
      $form_state['input']['field_event_industry_tid'] = $terms['field_event_industry_tid'];
    }
    else{
      $form_state['input']['field_event_industry_tid'] = $term->tid;
    }
  }
}

V mém případě jsem musel změnit výchozí hodnotu podle dotazu, ale pokud tomu tak není, použiji hodnotu, kterou chci, tak to funguje perfektně!

2
David

Možná už jste dostali odpověď, ale tady je to, jak jsem to vyřešil. Pokud upravíte filtr v zobrazení, existuje možnost nazvaná „Seznam omezení na vybrané položky“. Tuto možnost jsem zkontroloval a výchozí hodnota byla resetována, takže nyní je výchozí hodnota filtru Vše (se značkou Any).

1
Oriol

Jakmile je filtr vystaven, měli byste v konfiguračních možnostech filtru zobrazit zaškrtávací políčka pro každý z typů obsahu na vašem webu. Zde zaškrtnuté jsou ty, které jsou ve výchozím nastavení vybrány, když koncový uživatel vidí zobrazení.

Pokud potřebujete, aby byly ve formuláři k dispozici pouze některé typy obsahu, a pouze některé z těchto předvolených, musíte udělat něco podobného: Přidejte dva filtry typu obsahu:

  • Filtr 1 = pouze typy obsahu, které by měly být k dispozici. Nevystavujte tento filtr.
  • Filtr 2 = odkrytý filtr. Zde vyberte ty, které by měly být ve výchozím nastavení předvoleny.
1
David Lanier

Podívejte se na spodní část příspěvku na adrese:

http://realguess.net/node/28

Pokud nevyberete žádnou z možností v části Klientské pohlaví a zaškrtněte políčko Volitelné Tento vystavený filtr je volitelný a bude mít přidané možnosti, které umožní jeho nastavení. pak bude výchozí volbou. Pokud vyberete položku Muž, bude při vykreslení pohledu výchozí výběr Muž.

0
Sid Kshatriya