建立內容後跳轉到指定 URL
我突然在需要使用的時候發現我竟然沒有寫下:
<?php
/**
* hook_form_alter()
*/
function hook_form_alter(&$form, &$form_state)
{
// callback
$form['actions']['submit']['#submit'][] = 'custom_checkin_redirect';
}
/**
* callback
*/
function custom_checkin_redirect($form, &$form_state)
{
$form_state['redirect'] = 'check-in'; // any url works here
}
?>
Rules 沒有我想要的欄位可以 compare
Rules 原生的 node 欄位只有很少的幾個
例如 created, updated 之類的
但我想比較的是 cck 的欄位呀
一個 checkbox 有沒有選到
一個 node reference 是否為空
一個字符欄位有否包含某些字等等
其實只要先加一個 'entity has field' 的 condition
選你想要比較的欄位
再到 data compare 便會出現你需要的欄位了
又或者更直接的方法是加一個 content is type
選擇你需要的 content type, 但如此的話便必需要是單一 content type 了
話說回來,要在 rules 和 hooks 之間選擇才是真正的困難
相關討論: http://www.drupaler.co.uk/blog/rules-versus-hooks-or-abstraction-shock
Programmically add custom role filter to views 3.x
<?php
$user_view = views_get_view('user');
if (!$user_view || !$user_view->access('block')) {
return;
}
$user_view->add_item('block', 'filter', 'users_roles', 'rid',
array( 'value' => array('type' => 'int', 'value' => 6, 'operator' => '=')));
?>
因為懶,deploy features懶,懶得使用 DB API
直接拿現成的 views 自己加
24至25小時前註冊使用者:
<?php
//after 24 hours
$user_view->add_item('block', 'filter', 'users', 'created',
array( 'value' => array('type' => 'date', 'value' => date('U', strtotime('-24 hours'))), 'operator' => '<='));
//before 25 hours
$user_view->add_item('block', 'filter', 'users', 'created',
array( 'value' => array('type' => 'date', 'value' => date('U', strtotime('-25 hours'))), 'operator' => '>'));
?>
Drupal7.x send HTML email
<?php
function mymodule_mail_alter(&$message) {
// if ($message['id'] == 'modulename_messagekey') {
if ($message['id'] == 'mymodule_messageKey') {
$message['headers']['MIME-Version'] = '1.0';
$message['headers']['Content-Type'] = 'text/html; charset=UTF-8; format=flowed';
}
}
?>
費話少講
Drupal7.x javascript function after ajax - ajax invoke
初探 Drupal 中使用 ajax 之後
使想在 AJAX complete 之後執行一些自定義的 javascript
例如ajax form submit 之後 slideUp form
submit 之後需要修改某些內容
使用的是 ajax callback 的command, 加上 ajax_command_invoke
Form array:
<?php
$form['actions']['submit']['#ajax'] = array(
'callback' => 'example_callback',
'wrapper' => 'field-wrapper',
'method' => 'append',
'effect' => 'slide',
);
?>
callback:
<?php
function example_callback($form, $form_state) {
$commands = array();
$commands[] = ajax_command_prepend(NULL, theme('status_messages'));
$commands[] = ajax_command_invoke('.field-form', 'slideUp', array(2000));
return array('#type' => 'ajax', '#commands' => $commands);
}
?>
ajax_command_invoke
可以對 selector 執行一個函數
第三個參數是一個 array, 是傳給函數的參數
ref:
http://api.drupal.org/api/drupal/includes%21ajax.inc/group/ajax/7
http://api.drupal.org/api/drupal/includes%21ajax.inc/function/ajax_comma...