Próbuję utworzyć formularz węzła dla niestandardowego typu. Mam włączone grupy organiczne i systematykę, ale chcę, by ich elementy pojawiały się w niestandardowej kolejności. Dlatego zaimplementowałem hook_form_alter
i ustawię podrzędną #weight
podmary og_nodeapi
na -1000, ale nadal będzie ona następować po taksonomii i menu. Próbowałem nawet zmienić podbarwę w zestaw pól (aby wymusić to renderowanie), ale bez kości. Próbowałem również ustawićDlaczego własność "#weight" nie ma żadnego efektu w formularzach Drupala?
$form['taxonomy']['#weight'] = 1000
(Mam dwa vocabs, więc jest już renderowane jako zestaw pól), ale to również nie działa.
Ustawiłem wagę mojego modułu bardzo wysoko i potwierdziłem w tabeli systemowej, że jest to rzeczywiście najwyższy moduł na stronie - więc nie mam pomysłów. Jakieś sugestie?
Aktualizacja:
Chociaż nie jestem do końca pewien, w jaki sposób udało mi się uzyskać zestaw pól taksonomii do zlewu poniżej wszystkiego, ale teraz mam problem, który jest powiązany z nadzieją łatwiejsze do zrozumienia. W ramach zestawu konkretną taksonomii, mam dwie pozycje (znaczniki i multi-select), i chciałem dodać kilka instrukcji w hook_form_alter następująco:
$form['taxonomy']['instructions'] = array(
'#value' => "These are the instructions",
'#weight' => -1,
);
Zgadłeś, to wydaje po warunki wstawione przez moduł taksonomii. Jeśli jednak zmienię to na zestaw pól:
$form['taxonomy']['instructions'] = array(
'#type' => 'fieldset', // <-- here
'#title' => 'Instructions', // <-- and here for good measure
'#value' => "These are the instructions",
'#weight' => -1,
);
to magicznie unosi się na górze, tak jak zamierzałem. Próbowałem również textarea (to też działało) i wyraźnie mówiąc znaczników (to nie).
Tak więc zmiana rodzaju z "znaczników" (domyślny IIRC) na "zestaw pól" powoduje, że nie jest już ignorowany jego ciężar.
Czy próbujesz zmienić kolejność w formularzu lub na renderowanej stronie. Nie sądzę, że zmiana kształtu haka zmieni to dla obu. –
Tylko na formularzu. –
Zaktualizowałem moją odpowiedź poniżej, dodając kolejny możliwy powód, gdy uruchomiono z zainstalowanym modułem CCK. –