it-swarm-eu.dev

Jak motivovat pohledy odkryté podobě?

Vytvořil jsem pohled s několika exponovanými filtry, ale vypadá to docela ošklivě.

enter image description here

Rád bych vylepšil tematiku, včetně zabalení celé věci do pole a seskupení některých dalších prvků (jako spárování publikovaných a aktualizovaných vstupů), ale nejsem si jistý, jak to udělat.

Snažil jsem se var_dump formulář, ale zdá se, že pokračuje navždy a můj prohlížeč se zamkne, takže se nemůžu snadno dozvědět nic o formuláři tímto způsobem.

Také jsem se pokusil dát formulář jako dítě pole v jiné formě, ale získání všech informací o ID formuláře atd. Se ukázalo jako problematické (i když jsem dostal styl pole sady).

Někdo má nějaké ukazatele?

Aktualizace:

Zkopíroval jsem přes šablonu z modulu do adresáře motivů mého webu a začal jsem.

<fieldset>
    <legend>Filters</legend>

    <div class="views-exposed-form">
        <div class="views-exposed-widgets clear-block">
            <?php foreach($widgets as $id => $widget): ?>
                <div class="views-exposed-widget">
                    <?php if (!empty($widget->label)): ?>
                        <label for="<?php print $widget->id; ?>">
                            <?php print $widget->label; ?>
                        </label>
                    <?php endif; ?>
                    <?php if (!empty($widget->operator)): ?>
                        <div class="views-operator">
                            <?php print $widget->operator; ?>
                        </div>
                    <?php endif; ?>
                    <div class="views-widget">
                        <?php print $widget->widget; ?>
                    </div>
                </div>
            <?php endforeach; ?>
            <div class="views-exposed-widget">
                <?php print $button ?>
            </div>
        </div>
    </div>
</fieldset>

Zdá se, že nedokážu přijít na to, jak párovat datová pole - musím nějak upravit vlastnosti widgetu, abych je mohl zabalit do HTML (nefunguje hook_form_alter, protože #prefix a #suffix jsou přidány do $widget->widget tak přeruší výstup)

12
HorusKol

Exponovaná forma Theming Views je těžká, protože se nechová jako většina forem a používá svůj vlastní mechanismus štítků. Nemůžete tedy jednoduše použít form_alter háček pro přidání #prefix a #suffix k prvkům. Ale pomocí THEME_preprocess_views_exposed_form, můžete si vytvořit vlastní mechanismus přípony/předpony:

function THEME_preprocess_views_exposed_form(&$variables) {
  if ($variables['form']['#id'] == 'views-exposed-form-VIEWNAME-DISPLAYID') {
    foreach ($variables['widgets'] as $id => &$widget) {
      switch ($id) {
        case 'first_date_id':
          $widget->prefix = '<div class="date-widgets-wrapper">';
          break;
        case 'last_date_id':
          $widget->suffix = '</div>';
          break;
      }
    }
  }
}

a v souboru šablony

<fieldset>
    <legend>Filters</legend>

    <div class="views-exposed-form">
        <div class="views-exposed-widgets clear-block">
            <?php foreach($widgets as $id => $widget): ?>
                <?php if (!empty($widget->prefix)) print $widget->prefix; ?>
                <div class="views-exposed-widget">
                    <?php if (!empty($widget->label)): ?>
                        <label for="<?php print $widget->id; ?>">
                            <?php print $widget->label; ?>
                        </label>
                    <?php endif; ?>
                    <?php if (!empty($widget->operator)): ?>
                        <div class="views-operator">
                            <?php print $widget->operator; ?>
                        </div>
                    <?php endif; ?>
                    <div class="views-widget">
                        <?php print $widget->widget; ?>
                    </div>
                </div>
                <?php if (!empty($widget->suffix)) print $widget->suffix; ?>
            <?php endforeach; ?>
            <div class="views-exposed-widget">
                <?php print $button ?>
            </div>
        </div>
    </div>
</fieldset>
22
Pierre Buyle

Chcete-li šablonu přepsat, můžete zkopírovat pohledy vystavené-form.tpl.php z webů/všech/modulů/pohledů/motivu na cestu motivu.

7
Adam S

Měli byste se podívat na to, co je v položce form['#theme']. Lepší způsob, jak toho dosáhnout (lepší než var_dump()) by bylo použití dsm($form) nebo dokonce kpr($form), budou tyto funkce dostupné po instalaci devel modulu (- - http://drupal.org/project/devel ). form['#theme'] By mělo být pole asi 7 prvků. Tyto prvky jsou názvy háčků motivů, které se nazývají při vykreslování tohoto formuláře. můžete je použít k implementaci vlastního způsobu vytváření motivů ve formuláři.

Jedna z položek se bude jmenovat views_exposed_form__VIEW_NAME__DISPLAY_ID.

Ve vašem modulu (pokud jej máte) by měla být implementace hook_theme ()

function MYMODULE_theme($existing, $type, $theme, $path) {
  return array(
    'views_exposed_form__VIEW_NAME__DISPLAY_ID' => array(
      'function' => 'my_exposed_form_theme_function',
      'render element' => 'form',
    )
  );
}

// somwhere later in code

function my_exposed_form_theme_function($vaiables) {
  //$vaiables['form'] contains a form array
  //to display a form element call drupal_render($vaiables['form']['some element'])
  //don't forget to call drupal_render($form) 
  //after you are done with rendering individual elements
  //
  //you can use template_preprocess_views_exposed_form() from 
  // views/theme/theme.inc as an example

  return "concatenated results of multiple drupal_render() calls";
}
3
ihor marusyk

Podívejte se také na modul Better Exposed Filters . K získání možnosti skládacích filtrů budete potřebovat vydání -dev, i když doufám, že brzy vydám správné vydání 1.1 ...

3
mikeker

V předchozích situacích jsem použil Hook_form_alter () k přidání předpony a přípony k tvarovým prvkům, abych je zabalil do divu, který pak lze stylizovat. Nejste si však jisti o zalomení do sad polí.

např.

$form['submitted']['full_name']['#prefix'] = '<div class="background">';        
$form['submitted']['message']['#suffix'] = '</div>';
2
Teegan

Rozložení exponovaných formulářů pohledů (D7) vám pomůže s pohledy exponovaných motivů formulářů.

1
skorzh

Použijte Drupal's hook_form_FORM_ID_alter k úpravě formuláře. To je to, co vyřešilo můj problém s předponou znaku £ do mého pole ceny (vložte to do svého vlastního modulu):

function THEME_form_views_exposed_form_alter(&$form, &$form_state, $form_id) {
   // check this is the right form
   if ($form['#theme'][0] == 'REPLACE_THIS') {
      // add the prefix
      $form['price']['min']['#prefix'] = "£";
   }
}
1
jackocnr

na editační stránce pohledu můžeme zkontrolovat informace o motivu (pravý dolní roh). Poskytuje informace o souborech šablon používaných Drupal k vykreslení různých částí zobrazení na obrazovce. Ve výchozím nastavení se používají soubory šablon poskytované modulem pohledy (uvnitř jeho složky motivů), ale v případě, že chceme změnit způsob zobrazení pohledu, můžeme tyto soubory šablon přepsat vlastními soubory šablon, které můžeme vložit do naší vlastní složky vlastních motivů (nebo motivu, který bude použit k zobrazení tohoto pohledu).

Tato informace o tématu nám ukazuje, jak pojmenovat soubor podle hierarchie (nebo rozsahu účinku souboru šablony, který přepíšete vlastní šablony pohledů).

Tato informace o motivu nyní nemusí zobrazovat všechny soubory šablon, které pohled používá k vykreslení tohoto specifického pohledu.

ano, přejděte na weby/všechny/moduly/zobrazení/téma a zkopírujte pohledy vystavené-form.tpl.php (protože v tomto případě chceme přepsat výchozí nastavení pro vykreslovací filtry!) a vložit je do své vlastní složky motivu, Nyní musíte dodržovat stejnou metodu, abyste ovládali účinek tohoto převažujícího souboru šablony, který jste vložili do své vlastní složky motivu, podle toho, že jste jej odpovídajícím způsobem přejmenovali. např. views-exponovaný formulář - vaše jméno name-panel name.tpl.php (porozumíte nomenklatuře při pohledu na téma: informace na stránce editace pohledu)

nyní můžete přidat css k jednotlivým widgetům (generovaným popisovačem filtrů) v tomto souboru šablony a tato nastavení se použijí na filtry.

navštivte http://eureka.ykyuen.info/2011/07/25/drupal-theme-the-exposed-filter-in-views/

0
dresh