taky hook_form_alter()

Dobry vecer, moc se omlouvam za dalsi dotaz, ale docela v tom plavu. Staci mi kdyztak lehce popostrcit.

 

Mam v Ubercartu nejake produkty, kazdy ma nejake vlastnosti, podle kterych je pak potrebuji filtrovat-vaha, vek, pohlavi... a vetsinu a veci je tam zadavana jako 45-50, 70-90 a podobne, proste aby clovek co to plnil nemusel psat porad cisla ale mel vyber z par moznosti.

Ted kdyz delam filtr ve views, potrebuji ale aby uzivatel mohl vepsat to textfieldu cislo (jeho konkretni vahu, vek...) a podle toho to pak vyfiltrovat.

Moznost zobrazit textfield misto selectboxu ve filtru pro lidi jsem nikde nenasel, tak se pokousim jit cestou prepsani hook_form_alter(); ale to se mi absolutne nedari zprovoznit, nechapu jestli staci funkce do template.php, nebo pro to musim psat solo modul, nebo nejak uplne jinak? O.o

 

Dekuju moc za navedeni na cestu

Michal Reznicek

návštěvník

Zase hroznej trapas, template.php do rootu vzhledu, ne do templates....

návštěvník

No chyba byla od zacatku spatnej soubor, ale je pravda ze ted narazim na problem zmenit celectbox na text, radio, cokoliv. Vlastne udelat jakoukoliv zmenu s tim prvkem.

I jen 

        $form['field_product_vaha_value'] = array(

            '#type' => 'radios',

        );

Nema zadny efekt, asi jeste uplne nechapu jak se to ma presne prepisovat, internet je sice plny postupu ale nejak se nedari, ale snad se to prolomi.

návštěvník

Nasel jsem jeste tuhle moznost

   if ($form_id == 'views_exposed_form') {

        $form['views-exposed-form-filtrcs-page']['field_product_vaha_value']['#type'] = 'textfield';

        $form['views-exposed-form-filtrcs-page']['field_product_vaha_value']['#size'] = 60;

        $form['views-exposed-form-filtrcs-page']['field_product_vaha_value']['##maxlength'] = 128;

    }

A ta prida extfield, ale porad je tam stary selectbox a oba navzajem se hadaj :)

návštěvník

Ja sem s dovolenim budu psat jak tim postupne prochazim, trebas se to nekdy bude nekomu hodit :)

Pro zmenu ze selectboxu na radio funguje

 

 function views_form_alter(&$form, &$form_state, $form_id) {

    if ($form_id == "views_exposed_form" && $form['#id'] == "views-exposed-form-filtrcs-page") {

         $form['field_product_vaha_value']['#type'] = "radios";

        $form['field_product_vaha_value']['#size'] = null;

    }

}

a funguje to komplet.

Pro zmenu na textfield bohuzel dostavam hlasku "Zjištěna neplatná volba. Kontaktujte administrátora webu."

Coz bude protoze hodnota kterou to hleda je napr 35-55, ne 40 - coz uz asi nepujde dost dobre udelat, bude to chtit nejak vyrobit ze to nacte 40 a podle tabulky to zmeni hodnotu v odesilacim fieldu na 35-55

návštěvník

Prostě tam nacpěte vlastní hodnoty do vybíračky. Pak asi bude potřeba implementovat hook_views_query_alter(&$view, &$query), kde upravíte filtr v $query tak, aby odpovídal vašemu požadavku.

Odpovědět

Obsah tohoto pole je soukromý a nebude veřejně zobrazen.

Odesláním komentáře souhlasíte s podmínkami Ochrany osobních údajů

reklama
Moje kniha o CMS Drupal

 

Kniha 333 tipů a triků pro Drupal 9


Více na KnihyPolzer.cz

Sledujte Maxiorla na Facebooku

Maxiorel na Facebooku

Poslední komentáře
Nové diskuze
Hosting pro Drupal a WordPress

Hledáte český webhosting vhodný nejenom pro redakční systém Drupal? Tak vyzkoušejte Webhosting C4 za 1200 Kč na rok s doménou v ceně, 20 GB prostoru a automatické navyšováním o 2 GB každý rok. Podrobnosti zde.

@maxiorel na Twitteru

Maxiorel na Twitteru