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)

Micaiah 05-13-2010 05:33 PM

Is there a way to block custom pages like these from guests being able to view them unless they log in? with having the link to the pages in the navbar as well?

Simon Lloyd 05-14-2010 01:53 PM

Quote:

Originally Posted by Micaiah (Post 2036513)
Is there a way to block custom pages like these from guests being able to view them unless they log in? with having the link to the pages in the navbar as well?

Just use an if condition in the template like this:
HTML Code:

<if condition="$show['member']">
ALL YOUR CONTENT HERE
<else />
<tr>
<td>
<h2>You need to be registered or logged in to view this page</h2>
</td>
</tr>
</if>


cellarius 05-14-2010 02:17 PM

It's not a good idea to do this on the template level. Just add this at the top of your custom code in the php file:
PHP Code:

    if (!$vbulletin->userinfo['userid'])
    {
        
print_no_permission();
        exit();
    } 


Micaiah 05-14-2010 10:04 PM

ahh excellent thank you very much ^_^

Simon Lloyd 05-16-2010 06:52 AM

Quote:

Originally Posted by cellarius (Post 2036947)
It's not a good idea to do this on the template level. Just add this at the top of your custom code in the php file:
PHP Code:

    if (!$vbulletin->userinfo['userid'])
    {
        
print_no_permission();
        exit();
    } 


Cellarius, why is it not a good idea to manage it at template level?, doing it with a template conditional means that it's easily manipulated later by admins...etc rather than having to access server files, unless i'm missing a security flaw or something?

cellarius 05-16-2010 07:11 AM

First and foremost: Performance. Why run the whole file, go through the whole variable/template registering and rendering process etc. just to show nothing in the end?

Next, you break UI consistency by not using the usual way of handling such errors: You need to code your error message yourself instead of using the standard no permissions message, which is phrased and thus works with multi language environments.

Last, but not least: There is a standard procedure in vB to do this, and that's the way I did it. Just look at the original files. And if there is a standard way, it should be used.

Anyway, I really don't follow your argumentation - how often do your Admins need to change which usergroups get access to a custom page? This does not seem like a weekly operation to me, does it? This is a set it and forget it decision, is it not?

Arsov14 05-16-2010 07:37 AM

Dont work for me :(
http://pic.mk/images/untitl1273999606.jpg

cellarius 05-16-2010 08:07 AM

Your php code does not get parsed. Make sure your file has the .php extension and starts with <?php.

Simon Lloyd 05-16-2010 08:41 AM

Quote:

Originally Posted by cellarius (Post 2037763)
First and foremost: Performance. Why run the whole file, go through the whole variable/template registering and rendering process etc. just to show nothing in the end?

Next, you break UI consistency by not using the usual way of handling such errors: You need to code your error message yourself instead of using the standard no permissions message, which is phrased and thus works with multi language environments.

Last, but not least: There is a standard procedure in vB to do this, and that's the way I did it. Just look at the original files. And if there is a standard way, it should be used.

Anyway, I really don't follow your argumentation - how often do your Admins need to change which usergroups get access to a custom page? This does not seem like a weekly operation to me, does it? This is a set it and forget it decision, is it not?

Cellarius, don't get me wrong, i'm no coder by any means, it's just thats the way i have always (not too many times) done it. As for the whole admin's....etc changing things, i was purely talking from ease of operation for myself, i have used a similar conditional to allow certain usergroups to view some content, then when i have added usergroups it made it ease for me to find and change. I wasn't questioning your method & capability, just asking for information as to why, now that i know i would implement that, but it does make it difficult for adding or removing usergroups access.

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

Could it be incorporated in a pluggin where you can state which templates cannot be accessed?

Could you also tell me how to do this in a php statement?
<if condition="is_member_of($vbulletin->userinfo, array(1, 2, 3))">.

cellarius 05-16-2010 08:51 AM

Quote:

Originally Posted by Simon Lloyd (Post 2037801)
Cellarius, don't get me wrong, i'm no coder by any means, it's just thats the way i have always (not too many times) done it.

Of course you are free to do so if you prefer that method, I just don't think it should be recommended, as it just is not how it is done in vB and does have drawbacks.
Quote:

As for the whole admin's....etc changing things, i was purely talking from ease of operation for myself, i have used a similar conditional to allow certain usergroups to view some content, then when i have added usergroups it made it ease for me to find and change.
Then it would be still better to add an AdminCP setting where you can add/change those usergroups easily. You still would have to remember to do it, and a code fragment at the top of a php file seems not harder to find than a conditional in a template, IMHO.
Quote:

I wasn't questioning your method & capability,
I did not take it that way. :)
Quote:

just asking for information as to why, now that i know i would implement that, but it does make it difficult for adding or removing usergroups access.
As I said: Not really. Opening a php file and changing the code there is not really harder than editing a template. If you don't want to do that, set up an AdminCP setting for it. That would probably be the most comfortable way.

Simon Lloyd 05-16-2010 08:56 AM

Quote:

Originally Posted by cellarius (Post 2037809)
.....
As I said: Not really. Opening a php file and changing the code there is not really harder than editing a template. If you don't want to do that, set up an AdminCP setting for it. That would probably be the most comfortable way.

Thanks, as i said i'm no coder so how could i do that as that would be great to just add the templates that i want governed by the setting and the usergroups i want to allow access?
Could it be incorporated in a pluggin where you can state which templates cannot be accessed?

Could you also tell me how to do this in a php statement?
<if condition="is_member_of($vbulletin->userinfo, array(1, 2, 3))">.

cellarius 05-16-2010 09:04 AM

Quote:

Originally Posted by Simon Lloyd (Post 2037801)
--------------- Added 16 May 2010 at 11:50 ---------------

Could it be incorporated in a pluggin where you can state which templates cannot be accessed?

You would have to establish your own hook in your custom php file. How to notify vB of the existence of the hook is explained by Paul here:
https://vborg.vbsupport.ru/showthread.php?t=83390

The code for your hook would be:
PHP Code:

($hook vBulletinHook::fetch_hook('my_custom_hook')) ? eval($hook) : false

BTW: That permisson does not prevent templates from being accessed. It kicks in much earlier - it prevents the main part of the php page from being processed.

Quote:

Could you also tell me how to do this in a php statement?
<if condition="is_member_of($vbulletin->userinfo, array(1, 2, 3))">.
PHP Code:

if (is_member_of($vbulletin->userinfo1,2,3))
{
   
YOUR CODE



Simon Lloyd 05-16-2010 09:28 AM

Cellarius, if you wouldn't mind helping a little further, i have created an xml for the hook (as per Pauls' thread), custom_template_permission (custom) is how it's shown in the plugins hook location dropdown, what would i need to add template names and permissions to a plug in?, when the plugin is created would the options be in the admincp nav as a button?

cellarius 05-16-2010 09:35 AM

Add the php code for the hook (see my prev post) at the top of the custom code section of your custom php file.
To disallow usergroups from this custom php page add this to the plugin:
PHP Code:

if (is_member_of($vbulletin->userinfo1,2,3))
{
        
print_no_permission(); 
        exit(); 


This will prevent all members from the usergroups 1,2,3 to see the page. To turn it around use
PHP Code:

if (!is_member_of($vbulletin->userinfo1,2,3)) 

Note the ! in front of is_member_of. This will prevent all users except usergroups 1,2,3 from accessing the page, so only members of usergroups 1,2,3 will be able to see it.

No, this will add no option to your admincp. This adds a normal hook, and you would need to edit the plugin in the plugin sectin of AdminCP. If this is for your own use only, this is the way I'd do it. An AdminCP option just adds unnecessary overhead. Honestly, I wouldn't even add that hook. Just edit your custom php file directly - thats the most performant and simple way, really.

And once again: This code does not block access to templates. It blocks access to the whole php file, so to say.

Simon Lloyd 05-16-2010 09:43 AM

I appreciate the time you took to answer, for now i will add it to the custom php, i was asking the other questions for building things in to the admincp in future.

danishravian 05-18-2010 11:35 AM

how to make a php page with it???

which may display some data from sql database.???

cellarius 05-18-2010 11:41 AM

Quote:

Originally Posted by danishravian (Post 2039128)
how to make a php page with it???

Just as is explained in the article.

Quote:

which may display some data from sql database.???
By adding the relevant code to php page you created by following the article in the first post.

Really, it's barely possible to answer unspecific questions like that.

danishravian 05-18-2010 01:56 PM

i made my custome page by this tutorial.
now i want to display some data from sql database on it through PHP.

all i got till now is that data is currently comming from Template???
can you please tell me where to write my php code??

cellarius 05-18-2010 02:06 PM

If you have your custom page up and running following this tutorial then the purpose of this article and thread is achieved. It can't be the place for every custom programming question. You need to open your own thread for your question. Even better, do some reading before: https://vborg.vbsupport.ru/showthread.php?t=119350

danishravian 05-18-2010 02:12 PM

Thnx For Replying, Im Still Clueless...I Know All Database Queries.
My Question is just that where to write my PHP code and queries to display data properly on this page.

cellarius 05-18-2010 02:18 PM

Well, your code goes after the section where it says START MAIN SCRIPT. Save the results of your code into variables, register them, and call them in the template.

danishravian 05-18-2010 02:21 PM

Thnx a lot, Now i got some idea.

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

can you please tell me how to dislpay registered variables in php???

what is proper code???
i am using VB4

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

This Is My Code
include "connect.php";
$query = "select * from plants";
$result = mysql_query($query);
$row = mysql_fetch_array($result);


$templater->register('query', $query);
$templater->register('result', $result);
$templater->register('row', $row);


if(mysql_num_rows($result) > 0)
{
while($row = mysql_fetch_array($result))
{

echo "data found";

}

}

else
{
echo "No Record With These Parameters";

}

cellarius 05-18-2010 02:35 PM

You're in the wrong thread completely. This is for vB3, but you are using vB4 and thus followed a completely different tutorial. You really need to do some reading on how to register variables for vB4 (there's a tutorial for that, too), and then ask in your own thread. This is totally off topic here, and I won't continue answering in this thread. Before doing so: Please use code or php tags if posting code, and please read the article I linked you to regarding the vB database classes. If doing database operations insinde vB, you really should use them.

danishravian 05-18-2010 03:10 PM

https://vborg.vbsupport.ru/showthrea...73#post2039273

i made my thread, plz reply there :)

eda199 05-20-2010 03:34 PM

hello my test.php is like this and gives some errors any help pls?
http://izmir.tr.kg/test.php

? any help?

thank you...

kdr4t 06-20-2010 02:58 AM

Does this work in VB4?

Digital Jedi 06-20-2010 03:00 AM

Quote:

Originally Posted by kdr4t (Post 2056157)
Does this work in VB4?

No. But the article in the vB4 Articles section does.

Atreidex 06-21-2010 05:01 PM

Quote:

Originally Posted by Digital Jedi (Post 2056158)
No. But the article in the vB4 Articles section does.

Could you please provide a link to that article, i can't find it :(

Thank you!

Digital Jedi 06-22-2010 02:46 AM

Quote:

Originally Posted by Atreidex (Post 2057018)
Could you please provide a link to that article, i can't find it :(

Thank you!

It's on the first page of the vB4 articles section.

jdrakopo 06-23-2010 11:19 AM

I'm having trouble getting this working.
Am getting the following errors (below).

=======
Warning: fetch_template() calls should be replaced by the vB_Template class. Template name: navbar in [path]/includes/functions.php on line 3957

Parse error: syntax error, unexpected T_STRING in /home/bostonwh/public_html/adhub1.php(42) : eval()'d code on line 1

Warning: fetch_template() calls should be replaced by the vB_Template class. Template name: adhub1 in [path]/includes/functions.php on line 3957
=======

The last part of my custom php file (named adhub1.php) is as follows (see just below):
(and I do have a template named 'adhub1'.)
Line 42 - which is where the error msg points to - is the line there that contains '... fetch_template('navbar' ...'

Any ideas ?
I must be missing something simple.
Thanks.

// ############ START MAIN SCRIPT ################
$navbits = array();
$navbits[$parent] = 'adhub1';

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

?>

ragtek 06-23-2010 11:22 AM

Quote:

Originally Posted by jdrakopo (Post 2058045)
I'm having trouble getting this working.
Am getting the following errors (below).

=======
Warning: fetch_template() calls should be replaced by the vB_Template class. Template name: navbar in [path]/includes/functions.php on line 3957

Parse error: syntax error, unexpected T_STRING in /home/bostonwh/public_html/adhub1.php(42) : eval()'d code on line 1

Warning: fetch_template() calls should be replaced by the vB_Template class. Template name: adhub1 in [path]/includes/functions.php on line 3957
=======


The last part of my custom php file (named adhub1.php) is as follows (see just below):
(and I do have a template named 'adhub1'.)

Any ideas ?
I must be missing something simple.
Thanks.

// ############ START MAIN SCRIPT ################
$navbits = array();
$navbits[$parent] = 'adhub1';

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

?>

You haven't seen the posts before your, or?*g*
This is for vB3 and not vB4

jdrakopo 06-23-2010 11:46 AM

I see.
Thanks.

I was led to this thread by another one (https://vborg.vbsupport.ru/showthread.php?t=228112)... but see that this is for vb3 and that one appears to have tailored the work for vb4.

jimjam 07-03-2010 10:32 AM

Hi I am using VB 3.84, I have followed the instructions but getting this error when i go to the page, any ideas, thanks

Quote:

The page you are trying to view cannot be shown because it uses an invalid or unsupported form of compression.

jimjam 07-05-2010 09:50 AM

If I turn Gzip off in VBadmin then the custom page shows up, but then I have no compression and a slow site, how can i get the custom page to show up with th egzip enabled? Thanks

Quote:

Originally Posted by jimjam (Post 2063759)
Hi I am using VB 3.84, I have followed the instructions but getting this error when i go to the page, any ideas, thanks


AndrewRich 08-26-2010 08:43 PM

Quote:

Originally Posted by Lynne (Post 1760379)
You can try adding the base url tag to your <head>:

HTML Code:

<base href="http://www.yoursite.com/forums/" />

Thank you for this tip! It helped me in a somewhat different context but was exactly what I needed.

m2006 08-29-2010 01:28 AM

Hi my friends

I want to see members use online. Create a new page on the outside, but more of how to root forum.

Sample
web.com/forum/index.php << root forum
web.com/new/index.php << my add new sub folder

ludachris 09-09-2010 02:37 PM

Can anyone explain how to use this approach to get an OScommerce installation (that lives outside the forums directory) to use vBulletin header/footer/navbar templates and usergroup permissions?

I have an OScommerce installation that I'd like to wrap with my vb header, navbar and footer template and have the user permissions tied in so that the header navigation that is displayed differs from usergroup to usergroup. I just can't figure out where to plug in some of the php code in the OScommerce files.

genxstan 09-13-2010 10:11 AM

I didn't get a thing . Is there some good tutorial ,step by step i mean.

BigJohnny 09-15-2010 11:42 PM

Quote:

Originally Posted by genxstan (Post 2097505)
I didn't get a thing . Is there some good tutorial ,step by step i mean.

you probably named something wrong. I had the same problem and realized that I had missed a TEST that I needed to rename, and that my template name needed to match the template call exactly, including case.

look very closely and make sure all the names match up to what they need to be. I just got this working nicely on 3.8.3

BigJohnny 09-18-2010 05:05 PM

ok so if i want to make this work outside of the forums directory, how do you change the navbits so it doesn't link back to the forum?


All times are GMT. The time now is 10:35 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.04792 seconds
  • Memory Usage 1,865KB
  • 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
  • (2)bbcode_html_printable
  • (6)bbcode_php_printable
  • (20)bbcode_quote_printable
  • (1)footer
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (6)option
  • (1)pagenav
  • (1)pagenav_curpage
  • (4)pagenav_pagelink
  • (1)pagenav_pagelinkrel
  • (1)post_thanks_navbar_search
  • (1)printthread
  • (40)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