Back to top

Autore Topic: Riproposto - Visualizzare gruppo di Custom Fields solo se contengono un dato  (Letto 879 volte)

Offline obenten

  • Nuovo arrivato
  • *
  • Post: 2
    • Mostra profilo
Salve, avrei bisogno di una mano per un problema riguardo la visualizzazione dei nuovi custom fields disponibili in Joomla! (3.9) nell'override del file default.php, grazie.


PREMESSE:

- Si tratta del com_content per l'article (il relativo file default.php al percorso override NomeSito/templates/NomeProprioTemplate/html/com_content/article/default.php )
- Il codice che sto provando utilizza la struttura di controllo if. Forse per semantica in alcuni casi potrebbe essere più "pulito" usare un ciclo for, tuttavia per ora preferirei questa soluzione (struttura if)
------------------------------------------------------------------------------------------

COSA VOGLIO OTTENERE ED IL PROBLEMA RISCONTRATO:

1) Vorrei che venga stampato il codice html SOLO se uno dei due valori (stard-date o end-date, o entrambi, ovviamente) vengono inseriti.

2) Nel caso non ci sia alcun valore inserito NON deve essere inserito nessun codice html (e quindi neanche il div contenitore "contenitore-generale" con <h2>, <p> e <dl>. NIENTE!

3) Se viene inserito uno dei due valori (start-date o end-date) deve essere stampato il div contenitore, <h2>, <p> la <dl> MA SOLO LA COPPIA <dt><dd> del valore corrispondente inserito (e non anche l'altro vuoto).

IL PROBLEMA E' NEL PUNTO 3: non riesco a trovare modo per ottere l'effetto del punto 3

------------------------------------------------------------------------------------------------------

IL CODICE
Il codice che ho realizzato (e che riscontra il problema) è il seguente
(NOTA: Ho provato anche a modificare gli if interni cancellando i relativi
   $params->get('start-date') &&
   $params->get('end-date') &&
   ma niente da  fare, si comporta allo stesso modo)
CODICE:



<?php

    $showStartDate = isset($myCustomFields['start-date']) and !empty($myCustomFields['start-date']);
    $showEndDate = isset($myCustomFields['end-date']) and !empty($myCustomFields['end-date']);
   
        $showDates = $showStartDate || $showEndDate;
        if($showDates){ ?>

        <div id="contenitore-generale">
                <h2>TITOLO DEL BOX</h2>
                <p>testo descrittivo..</p>

                <dl>
                    <?php if ($params->get('start-date') && $showStartDate) : ?>
                            <dt>START DATE</dt>
                            <dd>
                                <?php echo $myCustomFields['start-date']; ?>
                            </dd>
                    <?php endif; ?>

                        <?php if ($params->get('end-date') && $showEndDate) : ?>
                            <dt>END DATE</dt>
                            <dd>
                                <?php echo $myCustomFields['end-date']; ?>
                            </dd>
                    <?php endif; ?>

                </dl>

        </div>
   
        <?php } ?>



Offline rezor

  • Global Moderator
  • Appassionato
  • ********
  • Post: 278
  • Sesso: Maschio
  • If you think education is expensive, try ignorance
    • Mostra profilo
puoi darci un dump di $myCustomFields  e di $params->get('start-date')?

Architetto e Sviluppatore Senior, ho realizzato oltre 150 siti e portali Joomla, una mezza dozzina di estensioni sul JED e oltre 100 estensioni custom. Pubblico su fasterjoomla.com, e contribuisco su stackoverflow, joomla.org e pasqualoni.it
https://www.fasterjoomla.com/logo.png

 



Web Design Bolzano Kreatif