it-swarm.dev

Il testo è scomparso dopo aver preso lo stile dai parametri del database

Ho deciso di estrarre i parametri per il mio modulo direttamente dal database, per inserirli nel mio foglio di stile variabile. So che questo non è il modo raccomandato, ma per motivi di apprendimento trovo che questo sia un buon test.

Lo sto facendo in questo modo:

$db = JFactory::getDbo();
$query = $db->getQuery(true);
$query
    ->select($db->quoteName('params'))
    ->from($db->quoteName('#__modules'))
    ->where($db->quoteName('module') . ' LIKE ' . $db->quote('mod_ext_superfish_menu'));

$db->setQuery($query);
$results = $db->loadResult();
$params = json_decode($results);

var_dump($params);

Funziona bene e ottengo tutte le variabili nel mio CSS. tutto il testo che era presente negli elementi della mia lista, ora è scomparso - quindi, lo stile è giusto, ma il testo che dovrebbe essere negli elementi in stile è svanito. Cosa ho fatto di sbagliato?

Per aggiungere, lo stile è fatto come tale:

.menu {
    line-height:    1.0;

    <?php // WIDTH
    if($params->menuWidth != "") {
        echo "width: ".$params->gmenuWidth."px;";
    } 
    ?>

    <?php // HEIGHT
    if($params->menuHeight != "") {
        echo "height: ".$params->menuHeight."px;";
    }
    ?>



    <?php //margin top & margin left 
    if($params->menuMarginLeft != "") {
    echo "margin-left: ".$params->menuMarginLeft."px; ";
}
if($params->menuMarginTop != "") {
    echo "margin-top: ".$params->menuMarginTop."px; ";
}
?>

}

1
Hocho

Non puoi semplicemente aggiungere CSS al tuo PHP e aspettarti che funzioni.

Ad esempio, quanto segue NON funziona:

<?php  
   .menu {
       font-size: 12px;
   }
?>

In una risposta precedente ho già spiegato come usare addStyleDeclaration(). So che stai cercando di imparare quale è fantastico, ma quando qualcuno consiglia un metodo, non ignorarlo;)

Quindi, in primo luogo, rimuovere tutto il codice e aggiungere quanto segue:

$doc = JFactory::getDocument();

$css = '.menu { line-height: 1.0; }';

if($params->menuWidth != '') {
    $css .= '.menu { width: ' . $params->gmenuWidth . 'px; }';
}
if($params->menuHeight != '') {
    $css .= '.menu { height: ' . $params->menuHeight . 'px; }';
}
if($params->menuMarginLeft != '') {
    $css .= '.menu { margin-left: ' . $params->menuMarginLeft . 'px; }';
}
if($params->menuMarginTop != '') {
    $css .= '.menu { margin-top: ' . $params->menuMarginTop . 'px; }';
} 

$doc->addStyleDeclaration($css);

Vedrai sopra il primo $css Come è. Ma gli altri all'interno delle istruzioni if hanno un . Prima del simbolo =. Ciò significa che il nome della variabile può essere utilizzato più volte senza influire reciprocamente.

Infine, per aggiungere CSS con valore basato su variabili/parametri, attenersi a questo metodo e non utilizzare qualsiasi altro metodo.

Spero che sia di aiuto

2
Lodder