it-swarm.dev

データベースパラメータからスタイルを取得した後、テキストが消えた

モジュールのパラメーターをデータベースから直接抽出して、変数のスタイルシートに配置することにしました。私はこれが推奨される方法ではないことを知っていますが、学ぶためにこれは良いテストだと思います。

私はこれを次のようにしています:

$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);

これはうまく機能し、すべての変数をCSSに取り込みます。リストアイテムに使用されていたすべてのテキストが表示されなくなりました。つまり、スタイルは適切ですが、スタイル付きアイテムにあるはずのテキストが消えています。何が悪いのでしょうか?

追加すると、スタイリングは次のように行われます。

.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

PHPファイルにCSSを追加するだけでは機能しません。

たとえば、以下は[〜#〜] not [〜#〜]で機能します。

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

私は以前の回答でaddStyleDeclaration()の使用方法を説明しました。私はあなたがどれが素晴らしいかを学ぼうとしているのを知っていますが、誰かが方法を勧めたとき、それを無視しないでください;)

したがって、最初に、すべてのコードを削除し、以下を追加します。

_$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);
_

上記の最初の_$css_がそのまま表示されます。ただし、ifステートメント内の他のものは、_._記号の前に_=_があります。つまり、相互に影響を与えることなく、変数名を複数回使用できます。

最後に、変数/パラメータに基づいて値を持つCSSを追加するには、このメソッドに固執し、しないでください他のメソッドを使用します。

お役に立てれば

2
Lodder