vb.org Archive

vb.org Archive (https://vborg.vbsupport.ru/index.php)
-   vBulletin 3 Articles (https://vborg.vbsupport.ru/forumdisplay.php?f=187)
-   -   How to create your own vBulletin-powered page! (uses vB templates) (https://vborg.vbsupport.ru/showthread.php?t=62164)

ragtek 03-03-2009 09:14 AM

Are you too lazy to check the article section? Sorry, but the others and me are not registered here to search, copy and paste all the things your searching;)

If you want to modify your vB then invest some time and read the docs and article section, use the search function;) or invest some money and post your things here.

Adem GEN? 03-04-2009 10:22 AM

I do not speak English
Topics can not find
Thank you anyway



TNCclubman 03-04-2009 12:28 PM

Ive read those links and still cant figure out how to display Todays Events and Todays birthdays...

anyone?

Lynne 03-04-2009 01:26 PM

Quote:

Originally Posted by AdemGEN? (Post 1759125)
Thank you, my job was very useful

For XML
Fo to add navbar link AND To enter the database table structure

Link information?

Thanks

I'm not sure what you are asking for here. You want to know how to add a navbar link? How To Add Additional Links To Your Navbar. If you need lots of help with your page, it may be better to start your own thread so everything is all in one easy to find thread (not spread out among posts like in this thread).

Quote:

Originally Posted by TNCclubman (Post 1760048)
Ive read those links and still cant figure out how to display Todays Events and Todays birthdays...

anyone?

You'll need to find the code in the index.php page (if I recall, it's pretty well commented), including the templates, and add them to your page.

TNCclubman 03-04-2009 01:35 PM

Thanks Lynne!!! I'll try that out!!!

ragtek 03-04-2009 01:43 PM

Quote:

Originally Posted by TNCclubman (Post 1760129)
Thanks Lynne!!! I'll try that out!!!

And don't fortget on the datastore;)
If you use the code from the indexpage you'll need the
PHP Code:

$specialtemplates = array(
    
'birthdaycache',
    
'eventcache'
); 

data;)

TNCclubman 03-04-2009 02:47 PM

damn, didnt work...

heres the php page

Code:

<?php

// ####################### SET PHP ENVIRONMENT ###########################
error_reporting(E_ALL & ~E_NOTICE);

// #################### DEFINE IMPORTANT CONSTANTS #######################
define('NO_REGISTER_GLOBALS', 1);
define('THIS_SCRIPT', 'clubslist'); // change this depending on your filename

// ################### PRE-CACHE TEMPLATES AND DATA ######################
// get special phrase groups
$phrasegroups = array(

);

// get special data templates from the datastore
$specialtemplates = array(
   
);

// pre-cache templates used by all actions
$globaltemplates = array(
    'navigation',
);

// pre-cache templates used by specific actions
$actiontemplates = array(

);

$specialtemplates = array(
    'birthdaycache',
    'eventcache'
); 

// ######################### REQUIRE BACK-END ############################
require_once('./global.php');

// #######################################################################
// ######################## START MAIN SCRIPT ############################
// #######################################################################

$navbits = array();
$navbits[$parent] = 'Club Listings';

$navbits = construct_navbits($navbits);
eval('$navbar = "' . fetch_template('navbar') . '";');
eval('print_output("' . fetch_template('navigation') . '");');

// ### TODAY'S BIRTHDAYS #################################################
if ($vbulletin->options['showbirthdays'])
{
        if (!is_array($vbulletin->birthdaycache)
                OR ($today != $vbulletin->birthdaycache['day1'] AND $today !=

$vbulletin->birthdaycache['day2'])
                OR !is_array($vbulletin->birthdaycache['users1'])
        )
        {
                // Need to update!
                require_once(DIR . '/includes/functions_databuild.php');
                $birthdaystore = build_birthdays();
                DEVDEBUG('Updated Birthdays');
        }
        else
        {
                $birthdaystore = $vbulletin->birthdaycache;
        }

        switch ($today)
        {
                case $birthdaystore['day1']:
                        $birthdaysarray = $birthdaystore['users1'];
                        break;

                case $birthdaystore['day2']:
                        $birthdaysarray = $birthdaystore['users2'];
                        break;

                default:
                        $birthdaysarray = array();
        }
        // memory saving
        unset($birthdaystore);

        $birthdaybits = array();

        foreach ($birthdaysarray AS $birthday)
        {
                eval('$birthdaybits[] = "' . fetch_template('forumhome_birthdaybit')

. '";');
        }

        $birthdays = implode(', ', $birthdaybits);

        if ($stylevar['dirmark'])
        {
                $birthdays = str_replace('<!--rlm-->', $stylevar['dirmark'],

$birthdays);
        }

        $show['birthdays'] = iif ($birthdays, true, false);
}
else
{
        $show['birthdays'] = false;
}

// ### TODAY'S EVENTS #################################################
if ($vbulletin->options['showevents'])
{
        require_once(DIR . '/includes/functions_calendar.php');

        $future = gmdate('n-j-Y' , TIMENOW + 86400 + 86400 * $vbulletin->options

['showevents']);

        if (!is_array($vbulletin->eventcache) OR $future != $vbulletin->eventcache

['date'])
        {
                // Need to update!
                $eventstore = build_events();
                DEVDEBUG('Updated Events');
        }
        else
        {
                $eventstore = $vbulletin->eventcache;
        }

        unset($eventstore['date']);
        $events = array();
        $eventcount = 0;
        $holiday_calendarid = 0;

        foreach ($eventstore AS $eventid => $eventinfo)
        {
                $offset = $eventinfo['dst'] ? $vbulletin->userinfo['timezoneoffset']

: $vbulletin->userinfo['tzoffset'];
                $eventstore["$eventid"]['dateline_from_user'] = $eventinfo

['dateline_from_user'] = $eventinfo['dateline_from'] + $offset * 3600;
                $eventstore["$eventid"]['dateline_to_user'] = $eventinfo

['dateline_to_user'] = $eventinfo['dateline_to'] + $offset * 3600;
                $gettime = TIMENOW - $vbulletin->options['hourdiff'];
                $iterations = 0;
                $todaydate = getdate($gettime);

                if (!$eventinfo['singleday'] AND !$eventinfo['recurring'] AND

$eventinfo['dateline_from_user'] < gmmktime(0, 0, 0, $todaydate['mon'], $todaydate

['mday'], $todaydate['year']))
                {
                        $sub = -3;
                }
                else if ($eventinfo['holidayid'])
                {
                        $sub = -2;
                }
                else if ($eventinfo['singleday'])
                {
                        $sub = -1;
                }
                else
                {
                        $sub = $eventinfo['dateline_from_user'] - (86400 * (intval

($eventinfo['dateline_from_user'] / 86400)));
                }

                if ($vbulletin->userinfo['calendarpermissions']["$eventinfo

[calendarid]"] & $vbulletin->bf_ugp_calendarpermissions['canviewcalendar'] OR

($eventinfo['holidayid'] AND $vbulletin->options['showholidays']))
                {
                        if ($eventinfo['holidayid'] AND $vbulletin->options

['showholidays'])
                        {
                                if (!$holiday_calendarid)
                                {
                                        $holiday_calendarid = -1; // stop this loop

from running again in the future
                                        if (is_array($eventinfo

['holiday_calendarids']))
                                        {
                                                foreach ($eventinfo

['holiday_calendarids'] AS $potential_holiday_calendarid)
                                                {
                                                        if ($vbulletin->userinfo

['calendarpermissions']["$potential_holiday_calendarid"] & $vbulletin-

>bf_ugp_calendarpermissions['canviewcalendar'])
                                                        {
                                                                $holiday_calendarid =

$potential_holiday_calendarid;
                                                                break;
                                                        }
                                                }
                                        }
                                }

                                if ($holiday_calendarid < 0)
                                {
                                        continue;
                                }

                                $eventstore["$eventid"]['calendarid'] =

$holiday_calendarid;
                                $eventinfo['calendarid'] = $holiday_calendarid;
                        }

                        if ($eventinfo['userid'] == $vbulletin->userinfo['userid'] OR

$vbulletin->userinfo['calendarpermissions']["$eventinfo[calendarid]"] & $vbulletin-

>bf_ugp_calendarpermissions['canviewothersevent'] OR ($eventinfo['holidayid'] AND

$vbulletin->options['showholidays']))
                        {
                                if (!$eventinfo['recurring'] AND !$vbulletin-

>options['showeventtype'] AND !$eventinfo['singleday'] AND cache_event_info

($eventinfo, $todaydate['mon'], $todaydate['mday'], $todaydate['year']))
                                {
                                        $events["$eventid"][] = $gettime . "_$sub";
                                }
                                else
                                {
                                        while ($iterations < $vbulletin->options

['showevents'])
                                        {
                                                $addcache = false;

                                                $todaydate = getdate($gettime);
                                                if ($eventinfo['holidayid'] AND

$eventinfo['recurring'] == 6)
                                                {
                                                        if ($eventinfo['recuroption']

== "$todaydate[mon]|$todaydate[mday]")
                                                        {
                                                                $addcache = true;
                                                        }
                                                }
                                                else if (cache_event_info($eventinfo,

$todaydate['mon'], $todaydate['mday'], $todaydate['year']))
                                                {
                                                        $addcache = true;
                                                }

                                                if ($addcache)
                                                {
                                                        if (!$vbulletin->options

['showeventtype'])
                                                        {
                                                                $events["$eventid"][]

= $gettime . "_$sub";
                                                        }
                                                        else
                                                        {
                                                                $events["$gettime"][]

= $eventid;
                                                        }
                                                        $eventcount++;
                                                }

                                                $iterations++;
                                                $gettime += 86400;
                                        }
                                }
                        }
                }
        }

        if (!empty($events))
        {
                if ($vbulletin->options['showeventtype'])
                {
                        ksort($events, SORT_NUMERIC);
                }
                else
                {
                        function groupbyevent($a, $b)
                        {
                                if ($a[0] == $b[0])
                                {
                                        return 0;
                                }
                                else
                                {
                                        $values1 = explode('_', $a[0]);
                                        $values2 = explode('_', $b[0]);
                                        if ($values1[0] != $values2[0])
                                        {
                                                return ($values1[0] < $values2[0]) ?

-1 : 1;
                                        }
                                        else
                                        {
                                                // Same day events. Check the event

start time to order them properly (compare number of seconds from 00:00)
                                                return ($values1[1] < $values2[1]) ?

-1 : 1;
                                        }
                                }
                        }
                        uasort($events, 'groupbyevent');
                        // this crazy code is to remove $sub added above that ensures

a event maintains its position after the sort
                        // if associative values are the same
                        foreach($events AS $eventid => $times)
                        {
                                foreach ($times AS $key => $time)
                                {
                                        $events["$eventid"]["$key"] = intval($time);
                                }
                        }
                }

                $upcomingevents = '';
                foreach($events AS $index => $value)
                {
                        $pastevent = 0;
                        $pastcount = 0;

                        $comma = $eventdates = $daysevents = '';
                        if (!$vbulletin->options['showeventtype'])
                        {        // Group by Event // $index = $eventid
                                $eventinfo = $eventstore["$index"];
                                if (empty($eventinfo['recurring']) AND empty

($eventinfo['singleday']))
                                {        // ranged event -- show it from its real

start and real end date (vbgmdate)
                                        $fromdate = vbdate($vbulletin->options

['dateformat'], $eventinfo['dateline_from_user'], false, true, false, true);
                                        $todate = vbdate($vbulletin->options

['dateformat'], $eventinfo['dateline_to_user'], false, true, false, true);
                                        if ($fromdate != $todate)
                                        {
                                                $eventdates = construct_phrase

($vbphrase['event_x_to_y'], $fromdate, $todate);
                                        }
                                        else
                                        {
                                                $eventdates = vbdate($vbulletin-

>options['dateformat'], $eventinfo['dateline_from_user'], false, true, false, true);
                                        }
                                        $day = vbdate('Y-n-j', $eventinfo

['dateline_from_user'], false, false);
                                }
                                else
                                {
                                        unset($day);
                                        foreach($value AS $key => $dateline)
                                        {
                                                if (($dateline - 86400) == $pastevent

AND !$eventinfo['holidayid'])
                                                {
                                                        $pastevent = $dateline;
                                                        $pastcount++;
                                                        continue;
                                                }
                                                else
                                                {
                                                        if ($pastcount)
                                                        {
                                                                $eventdates =

construct_phrase($vbphrase['event_x_to_y'], $eventdates, vbdate($vbulletin->options

['dateformat'], $pastevent, false, true, false));
                                                        }
                                                        $pastcount = 0;
                                                        $pastevent = $dateline;
                                                }
                                                if (!$day)
                                                {
                                                        $day = vbdate('Y-n-j',

$dateline, false, false, false);
                                                }
                                                $eventdates .= $comma . vbdate

($vbulletin->options['dateformat'], $dateline, false, true, false);
                                                $comma = ', ';
                                        }
                                        if ($pastcount)
                                        {
                                                $eventdates = construct_phrase

($vbphrase['event_x_to_y'], $eventdates, vbdate($vbulletin->options['dateformat'],

$pastevent, false, true, false));
                                        }
                                }

                                if ($eventinfo['holidayid'])
                                {
                                        $callink = '<a href="calendar.php?' .

$vbulletin->session->vars['sessionurl'] . "do=getinfo&amp;day=$day&amp;c=$eventinfo

[calendarid]\">" . $vbphrase['holiday' . $eventinfo['holidayid'] . '_title'] .

"</a>";
                                }
                                else
                                {
                                        $callink = '<a href="calendar.php?' .

$vbulletin->session->vars['sessionurl'] . "do=getinfo&amp;day=$day&amp;e=$eventinfo

[eventid]&amp;c=$eventinfo[calendarid]\">$eventinfo[title]</a>";
                                }
                        }
                        else
                        {        // Group by Date
                                $eventdate = vbdate($vbulletin->options

['dateformat'], $index, false, true, false);

                                $day = vbdate('Y-n-j', $index, false, false, false);
                                foreach($value AS $key => $eventid)
                                {
                                        $eventinfo = $eventstore["$eventid"];
                                        if ($eventinfo['holidayid'])
                                        {
                                                $daysevents .= $comma . '<a

href="calendar.php?' . $vbulletin->session->vars['sessionurl'] .

"do=getinfo&amp;day=$day&amp;c=$eventinfo[calendarid]\">" . $vbphrase['holiday' .

$eventinfo['holidayid'] . '_title'] . "</a>";
                                        }
                                        else
                                        {
                                                $daysevents .= $comma . '<a

href="calendar.php?' . $vbulletin->session->vars['sessionurl'] .

"do=getinfo&amp;day=$day&amp;e=$eventinfo[eventid]&amp;c=$eventinfo[calendarid]

\">$eventinfo[title]</a>";
                                        }
                                        $comma = ', ';
                                }
                        }

                        ($hook = vBulletinHook::fetch_hook('forumhome_event')) ?

eval($hook) : false;
                        eval('$upcomingevents .= "' . fetch_template

('forumhome_event') . '";');
                }
                // memory saving
                unset($events, $eventstore);
        }
        $show['upcomingevents'] = iif ($upcomingevents, true, false);
        $show['todaysevents'] = iif ($vbulletin->options['showevents'] == 1, true,

false);
}
else
{
        $show['upcomingevents'] = false;
}


$show['latestalbums'] = true;

?>
Be sure to change 'TEST' to the actual template name, and change 'test' to the

filename. Also, change 'Test Page' to whatever you want to show in the navbar, such

as 'Viewing Member Profile' (just an example

--------------- Added [DATE]1236185363[/DATE] at [TIME]1236185363[/TIME] ---------------

heres the template page

Code:

$stylevar[htmldoctype]
<html dir="$stylevar[textdirection]" lang="$stylevar[languagecode]">
<head>
<title>$vboptions[bbtitle]</title>
$headinclude
</head>
<body>
$header

$navbar

<table class="tborder" cellpadding="$stylevar[cellpadding]" cellspacing="$stylevar[cellspacing]" border="0" width="100%" align="center">
<tr>
        <td class="tcat">Title</td>
</tr>


</table>

<if condition="$show['birthdays']">
<!-- today's birthdays -->
<tbody>
        <tr>
                <td class="thead" colspan="2">
                        <a style="float:$stylevar[right]" href="#top" onclick="return toggle_collapse('forumhome_birthdays')"><img id="collapseimg_forumhome_birthdays" src="$stylevar[imgdir_button]/collapse_thead$vbcollapse[collapseimg_forumhome_birthdays].gif" alt="" border="0" /></a>
                        $vbphrase[todays_birthdays]
                </td>
        </tr>
</tbody>
<tbody id="collapseobj_forumhome_birthdays" style="$vbcollapse[collapseobj_forumhome_birthdays]">
        <tr>
                <td class="alt2"><a href="calendar.php?$session[sessionurl]do=getday&amp;day=$today&amp;sb=1"><img src="$stylevar[imgdir_misc]/birthday.gif" alt="$vbphrase[view_birthdays]" border="0" /></a></td>
                <td class="alt1" width="100%"><div class="smallfont">$birthdays</div></td>
        </tr>
</tbody>
<!-- end today's birthdays -->
</if>
$template_hook[forumhome_wgo_pos4]
<if condition="$show['upcomingevents']">
<tbody>
        <tr>
                <td class="thead" colspan="2">
                        <a style="float:$stylevar[right]" href="#top" onclick="return toggle_collapse('forumhome_events')"><img id="collapseimg_forumhome_events" src="$stylevar[imgdir_button]/collapse_thead$vbcollapse[collapseimg_forumhome_events].gif" alt="" border="0" /></a>
                        <if condition="$show['todaysevents']">$vbphrase[todays_events]<else /><phrase 1="$vboptions[showevents]">$vbphrase[upcoming_events_for_the_next_x_days]</phrase></if>
                </td>
        </tr>
</tbody>
<tbody id="collapseobj_forumhome_events" style="$vbcollapse[collapseobj_forumhome_events]">
        <tr>
                <td class="alt2"><a href="calendar.php$session[sessionurl_q]"><img src="$stylevar[imgdir_misc]/calendar.gif" alt="$vbphrase[calendar]" border="0" /></a></td>
                <td class="alt1" width="100%"><div class="smallfont">$upcomingevents</div></td>
        </tr>
</tbody>
</if>


$footer
</body>
</html>


Lynne 03-04-2009 02:54 PM

Take a look at your code... like this line:
$birthdaystore = build_birthdays();

Search in your files for that function. It's in functions_databuild.php and that is probably called in one of the other files 'required' at the top. Try including them (under global.php) and see if that fixes it.

And what is the name of your template and where is it called in your page? It must be evaled after all the code is done. And get rid of the extra stuff at the bottom of your php page.

TNCclubman 03-04-2009 04:38 PM

ok, added this under global in the php file

Code:

// ###################### Start getbirthdays #######################
function build_birthdays()
{
        global $stylevar, $vbulletin;

        $storebirthdays = array();

        $serveroffset = date('Z', TIMENOW) / 3600;

        $fromdatestamp = TIMENOW + (-11 - $serveroffset) * 3600;
        $fromdate = getdate($fromdatestamp);
        $storebirthdays['day1'] = date('Y-m-d', $fromdatestamp);

        $todatestamp = TIMENOW + (13 - $serveroffset) * 3600;
        $todate = getdate($todatestamp);
        $storebirthdays['day2'] = date('Y-m-d', $todatestamp);

        $todayneggmt = date('m-d', $fromdatestamp);
        $todayposgmt = date('m-d', $todatestamp);

        // Seems quicker to grab the ids rather than doing a JOIN
        $usergroupids = 0;
        foreach($vbulletin->usergroupcache AS $usergroupid => $usergroup)
        {
                if ($usergroup['genericoptions'] & $vbulletin->bf_ugp_genericoptions['showbirthday'])
                {
                        $usergroupids .= ", $usergroupid";
                }
        }

        // if admin wants to only show birthdays for users who have
        // been active within the last $vbulletin->options[birthdaysdatecut] days...
        if ($vbulletin->options['activememberdays'] > 0 AND ($vbulletin->options['activememberoptions'] & 1))
        {
                $datecut = TIMENOW - (intval($vbulletin->options['activememberdays']) * 86400);
                $activitycut = "AND lastactivity >= $datecut";
        }
        else
        {
                $activitycut = '';
        }

        $bdays = $vbulletin->db->query_read_slave("
                SELECT username, userid, birthday, showbirthday
                FROM " . TABLE_PREFIX . "user
                WHERE (birthday LIKE '$todayneggmt-%' OR birthday LIKE '$todayposgmt-%')
                AND usergroupid IN ($usergroupids)
                AND showbirthday IN (2, 3)
                $activitycut
        ");

        $year = date('Y');
        $day1 = $day2 = array();

        while ($birthday = $vbulletin->db->fetch_array($bdays))
        {
                $username = $birthday['username'];
                $userid = $birthday['userid'];
                $day = explode('-', $birthday['birthday']);
                if ($year > $day[2] AND $day[2] != '0000' AND $birthday['showbirthday'] == 2)
                {
                        $age = $year - $day[2];
                }
                else
                {
                        unset($age);
                }
                if ($todayneggmt == $day[0] . '-' . $day[1])
                {
                        $day1[] = array(
                                'userid'  => $userid,
                                'username' => $username,
                                'age'      => $age
                        );
                }
                else
                {
                        $day2[] = array(
                                'userid'  => $userid,
                                'username' => $username,
                                'age'      => $age
                        );
                }
        }
        $storebirthdays['users1'] = $day1;
        $storebirthdays['users2'] = $day2;

        build_datastore('birthdaycache', serialize($storebirthdays), 1);

        return $storebirthdays;
}

--------------- Added [DATE]1236191947[/DATE] at [TIME]1236191947[/TIME] ---------------

and still nothing shows up... doh!

Lynne 03-04-2009 05:13 PM

Nothing will show up as long as you eval your template above all the code you are doing. Also, you need to see if there are any other functions you need - I was just giving one example that I found.


All times are GMT. The time now is 12:26 AM.

Powered by vBulletin® Version 3.8.12 by vBS
Copyright ©2000 - 2024, vBulletin Solutions Inc.

X vBulletin 3.8.12 by vBS Debug Information
  • Page Generation 0.02622 seconds
  • Memory Usage 1,899KB
  • Queries Executed 10 (?)
More Information
Template Usage:
  • (1)ad_footer_end
  • (1)ad_footer_start
  • (1)ad_header_end
  • (1)ad_header_logo
  • (1)ad_navbar_below
  • (3)bbcode_code_printable
  • (1)bbcode_php_printable
  • (3)bbcode_quote_printable
  • (1)footer
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (6)option
  • (1)pagenav
  • (1)pagenav_curpage
  • (4)pagenav_pagelink
  • (4)pagenav_pagelinkrel
  • (1)post_thanks_navbar_search
  • (1)printthread
  • (10)printthreadbit
  • (1)spacer_close
  • (1)spacer_open 

Phrase Groups Available:
  • global
  • postbit
  • showthread
Included Files:
  • ./printthread.php
  • ./global.php
  • ./includes/init.php
  • ./includes/class_core.php
  • ./includes/config.php
  • ./includes/functions.php
  • ./includes/class_hook.php
  • ./includes/modsystem_functions.php
  • ./includes/class_bbcode_alt.php
  • ./includes/class_bbcode.php
  • ./includes/functions_bigthree.php 

Hooks Called:
  • init_startup
  • init_startup_session_setup_start
  • init_startup_session_setup_complete
  • cache_permissions
  • fetch_threadinfo_query
  • fetch_threadinfo
  • fetch_foruminfo
  • style_fetch
  • cache_templates
  • global_start
  • parse_templates
  • global_setup_complete
  • printthread_start
  • pagenav_page
  • pagenav_complete
  • bbcode_fetch_tags
  • bbcode_create
  • bbcode_parse_start
  • bbcode_parse_complete_precache
  • bbcode_parse_complete
  • printthread_post
  • printthread_complete