Доброго дня.
Прошу помощи по hook_form_alter для Drupal 6. С Twitter Module. Сам к сожалению в PHP не силен.
Как скрыть это поле, которое выводится в "режиме зарегистрированного пользователя" для заполнения при отправке сообщения на сайт?
Именно скрыть, чтобы далее передавало, то что требуется для дальнейшего постинга в твиттер. Я пробывал ставить type=hidden на поля, но после этого постинг не проходит. Код выкидывать кусками тоже не помогло. Больше не знаю, что делать. Поле это одно совсем не в тему снизу болтается, при том, что галка и значения в нем уже есть по умолчанию из настроек модуля.
Это из twitter.module:
<?php
/**
* Implementation of hook_form_alter().
*/
function twitter_form_alter(&$form, $form_state, $form_id) {
// Alter any node forms.
if (isset($form['#node']) && $form['#node']->type .'_node_form' == $form_id) {
// If we haven't enabled Twitter posting on this node type, nothing to do
// here.
$type = $form['#node']->type;
$allowed_types = variable_get('twitter_types', array('story' => 'story', 'blog' => 'blog'));
if (empty($allowed_types[$type])) {
return;
}
module_load_include('inc', 'twitter');
$twitter_form = twitter_form();
if (!$twitter_form) {
return;
}
$form['twitter'] = array(
'#type' => 'fieldset',
'#title' => t('Post to twitter.com'),
'#collapsible' => TRUE,
'#collapsed' => FALSE,
'#tree' => TRUE,
);
$form['twitter']['post'] = array(
'#type' => 'checkbox',
'#title' => t('Announce this post on Twitter'),
'#default_value' => (empty($form['nid']['#value'])),
'#id' => 'twitter-toggle',
);
$form['twitter'] += $twitter_form;
$form['twitter']['status']['#default_value'] = variable_get('twitter_default_format', 'New post: !title !tinyurl');
$form['twitter']['status']['#description'] = t('The given text will be posted to twitter.com. You can use !url, !url-alias, !tinyurl, !title and !user as replacement text.');
}
}
?>
Возможно ли это сделать путем изменения php кода без установки каких-нибудь дополнительных модулей?
Комментарии
-
Это происходит скорей всего по тому что у поля уже стоит тип и Вы возможно поставили ещё раз не убрав старый.
Не имел дело с этим модулем, но судя по приведенному коду - тип поля формируется в функции twitter_form();
Нужно посмотреть где она вызывается чтоб её изменения не вызвали изменения ещё где-то и переопределить там тип поля на '#type' => 'hidden' или заменить функцию на такую-же сформированную для данного поля.
А если не ходите лесть в код, поставьте этому полю стиль display: none; (хоть честно говоря не очень красивое решение)
'#type' => 'hidden',
'#value' => variable_get('twitter_default_format', 'New post: !title !tinyurl'),
);
можно скрыть обрамив в блок
'#type' => 'fieldset',
'#title' => t('Post to twitter.com'),
'#collapsible' => TRUE,
'#collapsed' => FALSE,
'#tree' => TRUE,
'#prefix' => '<div style="display:none;">',
'#suffix' => '</div>',
);
Ygerasimov, спасибо вам большое, самый простой способ оказался с #prefix и #suffix, поле полностью скрылось, оно конечно есть, но я его больше не вижу).
Uho, тоже работает вариант, спасибо за ваш ответ, но остается поле "отправить в твиттер и checkbox с Анонса"
я почему то подумал, что надо только поле ввода скрыть...
так же можно и для чекбокса
Uho, если так же сделать для чекбокса, то там останется еще рамка "ОТПРАВИТЬ В TWITTER" это type=fieldset
Я ее и хотел скрыть, чтобы все остальное за ней скрылось следом, тк она основная.
Как это сделать не знаю на php, получилось через #prefix и #suffix с display:none, что Ygerasimov подсказал.
в функции темы надо было просто грохнуть это поле с помощью unset... Ставится devel, смотрится, кто генерит этот вывод, далее в своей теме кажись через template.php пишется функция в которой мочите эту вашу форму...
Как добавить свой токен например картикуку описание !