Темизация формы
hook_menu
{
$items['block_issue_now/%'] = array(
'page callback' => 'vkaz_get_news',
'page arguments' => array(1),
'access callback' => true,
'type' => MENU_CALLBACK,
);
return $items;
}
Сама ahah-функция
{
$ajax = 0;
if ($date) $ajax = 1;
drupal_add_css(drupal_get_path('module', 'vkaz') .'/vkaz.css');
if (!$date) $date = date('Y-m-d');
$subquery = 'SELECT `field_issue_value` FROM `content_type_story`
GROUP BY `field_issue_value`
ORDER BY `field_issue_value` DESC';
$result = db_query($subquery);
while ($row = db_fetch_array($result))
$dates[] = str_replace('T00:00:00', '', $row['field_issue_value']);
$query = 'SELECT * FROM `node`
...
WHERE `field_issue_value` = "'.$date.'" OR `field_issue_value` = "'.$date.'T00:00:00" ORDER BY `field_importance_value` ASC';
$result = db_query($query);
$p = mysqli_num_rows($result);
if (!$p){
$d = $dates;
$date = array_shift($d);
$query = 'SELECT * FROM `node`
...
WHERE `field_issue_value` = "'.$date.'" OR `field_issue_value` = "'.$date.'T00:00:00" ORDER BY `field_importance_value` ASC';
$result = db_query($query);
}
$form = array();
$t = array_search($date, $dates);
if (isset($dates[$t-1]))
$form['prev'] = array(
'#type' => 'button',
'#value' => '< предыдущая',
'#ahah' => array(
'path' => 'block_issue_now/'.$dates[$t-1],
'wrapper' => 'issue_now_news',
'event' => 'click',
'method' => 'replace',
'effect' => 'fade',
),
);
if ($ajax) $form['ajax'] = array('#value' => 1);
$form['next'] = array(
'#type' => 'button',
'#value' => 'следующая >',
'#ahah' => array(
'path' => 'block_issue_now/'.$dates[$t+1],
'wrapper' => 'issue_now_news',
'event' => 'click',
'method' => 'replace',
'effect' => 'fade',
),
);
$form['date'] = array('#value' => $date);
while ($row = db_fetch_array($result))
{
$form['news'][$row['nid']]['title'] = array(
'#value' => '<div class="issue_now">' . l($row['name'], url_link('taxonomy/term/'.$row['tid']), array('attributes' => array('class' => 'catLink'))) . l($row['title'], url_link('node/'.$row['nid']), array('attributes' => array('class' => 'nodeLink'))) . '</div>',
);
}
return $form;
}
{
$rows = array();
$d = explode('-', $form['date']['#value']);
$date = str_replace('T00:00:00', '', $d[2]).'.'.$d[1].'.'.$d[0];
foreach (element_children($form['news']) as $key){
$rows[] = $form['news'][$key]['title']['#value'];
}
$content = '<h3>НОМЕР ОТ '.$date.'</h3>';
if ($form['prev']['#value']) $content .= drupal_render($form['prev']);
if ($form['next']['#value']) $content .= drupal_render($form['next']);
$content .= implode('', $rows);
if (!isset($form['ajax']['#value']))
return '<div id="issue_now_news">'.$content.'</div>';
else {
print(drupal_to_js(array('status' => true, 'data' => '<div id="issue_now_news">'.$content.'</div>')));
exit;
}
}
Проблема в том, что при обновлении блока (его замене, если быть точнее - ahah элементы не изменяют своих параметров. Можно ли изменить их через callback или необходимо сделать что-нибудь ещё магическое?