1

来自编码 ub3r n00b 的两个问题...

首先,我使用的是 Devin Price 的选项框架主题,只是想知道如何在<head>我的文件部分中输出背景属性,只有当用户上传图像或选择颜色时,才能header.php主题选项页面输出这?

我的options.php

$options[] = array(
    'name' =>  __('Background', 'options_framework_theme'),
    'desc' => __('Add a background.', 'options_framework_theme'),
    'id' => 'background-one',
    'std' => $background_defaults,
    'type' => 'background' );

我的Theme Options页面:

在此处输入图像描述

我的header.php

<style type="text/css">
<?php $background = of_get_option('background-one');
    echo 'body {';
        if ($background['color']) {   
        echo '
        background: ' .$background['color']. ';';
        }

        if ($background['image']) {
        echo '
        background: url('.$background['image']. ') ';
            echo ''.$background['repeat']. ' ';
            echo ''.$background['position']. ' ';
            echo ''.$background['attachment']. ';';
        } 
    echo '
    }';
?>
</style>

在我的网站前端工作得非常好,将 CSS 显示为:

body {
    background: #8224e3;
    background: url(images/bg03.gif) repeat top left fixed;
}   

但是如果用户没有通过Theme Options页面选择颜色或图像作为背景,源代码将输出:

body {
}

如果用户没有选择背景,我怎么能删除上面的 CSS?

根据我收集的信息,if需要创建一个语句,但我不知道如何正确编写它,因为我对 php 还很陌生。


其次,我如何能够在框架中设置默认背景图像?

我的options.php

// Background Defaults
    $background_defaults = array(
        'color' => '',
        'image' => '',
        'repeat' => 'no-repeat',
        'position' => 'top left',
        'attachment' => 'fixed' );

谢谢

4

1 回答 1

1

只需将一些东西移动到 if 语句中,如下所示:

<?php 
    $background = of_get_option('background-one');
    if ($background['color'] || $background['image']) {
        echo '<style type="text/css" >';
        echo 'body {';
        if ($background['color']) {   
            echo '
            background: ' .$background['color']. ';';
        }

        if ($background['image']) {
            echo '
            background: url('.$background['image']. ') ';
            echo ''.$background['repeat']. ' ';
            echo ''.$background['position']. ' ';
            echo ''.$background['attachment']. ';';
        } 
        echo '
        }';
        echo '</style>';
    }
?>

而且,对于您的第二个问题,只需进行以下更改:

// Set up a default image
// NOTE: This is designed for the image to be located in your theme folder, inside an images folder
$default = get_bloginfo("template_url") . 'images/default.jpg';
// Background Defaults
$background_defaults = array(
    'color' => '',
    'image' => $default,
    'repeat' => 'no-repeat',
    'position' => 'top left',
    'attachment' => 'fixed' );
于 2012-12-16T23:10:18.883 回答