TinyPortal

Development => Block Codes => Topic started by: Skhilled on November 27, 2015, 02:36:29 PM

Title: Holiday Blocks
Post by: Skhilled on November 27, 2015, 02:36:29 PM
Ever wish you could have a block that only shows on specific days and turns itself off the day after? Well, this block code can do just that! This code was created by Chen Zhen/Underdog for me and I've tested it with TP and it works.

All you have to do is change 2 lines in the code:

The date in this line:
Quote$showBlock = array('month'=> 11, 'day' => 26);

And add your image in this line:
Quote<div align="center">(https://www.tinyportal.net/proxy.php?request=http%3A%2F%2Fmysite.com%2Fsome_image.jpg&hash=8142029672de9abbfc682d61f806c09e63b65cbf)</div>';

You should also set Frame Options to: Do not use title/frame styles - or when the block disappears you'll still see part of it.

And set the block to: Do not allow block to collapse - or you'll still see the upshrink.

// opt month & day to show block
$showBlock = array('month'=> 11, 'day' => 26);

global $user_info;

$time = time()+($user_info['time_offset'] * 3600);
$date = array('month' => (int)date('m', $time), 'day' => (int)date('d', $time));

if ($showBlock['day'] != $date['day'] || $showBlock['month'] != $date['month'])
    return false;

// PHP code below this line
   
    echo '
    <div align="center"><img src="http://mysite.com/some_image.jpg"></div>';
Title: Re: Holiday Blocks
Post by: Ken. on November 27, 2015, 02:56:56 PM
Very nice!
Thank you Skhilled and thanks to Underdog for this handy little Block Code!  O0
Title: Re: Holiday Blocks
Post by: Ken. on November 27, 2015, 03:11:21 PM
Question:
Can this block be set to show for more than one day in succession? Example; you have an event/holiday that you would like to highlight for three days.

Thanks. :)
Title: Re: Holiday Blocks
Post by: Ken. on November 27, 2015, 03:26:15 PM
Of course it could be used in three separate blocks, with them set to display one after the other, on each successive day, in order and having individual content for each day.  O0
Title: Re: Holiday Blocks
Post by: Skhilled on November 27, 2015, 03:37:27 PM
Quote from: Ken. on November 27, 2015, 03:11:21 PM
Question:
Can this block be set to show for more than one day in succession? Example; you have an event/holiday that you would like to highlight for three days.

Thanks. :)
As I was posting that I just realized that someone was going to ask about that! LOL

I assume you could modify the array for the day in some way to make it work.

Quote from: Ken. on November 27, 2015, 03:26:15 PM
Of course it could be used in three separate blocks, with them set to display one after the other, on each successive day, in order and having individual content for each day.  O0
Yes, that could work too.
Title: Re: Holiday Blocks
Post by: Ken. on November 27, 2015, 04:32:46 PM
I think the 'different block for each day' idea may be  better way to go in some cases because you could include a different image or message for each day.
Title: Re: Holiday Blocks
Post by: Sayaka Maizono on November 28, 2015, 03:25:26 AM
Here, I made one that has multiple date support.

<?php

/*
@block Show Days
@author Rhode Fey (Sayaka Maizono)
*/

/*
Usage:
fill $dates array with arrays of the following:
array('month' => integer, 'day' => integer),
Example:
array('month' => 11, 'day' => 26),
array('month' => 11, 'day' => 26),

This will show only on November 26 and November 27
*/

$dates = array(
array('month'=> 11'day' => 26),
array('month'=> 11'day' => 27),
array('month'=> 11'day' => 28),
);

/*
 *
*/

global $user_info;

$time time() + ($user_info['time_offset'] * 3600);
$current_date = array('month' => (int) date('m'$time), 'day' => (int) date('d'$time));

$show false;

foreach (
$dates as $k => $date)
{
if (empty($date))
continue;

if ($date['month'] == $current_date['month'] && $date['day'] == $current_date['day'])
{
$show true;
continue;
}
}

if (
$show)
{
    echo 
'
Some html if you want to show if it is the date.'
;
}
else
{
echo '
Some html that you want to show if it is not the date.'
;
}

?>
Title: Re: Holiday Blocks
Post by: lurkalot on November 28, 2015, 12:34:37 PM
Quote from: Skhilled on November 27, 2015, 02:36:29 PM
Ever wish you could have a block that only shows on specific days and turns itself off the day after? Well, this block code can do just that! This code was created by Chen Zhen/Underdog for me and I've tested it with TP and it works.


Quote from: Sayaka Maizono on November 28, 2015, 03:25:26 AM

Here, I made one that has multiple date support.


@ Skhilled and Sayaka, thanks to both of you.  Haven't tried these snippets yet, but I'm sure they will be useful.  O0



Title: Re: Holiday Blocks
Post by: Skhilled on November 28, 2015, 04:44:37 PM
Thanks, Sayaka! I knew the array needed to be set up that way but way not sure how to code the rest so it would work.
Title: Re: Holiday Blocks
Post by: Freddy on November 28, 2015, 04:48:31 PM
Thanks for the new block - a really good idea that one :)
Title: Re: Holiday Blocks
Post by: Skhilled on November 29, 2015, 09:16:16 PM
I got tired of waking up and realizing that I had forgotten or need to add something for a holiday on my site which is how I came up with the idea...a "set it and forget" type of thing. I've created blocks for every holiday with an image and now I don't have to deal with it except for the ones that don't have a specific date like Thanksgiving which is the last Thursday of that month.
Title: Re: Holiday Blocks
Post by: Sayaka Maizono on November 29, 2015, 10:36:32 PM
I can make you a block that will display things based on various dates if you want.
Title: Re: Holiday Blocks
Post by: william777 on November 30, 2015, 08:09:24 PM
 O0
Title: Re: Holiday Blocks
Post by: Sayaka Maizono on December 01, 2015, 01:45:52 AM
<?php

/**
 * @block Custom Dates
 * @author Rhode Fey (Sayaka Maizono)
 * @version 1.0.0
 * @for TinyPortal
*/

global $user_info;

$time time() + ($user_info['time_offset'] * 3600);
$current_date date('m'$time) . '-' date('d'$time);

if (
$current_date == '12-25')
{
echo '
Merry Christmas!'
;
}
elseif (
$current_date == '1-1' || $current_date '12-31')
{
echo '
Happy New Year!'
;
}
elseif (
$current_date == '7-4')
{
echo '
Happy Independence Day!'
;
}
// Default if current date is not specified.
else
{
echo '
Hello!'
;
}

?>
Title: Re: Holiday Blocks
Post by: Skhilled on December 01, 2015, 02:59:01 PM
Very simple but works! :)