Как изменить порядок вывода форм на странице создания поста?
Прислано: argon
пн, 31/03/2008 - 10:55
Подскажите, плиз. На странице создания поста в блог по дефолту последовательность вывода форм следующая:
- Название
- Тизер
- Сообщение
- Присоединенное изображение
А мне надо чтобы форма "Присоединенное изображение" было между "тизером" и "сообщением". Как это можно несложно сделать? И кстати, а как делать, чтобы форма (в моем случае - "присоединенное изображение") была по дефолту открыта?
- argon's blog
- Для комментирования войдите или зарегистрируйтесь
просто, но неправильно - отредактировать веса и collapsed в том файле ядра,который за это отвечает
непросто, но правильно - повесить хук, который делает то же самое
- Для комментирования войдите или зарегистрируйтесь
спасибо. а какой файл ядра за это отвечает?
- Для комментирования войдите или зарегистрируйтесь
просто, но ОЧЕНЬ неправильно :)
правильно так:
создаем новый модуль, в него впихиваем все одну(!) функцию
function yourmodule_form_alter($form_id, &$form) { //alterinп node creation/editing form if ($form['#id'] == 'node-form') { if (isset($form['taxonomy'])) $form['taxonomy']['#weight'] = '4'; if (isset($form['attachments'])) { $form['attachments']['#weight'] = '3'; } } }
функцию меняем под свои нужды. поля смотрим через print_r($form)
- Для комментирования войдите или зарегистрируйтесь
Видите, мне как непрограммеру технология создание модуля (равно хака) в принципе не известна.
( логически оно кроме создания папки-нэйма и видимо... name.php в ней (с вышеприведенным кодом) наверное чего-то еще требует ) - или нет?
И мне (как юзеру-дизайнеру) возможно проще (я понимаю что ядрокастом не приветствуется) поправить нумера (и collapsed - !! бы еще) в исходном файле (сделаю татуировку) - скажите имя файла - я бы там веса проставил - это не комм.заказ - для себя делаю. А... и код для collapsed нужен тоже. Вроде так.
- Для комментирования войдите или зарегистрируйтесь
там еще нужен файлик .info Возьмите любой модуль и гляньте что в нем внутри, там все элементарно. в моей функции вставьте вначале print_r($form); Оно выведет на странице формы очень большое нечто. В этом нечто найдите ваш fieldset по названию. Блин, там все интуитивно. У него будет поле collapsed. Выставьте его в true и будьте довольны.
- Для комментирования войдите или зарегистрируйтесь
Так любую функцию можно перегрузить? Или нет?
- Для комментирования войдите или зарегистрируйтесь
не любую. в модулях можно перегружать все так называемые хуки (список). В темах можно перегружать темовые функции (список)
- Для комментирования войдите или зарегистрируйтесь
Пока с модулем не до конца получилось - модуль заработал - но (print_r($form); - правильно вставить не могу - то ошибка - то ничего особенного не выводится) - соответственно как поймать нужные мне объекты пока не понял. А кстати - собственно в моем случае ведь вес формы нужно поменять у модуля "Image - Image Attach" - т.е. это вроде не хак ядра? Я так понимаю где-то в image.module надо поправить вес формы ввода адреса файла и проставить collapsed. Там правда файлик немаленький... по крайней мере для модуля Excerpt это вроде работает. Или я не прав?
<?php // $Id: formweight.info,v 1.1.2.3 2007/06/15 08:25:22 snpower Exp $ print_r($form); function formweight_form_alter($form_id, &$form) { //alterinп node creation/editing form if ($form['#id'] == 'node-form') { if (isset($form['taxonomy'])) $form['taxonomy']['#weight'] = '4'; if (isset($form['attachments'])) { $form['attachments']['#weight'] = '5'; } } }
- Для комментирования войдите или зарегистрируйтесь
Минимальный модуль требует 2 файла .info (название, версия, зависимости и т. п.) и .module (php код)
- Для комментирования войдите или зарегистрируйтесь
Можно еще поменять вес модуля в таблице {system} :)
- Для комментирования войдите или зарегистрируйтесь
А ... таблица {system} - это я не знаю как (.
- Для комментирования войдите или зарегистрируйтесь







Комментарии