Hjälp med argument i views

We encourage users to post events happening in the community to the community events group on https://www.drupal.org.
jocken's picture

Jag har en content type: Page, i page finns ett fält som heter nr_of_notes. I min sidebar har jag ett view-block med notes. Meningen är att man ska kunna ändra "Inlägg att visa"(number of posts)-antalet i views med hjälp av nr_of_notes-fältet. Så skriver jag i 5 i nr_of_notes, ska det visas 5 stycken notes på just den sidan.

Jag får ut content-typen notes, men kan inte filtrera ner dem.

$node=node_load(arg(1));
if($node) {
$view->nodes_per_page = $node->field_nr_of_notes[0]['value'];
}

Har provat med detta som php argument men det funkar inte. Någon som har gjort något liknande eller finns det någon bra modul?

Comments

Vilken drupal, views version

Cyclonecode's picture

Vilken drupal, views version kör du?
Tänker att du kanske ska använda $node->field_nr_of_notes['und'][0]['value'],
testa att dumpa ut hela noden och se vilken data den innehåller.

Versioner

jocken's picture

Jag kör drupal 6 och views 2. Vad gör und? Kan man dumpa ut data i views?

Testa att köra detta i en

pontus_nilsson's picture

Testa att köra detta i en custom modul. Eventuellt behöver du gå på $view->display['block'] och ändra items_per_page där istället. Du kanske vill köra lite fler checkar så t.ex. $node->type är den du specifierar. OBS otestad kod :)

Installera modulen Devel om du vill kunna dumpa ut data. Lägg till kpr($view); inne i funktionen.

/**
* Implementation of hook_views_pre_build().
*/
function MYMODULE_views_pre_build(&$view) {
  // Only alter the view MYVIEW
  if ($view->name == 'MYVIEW') {
    // If a node is available in the menu
    if (menu_get_object('node')) {
      // Fetch the node
      $node = menu_get_object('node');
      // Get the value of the field field_nr_of_notes
      $items_per_page = $node->field_nr_of_notes[0]['value'];
      // Alter the view to only display our number of items
      $view->display_handler->options['items_per_page'] = $items_per_page;
    }
  }
}

//Pontus Nilsson, Digitalist

modulen funkade inte alls.

jocken's picture

modulen funkade inte alls. Hände ingenting när jag aktiverade den. Jag kanske har glömt att lägga in något.

Men det måste finnas ett sätt att skriva i arguments för views?

<?php
/<strong>
*
Implementation of hook_views_default_views().
<
em>/
function
foo_views_default_views() {
  /</
em>
   *
View 'Notisblock'
  
<em>/
 
$view = new view;
 
$view->name = 'Notisblock';
 
$view->description = '';
 
$view->tag = '';
 
$view->view_php = '';
 
$view->base_table = 'node';
 
$view->is_cacheable = FALSE;
 
$view->api_version = 2;
 
$view->disabled = FALSE; /</em> Edit this to true to make a default view disabled initially <em>/
 
$handler = $view->new_display('default', 'Defaults', 'default');
 
$handler->override_option('fields', array(
   
'title' => array(
     
'label' => '',
     
'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,
       
'html' => 0,
       
'strip_tags' => 0,
      ),
     
'empty' => '',
     
'hide_empty' => 0,
     
'empty_zero' => 0,
     
'link_to_node' => 0,
     
'exclude' => 0,
     
'id' => 'title',
     
'table' => 'node',
     
'field' => 'title',
     
'relationship' => 'none',
    ),
   
'body' => array(
     
'label' => '',
     
'alter' => array(
       
'alter_text' => 0,
       
'text' => '',
       
'make_link' => 0,
       
'path' => '',
       
'link_class' => '',
       
'alt' => '',
       
'prefix' => '',
       
'suffix' => '',
       
'target' => '',
       
'help' => '',
       
'trim' => 1,
       
'max_length' => '130',
       
'word_boundary' => 1,
       
'ellipsis' => 1,
       
'html' => 1,
       
'strip_tags' => 0,
      ),
     
'empty' => '',
     
'hide_empty' => 0,
     
'empty_zero' => 0,
     
'exclude' => 0,
     
'id' => 'body',
     
'table' => 'node_revisions',
     
'field' => 'body',
     
'relationship' => 'none',
    ),
   
'field_lank_url' => array(
     
'label' => '',
     
'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,
       
'html' => 0,
       
'strip_tags' => 0,
      ),
     
'empty' => '',
     
'hide_empty' => 0,
     
'empty_zero' => 0,
     
'link_to_node' => 1,
     
'label_type' => 'none',
     
'format' => 'default',
     
'multiple' => array(
       
'group' => TRUE,
       
'multiple_number' => '',
       
'multiple_from' => '',
       
'multiple_reversed' => FALSE,
      ),
     
'exclude' => 0,
     
'id' => 'field_lank_url',
     
'table' => 'node_data_field_lank',
     
'field' => 'field_lank_url',
     
'relationship' => 'none',
    ),
  ));
 
$handler->override_option('sorts', array(
   
'created' => array(
     
'order' => 'DESC',
     
'granularity' => 'second',
     
'id' => 'created',
     
'table' => 'node',
     
'field' => 'created',
     
'relationship' => 'none',
    ),
  ));
 
$handler->override_option('arguments', array(
   
'language' => array(
     
'default_action' => 'ignore',
     
'style_plugin' => 'default_summary',
     
'style_options' => array(),
     
'wildcard' => 'all',
     
'wildcard_substitution' => 'Alla',
     
'title' => '',
     
'breadcrumb' => '',
     
'default_argument_type' => 'fixed',
     
'default_argument' => '',
     
'validate_type' => 'none',
     
'validate_fail' => 'ignore',
     
'id' => 'language',
     
'table' => 'node',
     
'field' => 'language',
     
'validate_user_argument_type' => 'uid',
     
'validate_user_roles' => array(
       
'2' => 0,
       
'3' => 0,
      ),
     
'relationship' => 'none',
     
'default_options_div_prefix' => '',
     
'default_argument_fixed' => '',
     
'default_argument_user' => 0,
     
'default_argument_php' => '',
     
'validate_argument_node_type' => array(
       
'blaboxunder' => 0,
       
'footer_information' => 0,
       
'notisar' => 0,
       
'page' => 0,
       
'startsida' => 0,
       
'story' => 0,
       
'undersida' => 0,
      ),
     
'validate_argument_node_access' => 0,
     
'validate_argument_nid_type' => 'nid',
     
'validate_argument_vocabulary' => array(),
     
'validate_argument_type' => 'tid',
     
'validate_argument_transform' => 0,
     
'validate_user_restrict_roles' => 0,
     
'validate_argument_php' => '',
    ),
   
'field_antal_notiser_value' => array(
     
'default_action' => 'ignore',
     
'style_plugin' => 'default_summary',
     
'style_options' => array(),
     
'wildcard' => 'all',
     
'wildcard_substitution' => 'Alla',
     
'title' => '',
     
'breadcrumb' => '',
     
'default_argument_type' => 'fixed',
     
'default_argument' => '',
     
'validate_type' => 'php',
     
'validate_fail' => 'not found',
     
'break_phrase' => 0,
     
'not' => 0,
     
'id' => 'field_antal_notiser_value',
     
'table' => 'node_data_field_antal_notiser',
     
'field' => 'field_antal_notiser_value',
     
'validate_user_argument_type' => 'uid',
     
'validate_user_roles' => array(
       
'2' => 0,
       
'3' => 0,
      ),
     
'relationship' => 'none',
     
'default_options_div_prefix' => '',
     
'default_argument_fixed' => '',
     
'default_argument_user' => 0,
     
'default_argument_php' => '',
     
'validate_argument_node_type' => array(
       
'blaboxunder' => 0,
       
'footer_information' => 0,
       
'notisar' => 0,
       
'page' => 0,
       
'startsida' => 0,
       
'story' => 0,
       
'undersida' => 0,
      ),
     
'validate_argument_node_access' => 0,
     
'validate_argument_nid_type' => 'nid',
     
'validate_argument_vocabulary' => array(),
     
'validate_argument_type' => 'tid',
     
'validate_argument_transform' => 0,
     
'validate_user_restrict_roles' => 0,
     
'validate_argument_php' =>
//Här mitt argument som inte funkar
'$node=node_load(arg(1));
if($node) {
$view->nodes_per_page = $node->field_nr_of_notes[0][\'value\'];
}'
,
    ),
  ));
 
$handler->override_option('filters', array(
   
'type' => array(
     
'operator' => 'in',
     
'value' => array(
       
'notisar' => 'notisar',
      ),
     
'group' => '0',
     
'exposed' => FALSE,
     
'expose' => array(
       
'operator' => FALSE,
       
'label' => '',
      ),
     
'id' => 'type',
     
'table' => 'node',
     
'field' => 'type',
     
'relationship' => 'none',
    ),
   
'language' => array(
     
'operator' => 'in',
     
'value' => array(
       
'</em></strong>CURRENT_LANGUAGE<strong><em>' => '</em></strong>CURRENT_LANGUAGE***',
      ),
     
'group' => '0',
     
'exposed' => FALSE,
     
'expose' => array(
       
'operator' => FALSE,
       
'label' => '',
      ),
     
'id' => 'language',
     
'table' => 'node',
     
'field' => 'language',
     
'relationship' => 'none',
    ),
  ));
 
$handler->override_option('access', array(
   
'type' => 'none',
  ));
 
$handler->override_option('cache', array(
   
'type' => 'none',
  ));
 
$handler->override_option('items_per_page', 5);
 
$handler = $view->new_display('block', 'Block', 'block_1');
 
$handler->override_option('block_description', '');
 
$handler->override_option('block_caching', -1);
 
$views[$view->name] = $view;

  return
$views;
}
?>

Ersatte du MYVIEW med

pontus_nilsson's picture

Ersatte du MYVIEW med Notisblock och MYMODULE med ditt modulnamn?

//Pontus Nilsson, Digitalist

Löste sig

jocken's picture

Det har löst sig genom att det inte är aktuellt längre :P

Jag tackar ändå för hjälpen!