Villkorad visning av bild/flash

Events happening in the community are now at Drupal community events on www.drupal.org.
Posted by cato on April 13, 2010 at 7:52am

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

Categories: , , ,

Comments

Du skulle kunna köra en

Posted by pontus_nilsson on April 13, 2010 at 3:22pm

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.

Posted by cato on April 13, 2010 at 8:35pm

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å

<?php
if ($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

<?php
function 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å

Posted by ChristianP on April 14, 2010 at 9:57am

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

Posted by pontus_nilsson on April 15, 2010 at 8:06am

Ä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

Posted by cato on April 15, 2010 at 8:16am

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

Posted by pontus_nilsson on April 15, 2010 at 9:31am

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

Sweden

Group notifications

This group offers an RSS feed. Or subscribe to these personalized, sitewide feeds:

AltStyle によって変換されたページ (->オリジナル) /