Har ställt den här frågan tidigare men lyckas inte få till det riktigt... Tacksam för hjälp!
Jag kör ju då views2 och cck och har en content-type som innehåller både en bild och ett bildspel. Bilden är ett enkelt imagefield och bildspelet är samma sak fast med fler värden. I teaserläge så funkar ju det här finfint eftersom bildspelet inte ska visas då. Men, i fullnodläge så visas båda fälten dvs först bilden och sen kommer bildspelet (som är implementerat med swftools och jw image rotator) vilket är fel eftersom jag bara vill att bildspelet ska visas. Och det ska enbart visas om det finns bilder i det.
Kan man komma runt detta så att bildspelet visas istället för enkelbilden när det finns bilder i bildspelet?
Alltså:
Finns det data i fält B så visas enbart fält B. Annars visas fält A
Någon klok människa hintade om modulen Views OR men det verkar inte vara så hållbart iom att funktionaliteten är på väg in i Views och man flaggar för att Views OR kommer läggas ner.
//Christopher
Comments
Du skulle kunna köra en
Du skulle kunna köra en preprocess som du lägger i din template.php.
Om du installerat devel så kan du kör en
dpm($vars);i funktionen för att lättare hitta vad dina fält heter.Byt ut MYTHEME mot namnet på ditt tema. Samt MY-CONTENT-TYPE mot den content type som innehåller din slideshow och bild. Fälten field_MYFIELD och field_OTHER-FIELD hittar du genom att köra
dpm($vars);.Det vore kul att höra om någon annan har en idé hur problemet kan lösas.
function MYTHEME_preprocess_node(&$vars) {$node = $vars['node'];
// Check the node type to make sure we have the one we want
if ($node->type == 'MY-CONTENT-TYPE') {
// Check the how many values a field has, if more than one value hide the other field
if (count($vars['field_MYFIELD'])>1){
unset($vars['field_OTHER-FIELD']);
}
}
}
//Pontus Nilsson, Digitalist
Hmm.
Tack Pontus, du ledde helt klart in mig på rätt spår.
views-view-fields.tpl.php var däremot filen jag behövde hacka för att få detta att funka.
koden blev som så här då
<?phpif ($fields['field_bildspel_fid']->content) {
unset($fields['field_image_fid']);
}
?>
Och det verkar funka som det ska. Så tack för ledtrådarna.
Edit: Fast... är det inte så att funktionen ska ligga i template.php precis som du sa men att funktionen som jag ska skapa borde heta
<?phpfunction phptemplate_preprocess_views_view_frontpage__page(&$vars) {
?>
(min view heter frontpage) och det är page-displayen jag vill göra min fältmagi i
Kan du inte bara gå in på
Kan du inte bara gå in på innehållstypen för storyn och sen gå in på Visa fält och uteslut för Full nod? Den kommer ändå visas i Full nod tack vare Views.
Är det i fullnod läge
Är det i fullnod läge (node/xxx) eller i en vy du vill göra valet att släcka det ena eller andra fältet?
Glöm min kod ovan. Om det är i fullnod läge som saker visas så kan du köra något i stil med detta i template.php
function MYTHEME_preprocess_content_field(&$variables) {
$element = $variables['element'];
$field = content_fields($element['#field_name'], $element['#node']->type);
$node = $element['#node'];
switch ($field['field_name']) {
// Count number of images in slideshow. If more than 1 remove ordinary imagefield
case 'MY-MAIN-IMAGE-FIELD':
if($variables['page'] && $node->type == 'MY-CONTENT-TYPE' && (count($node->MY-SLIDESHOW-FIELD) > 1 )) {
unset($variables['items'][0]);
}
break;
}
//Pontus Nilsson, Digitalist
Det är i en vy. (som är av
Det är i en vy. (som är av typen Page)
Om jag kör koden i views-view.tpl.php så funkar min kod fint men jag vet inte om det är rätt ställe för koden.
Alltså för att förklara lite närmare så visas allt på sajten utom admin och ett par statiska htmlblock via views.
Jag har en löpsedelsvy med en blockdisplay, den länkar till den här (page)-vyn som visar en artikel på en specifik url /detail/[nid]/[rubrik].
Du kan göra så som du gjort
Du kan göra så som du gjort med tpl-filen.
Om du istället vill använda en preprocess funktion i din template.php så är det denna funktion du är ute efter: http://drupalcontrib.org/api/function/template_preprocess_views_view_fie... eller template_preprocess_semanticviews_view_fields om du använder semantic views.
//Pontus Nilsson, Digitalist