Kontroller innhold i node teaser, node body og RSS for noder

Vil du styre hvordan nodene fremstår i teaser, body og RSS-feedet, så er denne videoguiden noe for deg. Her ser vi hvordan man kontrollere hvordan noder ser ut.

For hver innholdstype har man noder, og hver node har en teaser (det som vises i lister på forsiden o.l.) og en body (noden i sin helhet). Videre puttes hele eller deler av innholdet i noden i RSS-feeds (RSS-strømmer). Med content template kan man kontrollere hva som vises i teaser, body og RSS-feedet.

For å bruke modulen content template til fullest, bør man ha elementere kunnskaper i HTML, CSS og PHP. Sistnevnte er best for å legge inn logikk eller redigere output fra variablene for hver node, mens HTML og CSS brukes for å legge markup og designe markupet rundt data for nodene. Merk at hvis du ikke kan noen av disse, så finner du meget nyttige videokurser i HTML, CSS og PHP her:

I videotutorialen nedenfor ser du hvordan man kan bruke content template for å ta full kontroll over hvordan forskjellige innholdstyper fremstår for brukerne.

Hvordan kontrollere output i teaser, body og RSS for noder basert på innholdstype

Du har ikke installert Flash på datamaskinen din. Du trenger minimum flash 8 for å kunne se denne videoen.

Modulene vi bruker i denne guiden er views, CCK og contemplate. Last ned og installer disse. Hvilke instillinger og deler av modulene vi bruker i videoen, ser du underveis.

Importdata & Templates

Her er importfiler og template for innholdstypen stillingsutlysning, slik at du slipper å opprette alle selv. Merk at du selv må legge inn data i innholdstypene, f.eks. en egen stilling + et par søknader.

Importfiler for innholdstyper

For å importere innholdstyper, gå til:
domene.com/admin/content/types/import

Innholdstype for stillingsutlysning

$content['type']  = array (
  'name' => 'Stillingsutlysning',
  'type' => 'stillingsutlysning',
  'description' => '',
  'title_label' => 'Tittel',
  'body_label' => 'Tekst',
  'min_word_count' => '0',
  'help' => '',
  'node_options' =>
  array (
    'status' => true,
    'promote' => true,
    'sticky' => false,
    'revision' => false,
  ),
  'language_content_type' => '0',
  'old_type' => 'stillingsutlysning',
  'orig_type' => '',
  'module' => 'node',
  'custom' => '1',
  'modified' => '1',
  'locked' => '0',
  'comment' => '0',
  'comment_default_mode' => '4',
  'comment_default_order' => '1',
  'comment_default_per_page' => '50',
  'comment_controls' => '3',
  'comment_anonymous' => 0,
  'comment_subject_field' => '1',
  'comment_preview' => '1',
  'comment_form_location' => '0',
);
$content['groups']  = array (
  0 =>
  array (
    'label' => 'Kort om stillingen',
    'group_type' => 'standard',
    'settings' =>
    array (
      'form' =>
      array (
        'style' => 'fieldset',
        'description' => '',
      ),
      'display' =>
      array (
        'description' => '',
        'teaser' =>
        array (
          'format' => 'fieldset',
          'exclude' => 0,
        ),
        'full' =>
        array (
          'format' => 'fieldset',
          'exclude' => 1,
        ),
        4 =>
        array (
          'format' => 'fieldset',
          'exclude' => 0,
        ),
        'label' => 'above',
      ),
    ),
    'weight' => '-4',
    'group_name' => 'group_kort',
  ),
);
$content['fields']  = array (
  0 =>
  array (
    'label' => 'Firma',
    'field_name' => 'field_firma',
    'type' => 'text',
    'widget_type' => 'text_textfield',
    'change' => 'Change basic information',
    'weight' => '1',
    'rows' => 5,
    'size' => '60',
    'description' => '',
    'default_value' =>
    array (
      0 =>
      array (
        'value' => '',
        '_error_element' => 'default_value_widget][field_firma][0][value',
      ),
    ),
    'default_value_php' => '',
    'default_value_widget' => NULL,
    'group' => 'group_kort',
    'required' => 1,
    'multiple' => '0',
    'text_processing' => '0',
    'max_length' => '',
    'allowed_values' => '',
    'allowed_values_php' => '',
    'op' => 'Save field settings',
    'module' => 'text',
    'widget_module' => 'text',
    'columns' =>
    array (
      'value' =>
      array (
        'type' => 'text',
        'size' => 'big',
        'not null' => false,
        'sortable' => true,
        'views' => true,
      ),
    ),
    'display_settings' =>
    array (
      'weight' => '1',
      'parent' => 'group_kort',
      'label' =>
      array (
        'format' => 'above',
      ),
      'teaser' =>
      array (
        'format' => 'default',
        'exclude' => 0,
      ),
      'full' =>
      array (
        'format' => 'default',
        'exclude' => 1,
      ),
      4 =>
      array (
        'format' => 'default',
        'exclude' => 0,
      ),
    ),
  ),
  1 =>
  array (
    'label' => 'Webside',
    'field_name' => 'field_webside',
    'type' => 'text',
    'widget_type' => 'text_textfield',
    'change' => 'Change basic information',
    'weight' => '2',
    'rows' => 5,
    'size' => '60',
    'description' => 'Skriv inn URL med http',
    'default_value' =>
    array (
      0 =>
      array (
        'value' => '',
        '_error_element' => 'default_value_widget][field_webside][0][value',
      ),
    ),
    'default_value_php' => '',
    'default_value_widget' =>
    array (
      'field_webside' =>
      array (
        0 =>
        array (
          'value' => '',
          '_error_element' => 'default_value_widget][field_webside][0][value',
        ),
      ),
    ),
    'group' => 'group_kort',
    'required' => 0,
    'multiple' => '0',
    'text_processing' => '0',
    'max_length' => '',
    'allowed_values' => '',
    'allowed_values_php' => '',
    'op' => 'Save field settings',
    'module' => 'text',
    'widget_module' => 'text',
    'columns' =>
    array (
      'value' =>
      array (
        'type' => 'text',
        'size' => 'big',
        'not null' => false,
        'sortable' => true,
        'views' => true,
      ),
    ),
    'display_settings' =>
    array (
      'weight' => '2',
      'parent' => 'group_kort',
      'label' =>
      array (
        'format' => 'above',
      ),
      'teaser' =>
      array (
        'format' => 'default',
        'exclude' => 0,
      ),
      'full' =>
      array (
        'format' => 'default',
        'exclude' => 1,
      ),
      4 =>
      array (
        'format' => 'default',
        'exclude' => 0,
      ),
    ),
  ),
  2 =>
  array (
    'label' => 'Omfang',
    'field_name' => 'field_omfang',
    'type' => 'text',
    'widget_type' => 'optionwidgets_select',
    'change' => 'Change basic information',
    'weight' => '3',
    'description' => '',
    'default_value' =>
    array (
      0 =>
      array (
        'value' => '',
      ),
    ),
    'default_value_php' => '',
    'default_value_widget' =>
    array (
      'field_omfang' =>
      array (
        'value' => '',
      ),
    ),
    'group' => 'group_kort',
    'required' => 1,
    'multiple' => '0',
    'text_processing' => '0',
    'max_length' => '',
    'allowed_values' => 'Heltid
Deltid
Ringehjelp',
    'allowed_values_php' => '',
    'op' => 'Save field settings',
    'module' => 'text',
    'widget_module' => 'optionwidgets',
    'columns' =>
    array (
      'value' =>
      array (
        'type' => 'text',
        'size' => 'big',
        'not null' => false,
        'sortable' => true,
        'views' => true,
      ),
    ),
    'display_settings' =>
    array (
      'weight' => '3',
      'parent' => 'group_kort',
      'label' =>
      array (
        'format' => 'above',
      ),
      'teaser' =>
      array (
        'format' => 'default',
        'exclude' => 0,
      ),
      'full' =>
      array (
        'format' => 'default',
        'exclude' => 1,
      ),
      4 =>
      array (
        'format' => 'default',
        'exclude' => 0,
      ),
    ),
  ),
);
$content['extra']  = array (
  'title' => '-5',
  'body_field' => '-2',
  'revision_information' => '-1',
  'comment_settings' => '0',
  'menu' => '-3',
);

Innholdstype for jobbsøknad

$content['type']  = array (
  'name' => 'Jobbsøknad',
  'type' => 'jobbsoknad',
  'description' => '',
  'title_label' => 'Tittel',
  'body_label' => 'Tekst',
  'min_word_count' => '0',
  'help' => '',
  'node_options' =>
  array (
    'status' => true,
    'promote' => false,
    'sticky' => false,
    'revision' => false,
  ),
  'language_content_type' => '0',
  'old_type' => 'jobbsoknad',
  'orig_type' => '',
  'module' => 'node',
  'custom' => '1',
  'modified' => '1',
  'locked' => '0',
  'comment' => '0',
  'comment_default_mode' => '4',
  'comment_default_order' => '1',
  'comment_default_per_page' => '50',
  'comment_controls' => '3',
  'comment_anonymous' => 0,
  'comment_subject_field' => '1',
  'comment_preview' => '1',
  'comment_form_location' => '0',
);
$content['fields']  = array (
  0 =>
  array (
    'label' => 'Stilling',
    'field_name' => 'field_stilling',
    'type' => 'nodereference',
    'widget_type' => 'nodereference_buttons',
    'change' => 'Change basic information',
    'weight' => '43',
    'autocomplete_match' => 'contains',
    'size' => 60,
    'description' => '',
    'default_value' =>
    array (
      0 =>
      array (
        'nid' => '',
      ),
    ),
    'default_value_php' => '',
    'default_value_widget' => NULL,
    'group' => false,
    'required' => 1,
    'multiple' => '0',
    'referenceable_types' =>
    array (
      'stillingsutlysning' => 'stillingsutlysning',
      'story' => 0,
      'jobbsoknad' => 0,
      'page' => 0,
    ),
    'advanced_view' => '--',
    'advanced_view_args' => '',
    'op' => 'Save field settings',
    'module' => 'nodereference',
    'widget_module' => 'nodereference',
    'columns' =>
    array (
      'nid' =>
      array (
        'type' => 'int',
        'unsigned' => true,
        'not null' => false,
        'index' => true,
      ),
    ),
    'display_settings' =>
    array (
      'label' =>
      array (
        'format' => 'above',
        'exclude' => 0,
      ),
      'teaser' =>
      array (
        'format' => 'default',
        'exclude' => 0,
      ),
      'full' =>
      array (
        'format' => 'default',
        'exclude' => 0,
      ),
      4 =>
      array (
        'format' => 'default',
        'exclude' => 0,
      ),
    ),
  ),
);
$content['extra']  = array (
  'title' => '44',
  'body_field' => '46',
  'revision_information' => '47',
  'comment_settings' => '48',
  'menu' => '45',
);

Importdata for contemplate node body

For å legge inn et template for denne innholdstypen, gå til:
domene.com/admin/content/node-type/stillingsutlysning/template

<script type="text/javascript">
function goTo(url) {
window.location=url;
}
</script>

<div style="float: right; width: 25%; border: 2px dashed #ebebeb; padding: 5px;">
<dl>
<dt>Firma:</dt>
<dd>
<?php if(strlen($node->field_webside[0]['safe']) > 5) : ?>
<a href="<?php print $node->field_webside[0]['safe']; ?>" title="<?php print $node->field_firma[0]['safe'] ?>"><?php print $node->field_firma[0]['safe'] ?></a>
<?php else: ?>
<?php print $node->field_firma[0]['safe'] ?>
<?php endif; ?>
</dd>
<dt>Omfang:</dt>
<dd><?php print $node->field_omfang[0]['safe'] ?></dd>
</dl>
<form>
<div id="apply">
<input type="button" value="Søk stillingen" onclick="goTo('/node/add/jobbsoknad')" />
</div>
</form>
<?php global $user; if($user->uid == $node->uid) : ?>
<form>
<div id="applications">
<input type="button" value="Se søknader" onclick="goTo('/jobbsoknader/<?php print $node->nid; ?>')" />
</div>
</form>
<?php endif; ?>
</div>
<?php print $body ?>

Merk at denne innholdstemplaten ikke er optimal. Det er langt bedre å skille JavaScript i egne filer, gi HTML-elementer classer via class-attributten og style classer og IDer ved hjelp av CSS i de respektive CSS-filene til themet du bruker. En del påkrevde HTML-attributter jfr. validert markup er også utelatt, og templaten er kun et eksempel på hvordan man bruker HTML, CSS og PHP for å kontrollere node body, node teaser og node RSS. For mer hjelp med dette, må du gjerne stille spørsmål i hjemmesideforaet.

Importdata for views

For å legge inn denne view, gå til:
domene.com/admin/build/views/import

$view = new view;
$view->name = 'list_jobbsoknad';
$view->description = '';
$view->tag = '';
$view->view_php = '';
$view->base_table = 'node';
$view->is_cacheable = FALSE;
$view->api_version = 2;
$view->disabled = FALSE; /* Edit this to true to make a default view disabled initially */
$handler = $view->new_display('default', 'Defaults', 'default');
$handler->override_option('relationships', array(
  'field_stilling_nid' => array(
    'label' => 'Stilling',
    'required' => 1,
    'delta' => -1,
    'id' => 'field_stilling_nid',
    'table' => 'node_data_field_stilling',
    'field' => 'field_stilling_nid',
    'override' => array(
      'button' => 'Override',
    ),
    'relationship' => 'none',
  ),
));
$handler->override_option('fields', array(
  'title' => array(
    'label' => 'Tittel',
    'alter' => array(
      'alter_text' => 0,
      'text' => '',
      'make_link' => 0,
      'path' => '',
      'link_class' => '',
      'alt' => '',
      'prefix' => '',
      'suffix' => '',
      'target' => '',
      'help' => '',
      'trim' => 0,
      'max_length' => '',
      'word_boundary' => 1,
      'ellipsis' => 1,
      'strip_tags' => 0,
      'html' => 0,
    ),
    'empty' => '',
    'hide_empty' => 0,
    'empty_zero' => 0,
    'link_to_node' => 1,
    'exclude' => 0,
    'id' => 'title',
    'table' => 'node',
    'field' => 'title',
    'override' => array(
      'button' => 'Override',
    ),
    'relationship' => 'none',
  ),
));
$handler->override_option('arguments', array(
  'nid' => array(
    'default_action' => 'not found',
    'style_plugin' => 'default_summary',
    'style_options' => array(),
    'wildcard' => 'all',
    'wildcard_substitution' => 'Alle',
    'title' => '',
    'breadcrumb' => '',
    'default_argument_type' => 'fixed',
    'default_argument' => '',
    'validate_type' => 'numeric',
    'validate_fail' => 'not found',
    'break_phrase' => 0,
    'not' => 0,
    'id' => 'nid',
    'table' => 'node',
    'field' => 'nid',
    'validate_user_argument_type' => 'uid',
    'validate_user_roles' => array(
      '2' => 0,
      '4' => 0,
    ),
    'override' => array(
      'button' => 'Override',
    ),
    'relationship' => 'field_stilling_nid',
    'default_options_div_prefix' => '',
    'default_argument_user' => 0,
    'default_argument_fixed' => '',
    'default_argument_php' => '',
    'validate_argument_node_type' => array(
      'jobbsoknad' => 0,
      'page' => 0,
      'stillingsutlysning' => 0,
      'story' => 0,
    ),
    'validate_argument_node_access' => 0,
    'validate_argument_nid_type' => 'nid',
    'validate_argument_vocabulary' => array(
      '1' => 0,
    ),
    'validate_argument_type' => 'tid',
    'validate_argument_transform' => 0,
    'validate_user_restrict_roles' => 0,
    'validate_argument_php' => '',
  ),
));
$handler->override_option('access', array(
  'type' => 'none',
));
$handler->override_option('cache', array(
  'type' => 'none',
));
$handler->override_option('style_plugin', 'table');
$handler->override_option('style_options', NULL);
$handler = $view->new_display('page', 'Nettside', 'page_1');
$handler->override_option('path', 'jobbsoknader/%');
$handler->override_option('menu', array(
  'type' => 'none',
  'title' => '',
  'description' => '',
  'weight' => 0,
  'name' => 'navigation',
));
$handler->override_option('tab_options', array(
  'type' => 'none',
  'title' => '',
  'description' => '',
  'weight' => 0,
));