Необходимо реализовать многоязыковую поддержку в стандартной форме контактов.
Пробую реализовать сторонними модулями - но они предлагают создать дополнительные формы контактов для разных случаев. Это не удобно.
Меня полностью устраивает стандартная форма, но как в неё добавить мультиязычность не знаю.
Подскажите, кто решал подобные проблемы, как это сделать?
Хочу добавить ещё одно поле в стандартную форму (textarea) с поддержкой HTML, чтобы потом через переводы добавить перевод этого поля на каждый из языков, но не знаю как это сделать. Пожалуйста подскажите или помогите с решением этого вопроса.
Комментарии
Если ты не программист, то используй webform, а стандартный модуль отключи.
Изначально следовало бы задать вам вопрос - каким образом вы сделали несколько языков на сайте, потому как сделать это можно как минимум 3 способами.
в свое время столкнулся со схожей задачей, и решил ее таким образом -
изначально сайт был переведен на 3 языка при помощи i18n - рус, укр, англ
en - default, поэтому форму для него переделывать не надо, просто указываем пункту меню, к которому он привязан его принадлежность к английскому языку CONTACT
рус и укр - загрузил переводы для модуля contact.module и создал элементы меню для каждого из языков -
КОНТАКТЫ с путем ru/contact и Контактні дані с путем uk/contact
усе)
А как он еще textarea сделает?
Мультиязычность сделал через i18n.
Поле нужно не textarea (как я понимаю textarea - это поле с возможностью ввода информации), а просто чтобы туда вбить адресные данные на трёх языках.
Я не профи в программировании. Но как я понимаю нужно всего лишь вбить доп. поле в модуле contact.module, который лежит в /modules относительно корня.
Вот вроде бы в эту функцию?
global $user;
$result = db_query('SELECT cid, category, selected FROM {contact} ORDER BY weight, category');
while ($category = db_fetch_object($result)) {
$categories[$category->cid] = $category->category;
if ($category->selected) {
$default_category = $category->cid;
}
}
if (count($categories) > 0) {
$form['#token'] = $user->name . $user->mail;
$form['contact_information'] = array('#value' => filter_xss_admin(variable_get('contact_form_information', t('You can leave a message using the contact form below.'))));
Пробовал ввести переводы для "You can leave a message using the contact form below.", но этот текст не отображается в самой форме почему-то. Это бы решило полностью мою задачу.
'#title' => t('Your name'),
'#maxlength' => 255,
'#default_value' => $user->uid ? $user->name : '',
'#required' => TRUE,
);
$form['mail'] = array('#type' => 'textfield',
'#title' => t('Your e-mail address'),
'#maxlength' => 255,
'#default_value' => $user->uid ? $user->mail : '',
'#required' => TRUE,
);
$form['subject'] = array('#type' => 'textfield',
'#title' => t('Subject'),
'#maxlength' => 255,
'#required' => TRUE,
);
if (count($categories) > 1) {
// If there is more than one category available and no default category has been selected,
// prepend a default placeholder value.
if (!isset($default_category)) {
$categories = array(t('--')) + $categories;
}
$form['cid'] = array('#type' => 'select',
'#title' => t('Category'),
'#default_value' => $default_category,
'#options' => $categories,
'#required' => TRUE,
);
}
else {
// If there is only one category, store its cid.
$category_keys = array_keys($categories);
$form['cid'] = array('#type' => 'value',
'#value' => array_shift($category_keys),
);
}
$form['message'] = array('#type' => 'textarea',
'#title' => t('Message'),
'#required' => TRUE,
);
// We do not allow anonymous users to send themselves a copy
// because it can be abused to spam people.
if ($user->uid) {
$form['copy'] = array('#type' => 'checkbox',
'#title' => t('Send yourself a copy.'),
);
}
$form['submit'] = array('#type' => 'submit',
'#value' => t('Send e-mail'),
);
}
else {
$form['#error'] = array('#value' => t('The contact form has not been configured.'));
}
return $form;
}
Подскажите плиз - я на правильном пути касаемо модификации модуля? Или существуют более сложные зависимости и изменение этого модуля не достаточно?
Извините, забыл поблагодарить за отзывчивость и помощь.
Спасибо!
Но проблема пока остается открытой.
что бы "вбить доп поле" нужно ставить модуль webform - он создаст новый тип контента, а к типу контента можно через i18n много язычность сделать
.Вот какраз этого делать и не надо. Если вы не слушаете советы других, то зачем пишите в форум?
kiev1, player спасибо за советы.
Советы слушаю, но есть большое непонимание концепции друпала.
Потихоньку буду втягиваться.
Еще раз спасибо, буду пробовать то, что Вы сказали.
Менять код модуля друпала нельзя потому что потеряешь возможность его обновлять. Можно либо перекрывать вывод инфы модуля своим, либо перехватывать события генерируемые модулем.
как раз друпал для того и сделан что бы в код лезть в последнюю очередь, а в код модуля тем более - в друпале многое нестандартное делается без программирования вообще
еще раз спасибо
Нашёл способ как сделать мультиязычность.
http://drupal.org/node/134002
Сделал форму контактов на трех языках, сделал меню для него 'contact', но в примари-линкс отображаются все три вида этого 'contact' - на трех языках, не важно какой язык у интерфейса.
Как можно убрать лишние 'контакты' из меню?
Если не ошибаюсь это проблема именно в Примари-линкс. В navigation вроде бы такое не наблюдалось. Единственное решение, которое я нашел - для каждого языка свой примари-линкс.