===== Some Drupal notes =====
==== Embedding ====
=== View ===
print views_embed_view("name_of_block_display_of_view", "block");
=== Block ===
$block = module_invoke('views', 'block', 'view', 'name_of_block_of_exposed_view_filter');
print $block['content'];
$block = module_invoke('search', 'block', 'view', 'search');
print $block['content'];
=== Webform ===
$form_meinung = node_load(node_id);
print node_view($form_meinung);
=== Node form (with manipulating form entries before display) ===
$mynode = new stdClass();
$mynode->type = 'my_node_content_type';
module_load_include('inc', 'node', 'node.pages');
// original:
// $mynode = drupal_get_form('my_node_content_type', $mynode);
// mymodule_get_form is the same (copied), but with drupal_render_form commented out
$disk = mymodule_get_form('my_node_content_type', $mynode);
// we won't render because we want to set some values first
// e.g. a taxonomy term
foreach($node->taxonomy as $term) {
$disk['taxonomy']['1']['#value']=$term->tid;
}
$disk=drupal_render_form('my_node_content_type', $disk);
==== Redirect after form submission ====
function mymodule_form_alter(&$form, $form_state, $form_id) {
if ($form_id=='myname_of_content_type'.'_node_form') {
$form['#redirect'] = array('node/666', 'm=1');
}
}
==== Form Hints per JS====
// extra js for theming and hints, put in themes' template.php
drupal_add_js(drupal_get_path('theme', 'mythemename'). '/extra.js');
// content of extra.js
//toggle
function toggleVisibility(which){
//alert(which);
divToToggle = document.getElementById(which);
if ( divToToggle.style.display != "block" ){
divToToggle.style.display = "block";
}else{
divToToggle.style.display = "none";
}
}
function displayBlock(which){
//alert(which);
divToToggle = document.getElementById(which);
if ( divToToggle.style.display != "block" ){
divToToggle.style.display = "block";
}
}
function displayNone(which){
//alert(which);
divToToggle = document.getElementById(which);
if ( divToToggle.style.display != "none" ){
divToToggle.style.display = "none";
}
}
function populateElement(selector, defvalue) {
if($.trim($(selector).val()) == "") {
$(selector).val(defvalue);
}
$(selector).focus(function() {
if($(selector).val() == defvalue) {
$(selector).val("");
}
});
$(selector).blur(function() {
if($.trim($(selector).val()) == "") {
$(selector).val(defvalue);
}
});
}
$(function(){
populateElement('#edit-title','Bitte geben Sie Ihrem Beitrag eine Überschrift ...');
populateElement('#edit-body','Ihr Beitrag ...');
populateElement('#edit-search-block-form-1','Begriff eingeben ...');
});
==== Manipulate Node before saving ====
/**
* Implementation of hook_nodeapi().
*/
function mymodule_nodeapi(&$node, $op) {
if ($op == 'presave' && $node->type == 'my_name_of_content_type') {
// check e.g. a cck field for value
if ($node->field_public[0]['value']=='YES') {
// do something
} else {
// do something else
}
}
}