Så mitt exempel är detta:
Jag har en content_profile profil (A). Där finns ett cck-fält med massa alternativ man kan kryssa i (X, Y, Z), i mitt fall har jag valt X och Y.
Det finns även en nodtyp (B) som delar cck-fältet med samma värden(X, Y, Z).
När man skapar en nodtyp B med ett av värdena, ska det komma upp i en lista de noder som har ikryssat antingen X eller Y (eftersom det matchar mot content-profilen).
Problemet med Views Or blir när man väljer antal argument som är fler än antalet värden man har kryssat i.
T ex har jag 1-2 argument i views (eftesom det inte överstiger antal värden man har valt) så går det bra. Men väljer jag 3, försvinner alla(eftersom jag har valt 2 värden, X och Y). Har fått hjälp en bit på vägen av nodeone men en komplett lösning lyckades vi inte komma fram till.
Så här ser php-koden ut för att få ut ETT värde man har valt.
innehåll -> cck-fältets namn och php-kod
global $user; // Hämta den inloggade användaren.
$uid = $user->uid; // Hämta användar id:et
$type = 'NAMNET_PÅ_MIN_CONTENT_PROFILE'; // Namnet på content profile nodtypen
$content_profile = content_profile_load($type, $uid); // Ladda in hela content profile noden
return $content_profile->field_FÄLTETS_NAMN[0]['value'];Har provat med att loopa, det går inte för man får ändå bara ut ett värde. Har provat med att ändra från
return $content_profile->field_FÄLTETS_NAMN[0]['value'];
till
return $content_profile->field_FÄLTETS_NAMN[1]['value'];
och då får man såklart ut nästa värde istället.
Har provat med att skriva ut om fältet är tomt:
if($content_profile->field_FÄLTETS_NAMN[1]['value'] !== NULL ){
eturn $content_profile->field_FÄLTETS_NAMN[1]['value']
}if(!empty($content_profile->field_FÄLTETS_NAMN[1]['value'])){
eturn $content_profile->field_FÄLTETS_NAMN[1]['value']
}Funkar inte heller. Ingenting är ikryssat och allt ska vara dolt om inte rätt argument framförs. Hur ska man göra för att få ut ALLA värden man har valt utan att göra en custom view för varje ny användare och varje gång de ändrar sina uppgifter?
Comments
Flera värden kombinerade med +?
-1-
Om man använder nod-id eller taxonomi-id som argument finns ett alternativ för att tillåta flera värden separerade med antingen plus- eller kommatecken. Jag vet inte om alternativet är tillgängligt för CCK-fält, men i så fall låter det som ett klockrent tillfälle att utnyttja det (istället för att ha separata argument).
-2-
Om du använder flera argument, funkar det inte att bara säga åt vyn att visa alla poster om argumentet saknas? Jag tror inte att det ger en lista med alla noder, utan bara att det frånvarande argumentet inte begränsar vyn ytterligare. (Den som har argumenten alfa/beta/* får alltså samma träffar som den som bara har argumenten alfa/beta.)
Hm. Insåg just att det är ju "action to take if no argument is present" som du använder för att skriva PHP. Testa att returnera "all" (eller den jokerterm viewn använder) om fieldname[1]['value'] saknas, så borde det funka som det ska.
-3-
Det borde gå smidigare att få fram argumenten som du är ute efter. Jag har två förslag:
a) ]Panels](http://drupal.org/project/panels)! En fett användbar modul, som bland annat kan plocka ut diverse värden från en nod och skicka dem som argument till en vy. Panels är en av mina nya stora favoriter. Som av en händelse går det en kurs i Stockholm om Panels och Views, men det är inte förrän i september... (Se signaturen för länk!)
b) Views Attach. En betydligt smalare modul än Panels, men ett bra val om du inte är intresserad av att göra om hela artitekturen på webbplatsen bara för att kunna hämta/skicka lite argument. Den ger två nya displaytyper till VIews, en som lägger in vyer till noder, en som lägger dem till användarsidor. Om du vill visa listan på profilsidan kan Views Attach vara ett klockrent val för att plocka ut CCK-fält och använda dem som argument.
Lycka till!
//Johan Falk, NodeOne
**
Vill du lära dig mer om Drupal? Kolla in samlingen av tips och guider!
Har du en fråga om Drupal? Missa inte FAQ-sidan på forumet!
Nu finns första Drupalboken på svenska! Börja med Drupal -- smart webbpublicering med open source
Missa inte NodeOnes Drupalkurs i Panels och Views den 15-17 september!
Tackar för svaret!
... men vi löste det på ett annat sätt, definitivt inget vackert sätt och hemskt jobbigt att göra. Men det verkar funka
global $user; // Hämta den inloggade användaren.
$uid = $user->uid; // Hämta användar id:et
$type = 'min_content_profile'; // Namnet på content profile nodtypen
$content_profile = content_profile_load($type, $uid); // Ladda in hela content profile noden
$v = $content_profile->field_namnet_pa_mitt_falt[0]['value'];
if (isset($v)) {
return $v;
} else {
return 'xyz';
}
Den sista delen var för att få ut ett värde som aldrig skulle existera, i vårat fall xyz.
$v = $content_profile->field_namnet_pa_mitt_falt[0]['value'];
if (isset($v)) {
return $v;
} else {
return 'xyz';
}