How to Output PHP Code through CMSB?

12 posts by 4 authors in: Forums > CMS Builder
Last Post: February 14, 2011   (RSS)

Hello, All

This is a longshot but I hope someone will put me right...

Is it possible to make CMSB output PHP code through a field?

That's the issue. Here's the problem...

I want to be able to dynamically select the layout/template on a per page basis.

When creating a record I want the user to be able to select a style thru which the page will be rendered. The user should be able to select a template from a drop-down menu. Then, when the page is loaded in the browser, PHP compiles the page using the chosen template.

Sounds simple - but I'm not sure how to get the best out of it.

I had thought I could set up a list where the value would be a <?php include""?> - one for each respective template. This doesn't work as it seems there is no way of making CMS output code as code - if you see what I mean.

How should I approach this?

:0s

Perch

Re: [Perchpole] How to Output PHP Code through CMSB?

By Toledoh - February 7, 2011

Hi Perch.

I've got a drop down in the admin that selects the style. This style is then applied to a page via CSS.

ie.

<link href="css/<?php echo $record['caption'] ?>.css" rel="stylesheet" type="text/css">

I've also been wanting to implement this http://css-tricks.com/css-variables-with-php but haven't gotten to it as yet.
Cheers,

Tim (toledoh.com.au)

Re: [Perchpole] How to Output PHP Code through CMSB?

By Jason - February 8, 2011

Hi Perch,

Using php code as a list value isn't going to be a good solution as it could give you some unexpected results. Also, it's harder to guarantee uniqueness.

Here's a different approach you could try.

Have a multi-record section called styles. Here all you need to store is a title (for use as a label) and a path to an include file. (just a text field). You can now use this as the table for your drop down, using the sytles section's num field as your option value.

Now when you've selected a record, you can ouput your selected style like this:

<?php if($record['style']): ?>

<?php
//get the selected style record
$query = "SELECT * FROM `{$TABLE_PREFIX}styles` WHERE num = '".intval($record['num'])."'";
$styleRecord = mysql_query_fetch_row_assoc($query);

//include style path

include($styleRecord['path']);
?>

<?php endif ?>


This example code assumes that your drop down field is called style, your multi-record style section is called styles, and your path text field is called path.

Hope this helps.
---------------------------------------------------
Jason Sauchuk - Project Manager
interactivetools.com

Hire me! Save time by getting our experts to help with your project.
http://www.interactivetools.com/consulting/

Re: [gkornbluth] How to Output PHP Code through CMSB?

By Toledoh - February 9, 2011

Thanks Jerry - great to know it can be done.
Cheers,

Tim (toledoh.com.au)

Re: [Toledoh] How to Output PHP Code through CMSB?

Hello, All -

Thanks for your feedback and interesting ideas! Sorry for not responding sooner but I've been on holiday...

Whilst I am very grateful for your suggestions, my particular issue does not concern style sheets.

As I said in my original post, I want to be able to dynamically select the page template whilst creating a record in the CMSB backend.

As things stand I have a base template which includes all of the header and footer info. The user chooses which layout to use for the page content at the time of making the record. They do this by selecting a layout from a list. Each template corresponds to a number. Then it's just a case of hardwiring the code into the base template, something like this...
<?php if ($record['page_type']==1): ?>
<?php include ("_template_1.php") ?>
<?php elseif ($record['page_type']==2): ?>
<?php include ("_template_2.php") ?>
etc...



When the base template loads the layout is also loaded as per the users selection.

It works fine. The only trouble is you have to keep editing and updating the if/elseif arguments in the base template. This can get long and messy.

What I'd like to do is be able to insert the code for the chosen template directly via the selection made in CMSB. So if the user chooses template 1 for example the code for...
<?php echo $record['page_type'] ?>
is replaced with...
<?php include ("_template_1.php") ?>

The key (as far as my limited knowledge is concerned) is making CMSB output code, in this case the php include. As far as I'm aware this cannot be done (unless I've missed something) which leads me to think I'm approaching the problem from the wrong direction...

:o/

Perch

Re: [Perchpole] How to Output PHP Code through CMSB?

Hi Perch.

I'm very interested in this - so please don't think I'm arguing :)

Can you give some examples of the templates?

My way of thinking is that if the data is the same, you really should be able to control the whole look and feel of the site via the templates.

I'm looking at a site currently where each member will be able to choose a "template" in which to display their profile. I want those profile templates to be dramatically different - not just one with blue text, the other with red.

For instance, look at
http://www.csszengarden.com/
Cheers,

Tim (toledoh.com.au)

Re: [Toledoh] How to Output PHP Code through CMSB?

Hi, Tim -

My approach is possibly a little different. My Holy Grail - so to speak - is to present a site to the viewer through a single CMSB powered page (index.php). Essentially, I want everything to be clean and lean!

This would be easy if all pages on a site were the same. The trouble is they're not.

The content on the home page is very different to the details you'd find on a contact page, for example. You may also want to put special items of interest or other gizmos in the margins of a page or side-bar.

To do all of these things you need to be able to control the page layout on a per-page basis. That way you not only get to choose the content that appears on the page but also how (and where) it is presented.

With this in mind, I am trying to perfect a simple method where-by the user can select the layout at the time of creating a record in CMSB.

Imagine the scenario: The user creates a new record in CMSB. It's a news story. He needs to show certain details in the side-bar which relate to other news stories on the site. There's also an ad' for a local sponsor.

To do all of this he selects a "News" template from a drop-down list. This has all of the required elements piped in already. The page is rendered to the viewer accordingly. It looks like a news page.

If - for the sake of argument - he had chosen the "Contact" template, which has a completely different layout, the info from the CMSB record would still feed in but none of the other elements would be visible. It would look like a contact page.

It is this capacity to change the layout/template on the fly which I find so appealing and which is why I'd like to nail a clean solution.

:0)

Perch

Re: [Perchpole] How to Output PHP Code through CMSB?

So where I'm saying - "I want a news page, that lays the news out in 3 columns, or a head article followed by 2 columns - you're saying you would like a page, with a news article, plus a gallery feature and a feedback form?

I think I understand - and it's a good question.

Gotta be a way... let's keep nutting it out!
Cheers,

Tim (toledoh.com.au)

Re: [Toledoh] How to Output PHP Code through CMSB?

Exactly. You choose the template/layout to suit the content.

First you need to set-up all of your templates, including static content (like ad's) plus data from other sections of the site (like news feeds).

Then, when you create a record in CMSB, you can choose how it looks.

Maybe you want a full-width page or the three-column variant.

Perhaps you want the one with the margin and the search box...

...or you need the one with the special footer...

Etc...

Maybe you're creating a mini gallery. You don't need any text to appear on the page. You just want all of the Uploads to appear in a grid-like layout.

The point is you get to choose that layout when you create the record in CMSB.

:0)

Perch