[RISOLTO] Vedere campi Email e Link in CCK

7 contenuti / 0 new
Ultimo contenuto
[RISOLTO] Vedere campi Email e Link in CCK

Ciao,
ho cercato la soluzione sia qui che su drupalorg, ma non ho trovato nulla.

Ho attivato i moduli Email (per inserire l'indirizzo email degli utenti) e Link (per inserire l'URL del sito) i quali funzionano perfettamente.
Vorrei, però, che fossero visibili solo se vengono inseriti dei valori, dato che non sempre gli utenti avranno un indirizzo email o un sito personale.

Ho provato a mettere nel tpl.php questo codice ma non funziona, il campo email non compare, anche se ha un valore:

<?php if($node->field_email[0]['value'] != ''):?>
<div class="field field-type-email field-field-email">
    <div class="field-items">
        <div class="field-item odd">
            <div class="field-label-inline-first">
                E-mail:&nbsp;
            </div>
            <?php print $node->field_email[0]['view'] ?>
        </div>
    </div>
</div>
<?php endif; ?>

Se elimino le stringhe

<?php if($node->field_email[0]['value'] != ''):?>
<?php endif; ?>

il campo email diventa visibile, ma è visibile sempre, anche quando non ha un valore.

Il codice sopra funziona con tutti i tipi di campi text, image, ecc, ma non con i campi email e link. Qualcuno mi sa dire come fare?

Grazie mille !

hai controllato con Devel (o con print_r($node)) come è fatto l'oggetto $node e se ha l'elemento 'value'?

Ciao Pinolo e grazie del suggerimento.

Ho controllato con print_r e non mi è comparso alcun elemento 'value'.

Il codice che mi ha restituito è:

stdClass Object ( [nid] => 114 [type] => negozio [language] => it [uid] => 1 [status] => 1 [created] => 1256130086 [changed] => 1257849183 [comment] => 0 [promote] => 0 [moderate] => 0 [sticky] => 0 [tnid] => 0 [translate] => 0 [vid] => 114 [revision_uid] => 1 [title] => Fornaio [body] =>

Quindi? Che fare?

Dovrebbe esserci anche qualcos'altro dopo il body. Da qualche parte dovrebbe esserci $node->field_email[0]

Ho guardato meglio e... c'è un sacco di roba ! Facendo "print_r" compare anche il campo email con l'indirizzo email cliccabile. Ma se tolgo "print_r" il campo email scompare :-(

Ad ogni modo, quello che vedo dopo [body] => è:

[field_email] => Array
        (
            [0] => Array
                (
                    [email] => [email protected]
                    [safe] => [email protected]
                    [view] => [email protected]
                )
        )

poi, per quanto riguarda il campo email, c'è anche:

[field_email] => Array
                (
                    [#type_name] => negozio
                    [#context] => full
                    [#field_name] => field_email
                    [#post_render] => Array
                        (
                            [0] => content_field_wrapper_post_render
                        )
                    [#weight] => 1
                    [field] => Array
                        (
                            [#description] =>
                            [items] => Array
                                (
                                    [0] => Array
                                        (
                                            [#formatter] => default
                                            [#node] => stdClass Object
*RECURSION*
                                            [#type_name] => negozio
                                            [#field_name] => field_email
                                            [#weight] => 0
                                            [#theme] => email_formatter_default
                                            [#item] => Array
                                                (
                                                    [email] => [email protected]
                                                    [safe] => [email protected]
                                                    [#delta] => 0
                                                )
                                            [#title] =>
                                            [#description] =>
                                            [#theme_used] => 1
                                            [#printed] => 1
                                            [#type] =>
                                            [#value] =>
                                            [#prefix] =>
                                            [#suffix] =>
                                            [#children] => [email protected]
                                        )
                                    [#title] =>
                                    [#description] =>
                                    [#children] => [email protected]
                                    [#printed] => 1
                                )
                            [#single] => 1
                            [#attributes] => Array
                                (
                                )
                            [#required] =>
                            [#parents] => Array
                                (
                                )
                            [#tree] =>
                            [#context] => full
                            [#page] => 1
                            [#field_name] => field_email
                            [#title] => E-mail
                            [#access] => 1
                            [#label_display] => above
                            [#teaser] =>
                            [#node] => stdClass Object
*RECURSION*
                            [#type] => content_field
                            [#children] => [email protected]
                            [#printed] => 1
                        )
                    [#title] =>
                    [#description] =>
                    [#children] =>
E-mail:
[email protected]
                    [#printed] => 1
                )

Apparentemente sembra tutto a posto. Sembra simile al codice degli altri campi che vengono visualizzati. Ribadisco quanto ho detto nel primo post, e cioè che il problema esiste solo con i campi field-type email e field-type-link e solo se abbinati a "php if". È una mia supposizione, ma è l'unica cosa diversa che vedo tra questi campi e gli altri campi CCK.

Non esiste l'elemento $node->field_email[0]['value'], per questo il tuo IF non restituisce nulla. Il controllo fallo su $node->field_email[0]['email']

Grazie Pinolo. Hai ragione.

In effetti al posto di "value" va messo "view", cioè il codice

<?php if($node->field_email[0]['value'] != ''):?>

diventa

<?php if($node->field_email[0]['view'] != ''):?>

A questo punto funziona tutto.