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);
        }
    });
 }
 
$(document).ready(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
	}
  }
}
howto/drupal.txt · Zuletzt geändert: 2010/02/03 08:40 von hinnerk
CC Attribution-Noncommercial-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0