Posted by jocken on June 20, 2011 at 11:46am
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
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
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
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.
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
Ersatte du MYVIEW med Notisblock och MYMODULE med ditt modulnamn?
//Pontus Nilsson, Digitalist
Löste sig
Det har löst sig genom att det inte är aktuellt längre :P
Jag tackar ändå för hjälpen!