Funzione If su campo personalizzato

5 contenuti / 0 new
Ultimo contenuto
Funzione If su campo personalizzato

Salve a tutti, utilizzo drupal 7 ed ho bisogno di un vostro aiuto per risolvere un problemino.

Ho creato all'interno di un contenuto un campo personalizzato Booleano (on/off) che si chiama field_attiva_vendita.

Volevo visualizzare una parte di contenuto di un nodo se questo campo aveva valore "1" e non visualizzarlo se aveva valore "0" (ovvero da on riportato su off). Ho utilizzato la funzione if come vi posto qui sotto:

<?php
 
if ($field_attiva_vendita):
?>

Opera in vendita!
Entra nella pagina dedicata per trovare tutti i riferimenti.

<?php
 
print $node_url;
?>
" rel="nofollow">APRI OPERA

<?php
 
endif;
?>

Chiaramente cosi mi funziona solo quando il campo è pieno o vuoto, cioè pieno mi fa vedere il contenuto e vuoto non me lo fa vedere, ma quando sposto il valore da on a off il campo risulta sempre pieno, con valore "0".
Io vorrei invece vederlo quando il campo restituisce il valore "1" e non vederlo quando restituisce il valore "0".

Qualcuno mi sa consigliare come modificare il codice per ottenere questo?
Grazie per ora

Drupal Version:

Meggis (non verificato)
Ritratto di Anonimo

Campi condizionali per Drupal 7 è una interfaccia utente per i nuovi membri API , oltre alla possibilità di modificare i campi aspetto e il comportamento in determinate condizioni durante la visualizzazione dei contenuti.
È possibile, ad esempio, definire un campo personalizzato "Articolo rompicapo" che viene mostrato solo se "ha teaser di" casella è selezionata.

Forse, è proprio quello che ti serve
https://www.drupal.org/project/conditional_fields

Penso però che puoi mettere il phpcode di questo tipo:

<?php
$return
= FALSE;
if( isset(
$contexts['argument_nid_1']->data->field_section_display[0]['value']) ){
  if(
$contexts['argument_nid_1']->data->field_section_display[0]['value'] == 'on' ){
   
$return = TRUE;
  }
 
// debug
 
drupal_set_message('<pre>' . print_r($contexts , true) . '</pre>');
}
return
$return;
?>

Nb:
1. è uno spunto che ho usato io, metti il nome del campo corretto e fai debug.
2. è opportuno che tu conosca il php

Grazie mille per l'aiuto prezioso che mi hai dato.

ho trovato la soluzione, è questa qui sotto. Un pelo più semplice di quello che mi hai postato tu... e se devo dire la verità non ho capito perchè deve essere presente l' "#items"

<?php
if (isset($content['field_attiva_vendita']['#items'][0]) &&
(
$content['field_attiva_vendita']['#items'][0]['value'] == 1)) {
?>

Codice da visualizzare se uguale a "1"

<?php
 
}
?>

Grazie mille ancora!

Meggis (non verificato)
Ritratto di Anonimo

Figurati!
Serve anche a me approfondire...

Drupal con il suo framework scrive gli oggetti (field html...) anche con array strutturati
Ad esempio la textarea dove sto scrivendo si chiama comment_body[und][0][value] (lo si evince con F12)
quindi da codice dovrebbe essere: $form['comment_body'][LANGUAGE_NONE][0][value]; da utilizzare in hook_form_alter sempre per fareun esempio. Ecco perchè #item: fa parte della struttura dell'elemento.

Ciao

Non si finisce mai d'imparare! A volte mi chiedo se CMS come wordpress o joomla hanno la stessa logica dietro.
Ma ormai dopo anni di drupal non ho più la forza di mollarlo per provare altre strade!