simen: Комментарии

Главные вкладки

27 ноября 2011 в 12:03

Да, так понятнее, спасибо

Но проблема в том, что мой php-код - это вывод формы через API форм,
т.е. состоит из функций:
function myform($form_state, &$form_state)
function myform_validate($form, &$form_state)

и генерации формы:
print drupal_render(drupal_get_form('myform'));

Поэтому я не могу запихать рузультаты работы этого кода в одну переменную, чтобы потом ее вывести.
Более того, если помещаю свою функцию (например, function myform) в template.php, то сайт прекращает работать.

Как быть?

26 ноября 2011 в 18:00

Взялся за preprocess_node.

Вот так работает:

<?phpfunction THEMENAME_preprocess_node(&$vars) {
  if ($vars['page']) {
    $vars['content']['mycontent'] = array(
      '#markup' => 'My node content', 
      '#weight' => 10, 
    );
  }?>

А вот так нет:

26 ноября 2011 в 0:29

В Друпале я новичок, и у меня как раз куча нод с запихнутым внутрь php.
Было ощущение, что что-то не так. Но как исправить, не понял пока.

У меня на сайте сотня статей и 3 вида калькуляторов (как раз на php), один из которых нужно вставлять в зависимости от содержимого статьи.
Как решить эту задачу красиво с помощью модулей? И чтобы безопасно доверить это постороннему верстальщику.

9 июля 2011 в 20:15

Вот этот пример:
$form_state['redirect'] = 'resultpage/'. $value;
приводит на страницу http://mysyte.ru/resultpage/123 - а так как такой страницы нет, то получаю ошибку.

Изучил код модулей ядра. В form.inc нашел следующее:

9 июля 2011 в 8:05

"direqtor" wrote:
Пусть результат расчета формы равен 100. Перенаправьте в сабмите формы на resultpage, а там просто выведите полученный аргумент.

Как это сделать? Можно пример?

5 июля 2011 в 16:45

<?php

function myform($form_state) {
$form['mytext'] = array(
'#type' => 'textfield',
'#title' => t('My Text'),
'#description' => t('Введите текст'),
'#required' => TRUE,
);
$form['submit'] = array(
'#type' => 'submit',
'#value' => t('Submit'),
);
$form['data'] = array('#markup' => isset($form_state['values']['mytext']) ? $form_state['values']['mytext'] : '');

return $form;
}

5 июля 2011 в 16:17

"xxandeadxx" wrote:
http://www.drupal.ru/node/64918#comment-362777[/quote]

Что-то я не понял.
Все же сделал как Вы указали и получил нужный мне текст ДО формы.

Единственно от себя добавил сам вывод:
print "Вы ввели: ";
print $form_state['values']['mytext'];

5 июля 2011 в 15:14

Заработало!
Но текст выводится НАД формой, а нужно ПОСЛЕ.
Как исправить?

Вывод сейчас такой:

function myform_submit($form, &$form_state) {
$form_state['rebuild'] = true;
print "Вы ввели: ";
print $form_state['values']['mytext'];
}

5 июля 2011 в 14:38

Вот так?

<?php

function myform($form_state) {
$form['mytext'] = array(
'#type' => 'textfield',
'#title' => t('My Text'),
'#description' => t('Введите текст'),
'#required' => TRUE,
);
$form['submit'] = array(
'#type' => 'submit',
'#value' => t('Submit'),
);
$form['data'] = array('#markup' => $form_state['values']['mytext']);
$form['#redirect'] = false;

return $form;
}