Смена логотипа со скриптом даты - PullRequest
0 голосов
/ 29 октября 2009

Мне просто интересно, может ли кто-нибудь указать мне правильное направление: я ищу сценарий, в соответствии с которым логотип на моем сайте меняется в зависимости от даты; так, например, в стиле haloween один в ближайшее время.

Я начал с двух массивов, 1 из дат начала и 1 из дат окончания (не уверен, даже если это лучший способ!):

<?php
$start_dates = array('01/01' => 'New Years',
                     '14/02' => 'Valentine Day',
                     '16/02/2010' => 'Pancake Day',
                     '17/03' => 'St Patricks Day',
                     '01/04' => 'April Fools',
                     '02/04/2010' => 'Easter',
                     '23/04' => 'St Georges Day',
                     '11/06/2010' => 'World Cup',
                     '31/10' => 'Halloween',
                     '05/11' => 'Guy Fawkes',
                     '11/11' => 'Armistice Day',
                     '16/10' => 'Today',
                     '15/12' => 'Christmas');

$end_dates = array( '08/01' => 'New Years',
                    '15/02' => 'Valentine Day',
                    '17/02/2010' => 'Pancake Day',
                    '18/03' => 'St Patricks Day',
                    '02/04' => 'April Fools',
                    '06/04/2010' => 'Easter',
                    '24/04' => 'St Georges Day',
                    '12/07/2010' => 'World Cup',
                    '01/11' => 'Halloween',
                    '06/11' => 'Guy Fawkes',
                    '12/11' => 'Armistice Day',
                    '17/10' => 'Today',
                    '01/01' => 'Christmas');
?>

Пока все просто ... проблема в том, что мне нужен способ, если сегодняшняя дата попадает между датой начала и даты окончания, а затем изменить имя файла изображения.

Это длинный выстрел, но я надеюсь, что кто-то будет достаточно любезен, чтобы помочь.

Спасибо, Б.

Ответы [ 2 ]

0 голосов
/ 29 октября 2009

вы должны использовать массив, подобный этому:

$dates = array();
$dates[] = array(
    'name' => 'New Years'
    'start' = '01/14',
    'end' => '01/20',
    'style' => 'haloween',
);
$dates[] = array(
    //...
);

тогда вы можете получить стиль следующим образом:

$style='default';

// date as number e.g. 130 (january 30th)
$currDate = date('md',time()) * 1;
foreach ($dates AS $k => $v) {
    $tmp = explode("/",$v['start'];
    $start = ($tmp[1].$tmp[0])*1;
    $tmp = explode("/",$v['end'];
    $stop = ($tmp[1].$tmp[0])*1;
    if ($start <= $currDate && $currDate < $stop) {
        $style=$v['style'];
        break;
    }
}

echo 'style: '.$style;

Еще не проверял код, поэтому не стесняйтесь поправлять меня, если я ошибаюсь.

0 голосов
/ 29 октября 2009

как это

$events = array(
    'New Year' => '01/01 01/08',
    'Pancake Day' => '16/02/2010 17/02/2010',
    //etc
);

echo find_event($events, '16/02');

где find_event () равно

function mdy2time($date) {
    $e = explode('/', $date);
    if(count($e) < 3)
        $e[] = '2010';
    return strtotime("$e[1]-$e[0]-$e[2]");
}

function find_event($events, $date = null) {
    $date = is_null($date) ? time() : mdy2time($date);

    foreach($events as $name => $range) {
        list($start, $end) = explode(' ', $range);
        if($date >= mdy2time($start) && $date <= mdy2time($end))
            return $name;
    }
    return null;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...