Drupal kode snippets
Her på siden samler jeg brugbare kode snippets, som jeg benytter når jeg koder Drupal theme.
De fleste koder skal benyttes i filen template.php!
Fjerne CSS filer
<?php
function THEME-NAVNV_css_alter(&$css) {
// Remove Drupal core css
$exclude = array(
'modules/aggregator/aggregator.css' => FALSE,
'modules/block/block.css' => FALSE,
'modules/book/book.css' => FALSE,
'modules/comment/comment.css' => FALSE,
'modules/dblog/dblog.css' => FALSE,
'modules/field/theme/field.css' => FALSE,
'modules/file/file.css' => FALSE,
'modules/filter/filter.css' => FALSE,
'modules/forum/forum.css' => FALSE,
'modules/help/help.css' => FALSE,
'modules/menu/menu.css' => FALSE,
'modules/node/node.css' => FALSE,
'modules/openid/openid.css' => FALSE,
'modules/poll/poll.css' => FALSE,
'modules/profile/profile.css' => FALSE,
'modules/search/search.css' => FALSE,
'modules/statistics/statistics.css' => FALSE,
'modules/syslog/syslog.css' => FALSE,
'modules/system/admin.css' => FALSE,
'modules/system/maintenance.css' => FALSE,
'modules/system/system.css' => FALSE,
'modules/system/system.maintenance.css' => FALSE,
'modules/system/system.messages.css' => FALSE,
'modules/system/system.menus.css' => FALSE,
'modules/system/system.theme.css' => FALSE,
'modules/taxonomy/taxonomy.css' => FALSE,
'modules/tracker/tracker.css' => FALSE,
'modules/user/user.css' => FALSE,
'misc/vertical-tabs.css' => FALSE,
// Remove contrib module CSS
drupal_get_path('module', 'ctools') . '/css/ctools.css' => FALSE,
drupal_get_path('module', 'webform') . '/css/webform.css' => FALSE,
drupal_get_path('module', 'date') . '/date_popup/themes/datepicker.1.7.css' => FALSE,
drupal_get_path('module', 'date') . '/date_api/date.css' => FALSE,
drupal_get_path('module', 'date') . '/date_repeat_field/date_repeat_field.css' => FALSE,
drupal_get_path('module', 'views') . '/css/views.css' => FALSE, );
$css = array_diff_key($css, $exclude);
}
?>
Er bruger logget ind eller ej?
<?php if (!$user->uid) { ?>
... jeg er IKKE logget ind ...
<?php } ?>
<?php if ($user->uid) { ?>
... jeg ER logget ind ...
<?php } ?>
Body class - hvis block i region
<?php
// Body class
function THEME-NAVN_preprocess_html(&$variables) {
$node = menu_get_object();
if (isset($node) && isset($variables['page']['REGION-NAVN'])) {
$variables['classes_array'][] = 'DIN-CLASS-TIL-BODY';
}
}
?>
Breadcrumbs
I page.tpl kan man smide <?php print $breadcrumb ?>
For at ændre på html'en kan man i template.php smide nedenstående.
<?php
function aturesponsive_breadcrumb($variables) {
$breadcrumb = $variables['breadcrumb'];
$crumbs = '';
if (!empty($breadcrumb)) {
$crumbs = '<ul class="breadcrumb-nav">';
foreach($breadcrumb as $value) {
$crumbs .= '<li>' . $value . '<span>/</span> </li>';
}
$crumbs .= '<li>' . drupal_get_title() . '</li></ul>';
}
return $crumbs;
}
?>
Print kun første billede
Hvis du har et felt til flere billeder, men kun vil printe det første billede i node.tpl kan det gøres med:
<?php
if (count($content['field_XXX']) > 0) {
print render($content['field_XXX'][0]); // Only render the first image
hide($content['field_XXX']);
}
?>
Tjek om field findes
<?php $field = field_get_items('node', $node, 'field_XXX'); if ($field) { ?>
.....
<?php } ?>
Print view direkte i tpl fil
<?php print views_embed_view('NAVN-PÅ-VIEW','block_1'); ?>
Tjek for sprog
Print forskellige elementer til forskellige sprogversioner.
Her tjekkes for hvilket sprog der vises:
<?php global $language;
if ($language->language == 'da') { ?>
...........
<?php } ?>
Her er det både dansk og engelsk der vises
<?php global $language;
if ($language->language == 'da' || $language->language == 'en') { ?>
...........
<?php } ?>
Drupal 7 menu output
<?php
/* main ul */
function THEME-NAVN_menu_tree__main_menu($variables) {
return '' . $variables['tree'] . '';
}
/* inner ul */
function THEME-NAVN_menu_tree__main_menu_inner($variables) {
return '' . $variables['tree'] . '';
}
/* inner li */
function THEME-NAVN_menu_link__main_menu_inner($variables) {
$element = $variables['element'];
$sub_menu = '';
if ($element['#below']) {
$sub_menu = drupal_render($element['#below']);
}
$output = l($element['#title'], $element['#href'], $element['#localized_options']);
return '' . $output . $sub_menu . "\n";
}
/* main li */
function THEME-NAVN_menu_link__main_menu(array $variables) {
$element = $variables['element'];
$sub_menu = '';
if ($element['#below']) {
foreach ($element['#below'] as $key => $val) {
if (is_numeric($key)) {
$element['#below'][$key]['#theme'] = 'menu_link__main_menu_inner'; // 2 lavel
}
}
$element['#below']['#theme_wrappers'][0] = 'menu_tree__main_menu_inner'; // 2 lavel
$sub_menu = drupal_render($element['#below']);
}
$output = l($element['#title'], $element['#href'], $element['#localized_options']);
return '' . $output . $sub_menu . "\n";
}
?>
Drupal webform
Tilføj google onclick event tracking til en webform i Drupal 7
<?php
function THEME-NAVN_form_webform_client_form_XXXX_alter(&$form, &$form_state) {
$form['actions']['submit']['#attributes'] = array('onclick' => "ga('send', 'event', { eventCategory: 'Ring mig op', eventAction: 'Udfyldt'});");
}
?>
XXXX = webform id (eks. 2954)
Antal af genveje (menu)
Det maksimale antal af genvej er pr. default sat til 7.
Det kan ændre ved at tilføje følgende i settings.php
<?php
/**
* Configuration option to set max number of shortcuts on the shortcut bar
*/
$conf['shortcut_max_slots'] = 20;
?>
Tilføj ekstra custom filer til theme filerne
Eksempelvis når du designer, er det fedt at kunne splitte theme filerne op i mindre dele.
Indsættes eksempelvis i page.tpl.php
<?php require("DIN-NYE-FIL.inc");?>
Her kalder vi en fil med navnet "DIN-NYE-FIL.inc", som kan indeholde al den kode du ønsker.
http -> https
Ikke specielt Drupal .....men .... virker på Wannafind opsætning
Fil: .htaccess
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]