Joomla.it Forum
Joomla! 3 => Joomla! 3 => : synt.net 12 Apr 2018, 09:24:59
-
Buongiorno,
dopo aver seguito passo passo l'articolo "Modulo di contatto con il Check per accettare l'informativa sulla Privacy (http://www.joomla.it/e-ancora/articoli-community-3x/8688-modulo-di-contatto-con-il-check-per-accettare-l-informativa-sulla-privacy.html)" mi trovo ad avere il seguente problema:
nel frontend anzichè comparire il testo della checkbox mi compare il valore, ovvero anzichè comparire "Dichiaro di aver letto e di accettare il testo della Informativa sulla Privacy" mi compare "Si".
Qualcuno ha avuto la stessa problematica e sa aiutarmi?
Grazie per le risposte
-
potrebbe dipendere dal template.
Ti conviene mettere un link al sito al fine di analizzare il codice per capire cosa succede.
-
Grazie per la risposta Giusebos però preferirei scriverti in privato l'url del sito...posso?
-
No, in privato è la negazione del forum, per questo abbiamo una sezione di annunci.
-
La richiesta di inviarti l'url del sito era solo per riservatezza nei confronti del mio cliente...
Comunque il bug è visibile nell'immagine allegata.
Il problema inoltre si presenta anche con altre installazioni di Joomla 3.8.6 che utilizzano template diversi rispetto a quello utilizzato nel sito dell'immagine in allegato.
-
Se può essere d'aiuto il codice del file dell'override del form dei contatti per i campi aggiuntivi è il seguente:
<?php //Dynamically load any additional fields from plugins. ?>
<?php foreach ($this->form->getFieldsets() as $fieldset) : ?>
<?php if ($fieldset->name != 'contact'):?>
<?php $fields = $this->form->getFieldset($fieldset->name);?>
<?php foreach ($fields as $field) : ?>
<div class="control-group">
<?php if ($field->hidden) : ?>
<div class="controls">
<?php echo $field->input;?>
</div>
<?php else:?>
<div class="control-label">
<?php echo $field->label; ?>
<?php if (!$field->required && $field->type != "Spacer") : ?>
<span class="optional"><?php echo JText::_('COM_CONTACT_OPTIONAL');?></span>
<?php endif; ?>
</div>
<div class="controls"><?php echo $field->input;?></div>
<?php endif;?>
</div>
<?php endforeach;?>
<?php endif ?>
<?php endforeach;?>
-
Qualcuno ha riscontrato questo comportamento anomalo?
-
Dopo parecchie ricerche ho scoperto che modificando questo file del core di joomla "administrator/components/com_fields/libraries/fieldslistplugin.php" nel seguente modo:
public function onCustomFieldsPrepareDom($field, DOMElement $parent, JForm $form)
{
$fieldNode = parent::onCustomFieldsPrepareDom($field, $parent, $form);
if (!$fieldNode)
{
return $fieldNode;
}
$fieldNode->setAttribute('validate', 'options');
foreach ($this->getOptionsFromField($field) as $value => $name)
{
$option = new DOMElement('option', htmlspecialchars($value, ENT_COMPAT, 'UTF-8'));
- $option->textContent = htmlspecialchars(JText::_($name), ENT_COMPAT, 'UTF-8');
+ $option->nodeValue = htmlspecialchars(JText::_($name), ENT_COMPAT, 'UTF-8');
$element = $fieldNode->appendChild($option);
$element->setAttribute('value', $value);
}
return $fieldNode;
}
ho risolto il mio problema.
Vi chiedo se questa modifica può dare qualche problema al cms.
Grazie per le risposte...
-
E' sempre sconsigliabile modificare il core, al primo aggiornamento perdi tutte le modifiche.
Ci sono molti moduli contatti che hanno di base il check, perché non provarli?
-
Grazie per la risposta tomtomeight,
lo so che è sconsigliato modificare il core, e solitamente non lo faccio mai.
Visto che esistono i campi aggiuntivi volevo utilizzare la funziona integrata di Joomla.
Credo che se esiste una funzione del core di Joomla che non funziona correttamente sia preferibile cercare di sistemarla, anzichè ricorrere all'installazione di moduli esterni...
-
Ho scoperto che il problema risiedeva nella versione di php utilizzata nell'hosting.
Infatti $option->textContent funziona con php >= 5.6.1
Invece per una retrocompatibilità bisogna utilizzare $option->nodeValue.
Ho risolto aggiornando la versione di php dell'hosting.
-
Cortesemente ti chiedo di inserire [RISOLTO] all'inizio del titolo del tuo primo post in modo da facilitare la navigazione del forum da parte degli utenti, grazie della comprensione.