OSCOMMERCE SUPPORT CALL 702-453-3332

 

Help - Search - Members - Calendar
Full Version: Easily Add New Pages
osCommerce Community Support Forums > osCommerce Online Merchant v2.x > Tips and Tricks
Pages: 1, 2, 3
jhilgeman
I found that if I wanted to add "extra" pages to OSC, it became a real pain to work with them. For each page there are so many headers and extra lines that include the HTML headers, columns, etc... I came up with a simpler solution - it's only a little weird to set up in the beginning.

You can see an example of this by going to www.naturesflavors.com and clicking on any of the links in the "Product Information" box on the right, or by going to www.naturesflavors.com/newsletter

Doesn't look too different than normal OSC pages, right?

Now I can add a new page to my store in seconds. This is how it works - I simply copy all the header and footer information into one file called display_page.inc.php, so its contents look like:

<?php

// display_page.inc.php

// Header
require('includes/application_top.php');
more header stuff bla bla bla

// Content
echo $PageContent;

// Footer
require('includes/application_bottom.php');
more footer stuff

?>

Then for each page I want to create, I simply make a new document, assign the content to $PageContent and include the display_page.inc.php. For instance new_policies.php:

<?

// new_policies.php

$PageContent = "<p>Here are our new policies:</p>";
$PageContent .= "Blah dee dah.<br> More stuff. Etc... n";
$PageContent .= "And that's all of them. Thanks!<br>n";

include("display_page.inc.php");

?>

And that gives me a fully-rendered page. I don't have to waste time copying-and-pasting headers and footers into each new page.

I've done a bit more than that, but that is the basic working concept.

- Jonathan
burt
Your way is good, but better (IMO):

Download the following files:

catalog/conditions.php
catalog/includes/languages/english/conditions.php

Save them (on your Hard Drive as):

catalog/template.php
catalog/includes/languages/english/template.php

When you want a new page:

Open catalog/template.php (on your HD) and change the following:

CODE
require(DIR_WS_LANGUAGES . $language . '/' . FILENAME_CONDITIONS);



 $breadcrumb->add(NAVBAR_TITLE, tep_href_link(FILENAME_CONDITIONS, '', 'NONSSL'));


To:

CODE
require(DIR_WS_LANGUAGES . $language . '/' . FILENAME_NEW_PAGE);



 $breadcrumb->add(NAVBAR_TITLE, tep_href_link(FILENAME_NEW_PAGE, '', 'NONSSL'));


where NEW_PAGE is the name of your new page.

eg if you wanted a page called "about_us.php" the code would be:

CODE
require(DIR_WS_LANGUAGES . $language . '/' . FILENAME_ABOUT_US);



 $breadcrumb->add(NAVBAR_TITLE, tep_href_link(FILENAME_ABOUT_US, '', 'NONSSL'));


Save and Upload both:
catalog/template.php
catalog/includes/languages/english/template.php

to their respective places on the live server, and then rename them BOTH to whatever, in the example: about_us.php

Set CHMOD 777 on your newly created and renamed:

catalog/includes/languages/english/about_us.php

Download, and open up application_top.php and add the following:

CODE
// New page about_us.php

define('FILENAME_ABOUT_US', 'about_us.php');


Save and upload includes/application_top.php

Now go Admin > Tools > Define Languages > about_us.php

Done. It sounds complicated but once you get the hang of it, it takes no longer than 2 minutes. It maintains the proper Osc structure.
networkdad
There's a new page mod out there too, that was helpful in getting my own custom pages done.

One thing to remember! : Dont forget to add in any new code from previous modules that you've installed.

Example: I have Linda's header tag controller, as well as the Thema option - both mods require you add another piece of php code.

I've taken and saved a generic page with the new code in it. Once i'm done modding it, i just save them as something else and upload to /catalog and /catalog/includes/languages/english.
esse
Hi,

Great trick.
One question however: how can I add a picture in the left column for a newly created page?
mrsC2003
Your way is good, but better (IMO):

Download the following files:

catalog/conditions.php
catalog/includes/languages/english/conditions.php

Hum, maybe you have a different version of osc than I do, I have (2.2-MS2) and there is no such folder called catalog in the directory file. sad.gif

So what do I do now?

Kel
dmihm
Catalog should be the main name of the whole OSC install
Catalog.
I think they mean that the php files they are talking about are all in the main directory, which on my sytem is Catalog
mrsC2003
Nope on my internet server it goes this way

public_html/ the folder that contains my web pages

/corner/ the folder I chose to install in (kel's corner store is the name of my store)

then under that the following
admin
includes
extras
pub , and on down the line. There is no folder named osc what ever and no folder named catalog.

My provider uses c-pannel and I have file manager that shows me all of my stuff even the virtual folders. nothing no where says catalog. This is why I was so lost whith the term Catalog. He has it set up that you install osc via a section called fantastico, which has many php applications in it that can be installed almost the same as you would install osc but with just plain text and a few more options. How ever he has Fantastico plugged into the server it already knows most of your install info and you just tell it what folder you want installed to, give username and pw and email for the mail and maybe a few other things and click and a few seconds later there you have your php application is installed you are given links, info about your installed is emailed to you and your are off and running.

Wish you could do the same thing with installing on your own test server. mad.gif

I would love to know how to just have it setup on my test server as it is on my internet pay by the month server.

Kel
mrsC2003
sorry I should note that the data base is still called osc1, you have no way to name it anything else.

Kel wink.gif
Vger
Let's clear up a few misconceptions.

You can install osCommerce in the root directory, in which case there is no folder called 'catalog'.

If you decide not to install in he root directory then the default folder would be 'catalog'

You can call the database whatever you like, as long as you name it when installing.

In the post by Burt, once the files have been uploaded, you add the new files to includes/filenames.php and not to application_top.php.

Vger
mrsC2003
Hey I got it figured out here is what I did

I unziped to my root folder on my test server on my hard drive which made the osc folder.

I started up my server and mySQL and then went to my index page which is just a directory for easy page access. I clicked on the catolog link which started the install window. I did everything as normal till I got to the part where it asked for the real file paths. There I typed in the file path I wanted and finished the install.

After that I opened the folder on my hard drive where my server is and made a folder and named it to match my server on the net and just copied all the files from catalog to it and there ya have it. Works just great. wink.gif The orignal install files in the osc folder I will keep as the back up, because we all know that nothing ever goes right when we start messing around with something that is not broken laugh.gif

Now I have that solved onto some of these add-ins like STS and some of the others.

Kel
TCwho
Just found this and thought Burt's method is real simple. I had done it another way. Just wanted people to benefit from it seeing how its from a good while ago.
gabrielk
jhilgeman,

You might like this. Use "heredoc" style strings. Then you can just paste your page code in as a block, instead of having to enclose each line in an appended string.

Example:

$pageContent = <<<EOD
<html here>
EOD;

For more information, see : http://us3.php.net/types.string
Henkersbraut
As simple as Burt's method may be... I still mess it up. I get the following error messages when trying to view my file:

"Warning: main(includes/languages/english/FILENAME_LINKS): failed to open stream: No such file or directory in /var/www/html/web1/html/catalog/links.php on line 15

Fatal error: main(): Failed opening required 'includes/languages/english/FILENAME_LINKS' (include_path='.') in /var/www/html/web1/html/catalog/links.php on line 15"

As you may all see, I am trying to just make an extra page to add some links, but I did originally intend to make quite a few extra pages, with additional information. Would be really nice if I managed to do this at some point!

Please help me out blush.gif
gabrielk
Make sure you've defined FILENAME_LINKS in application_top.php, and make sure it points to the proper filename, and that the file it points to has been uploaded to the proper place on the server. smile.gif
Henkersbraut
Cheers, Gabriel! Ok, following question (yes, I am sitting here with a teaspoon in my mouth now tongue.gif)

* is the /catalog/ the correct dir for the following declaration?

define('FILENAME_LINKS', 'links.php');

* does it matter where in the code (as long as I don't break other lines of code, of course) I insert the declaration?

Blurgh. I look forwards to the day I understand this! smile.gif
gabrielk
QUOTE (Henkersbraut @ Apr 10 2005, 08:39 AM)
Cheers, Gabriel! Ok, following question (yes, I am sitting here with a teaspoon in my mouth now tongue.gif)

* is the /catalog/ the correct dir for the following declaration?

define('FILENAME_LINKS', 'links.php');

* does it matter where in the code (as long as I don't break other lines of code, of course) I insert the declaration?

Blurgh. I look forwards to the day I understand this! smile.gif
*


You wanna add it to includes/filenames.php. You can add it anywhere in that file. smile.gif (Includes is inside your parent directory. So if osCommerce is installed in /catalogue/ then the file would be /catalogue/includes/filenames.php.

HTH, I'm fairly new to this too.

Gabriel
guanche
Gret job on the code for new pages, I found it quick and easy to do. I would like to have a new page show as www.mysite.com/jobs instead of www.mysite.com/jobs.php , what would I need to change to make this happen?

Joe
gabrielk
Guanche,

The easiest way is to create the subdirectory "jobs" and add your new file to it as "index.php". Another way would be to modify your .htaccess file and add...
CODE
Redirect permanent /jobs /jobs.php

To get even fancier, Google up information on mod_rewrite, which essentially lets you mask the way filenames are displayed. Using mod_rewrite (if it's available on your server) you'd add this to your .htaccess file (but not at the same time as the redirect)...
CODE
RewriteEngine On
RewriteRule ^/jobs$ /jobs.php
Henkersbraut
Ok, trying it again: I've decided I want the links.php to be linked within the information box. It lives in /languages/ and I call on it in boxes/information.php - just like the rest of the four idiots that live in there.

I get the following error message:

Fatal error: Cannot redeclare tep_db_connect() (previously declared in /var/www/html/web1/html/catalog/includes/functions/database.php:13) in /var/www/html/web1/html/catalog/includes/functions/database.php on line 13

And in my box it now says BOX_INFORMATION_LINKS

What did I mess up this time? (And thanks for the help so far!)
Henkersbraut
Now it works. Haven't got the foggiest why, but I am happy. Would have deleted the last post, but I cannot. Moderator? biggrin.gif
maveric_40
um well im getting the same redeclaration error for some reason too. i have recently installed a template and am wondering if that could be the problem. any help would be great. crying.gif
RoninS14
K when I try to add an "About Us" link in my information box it works great, but in the information box, it displays as "BOX_INFORMATION_ABOUT_US".

How do I fix that? I tried looking all over but could not find a way around it.
RoninS14
QUOTE (RoninS14 @ Jun 20 2005, 02:25 PM)
K when I try to add an "About Us" link in my information box it works great, but in the information box, it displays as "BOX_INFORMATION_ABOUT_US".

How do I fix that?  I tried looking all over but could not find a way around it.
*



scratch that, I found my mistake. I thought I edited my english.php but i guess I was wrong.
saj-uk
here's an even easier way to create a new page,
copy this code and save it as new_page.php then open this file in notepad and find where you need to replace your text or info, rename it to what ever page you want to call it, and upload it to where your OSC is located, then just open it in the browser as normal, ie www.mysite.com/catalog/new_page.php this is should open the page you have created.

<?php
/*
$Id: index.php,v 1.1 2003/06/11 17:37:59 hpdl Exp $

osCommerce, Open Source E-Commerce Solutions
http://www.oscommerce.com

Copyright © 2003 osCommerce

Released under the GNU General Public License
*/

require('includes/application_top.php');

// the following cPath references come from application_top.php
$category_depth = 'top';
if (isset($cPath) && tep_not_null($cPath)) {
$categories_products_query = tep_db_query("select count(*) as total from " . TABLE_PRODUCTS_TO_CATEGORIES . " where categories_id = '" . (int)$current_category_id . "'");
$cateqories_products = tep_db_fetch_array($categories_products_query);
if ($cateqories_products['total'] > 0) {
$category_depth = 'products'; // display products
} else {
$category_parent_query = tep_db_query("select count(*) as total from " . TABLE_CATEGORIES . " where parent_id = '" . (int)$current_category_id . "'");
$category_parent = tep_db_fetch_array($category_parent_query);
if ($category_parent['total'] > 0) {
$category_depth = 'nested'; // navigate through the categories
} else {
$category_depth = 'products'; // category has no products, but display the 'no products' message
}
}
}

require(DIR_WS_LANGUAGES . $language . '/' . FILENAME_DEFAULT);
?>
<!doctype html public "-//W3C//DTD HTML 4.01 Transitional//EN">
<html <?php echo HTML_PARAMS; ?>>
<head>

<?php
// BOF: WebMakers.com Changed: Header Tag Controller v1.0
// Replaced by header_tags.php
if ( file_exists(DIR_WS_INCLUDES . 'header_tags.php') ) {
require(DIR_WS_INCLUDES . 'header_tags.php');
} else {
?>
<title><?php echo TITLE; ?></title>
<?php
}
// EOF: WebMakers.com Changed: Header Tag Controller v1.0
?>

<base href="<?php echo (($request_type == 'SSL') ? HTTPS_SERVER : HTTP_SERVER) . DIR_WS_CATALOG; ?>">
<link rel="stylesheet" type="text/css" href="stylesheet.css">
</head>
<body marginwidth="0" marginheight="0" topmargin="0" bottommargin="0" leftmargin="0" rightmargin="0">
<!-- header //-->
<?php require(DIR_WS_INCLUDES . 'header.php'); ?>
<!-- header_eof //-->

<!-- body //-->
<table border="0" width="100%" cellspacing="3" cellpadding="3">
<tr>
<td width="<?php echo BOX_WIDTH; ?>" valign="top"><table border="0" width="<?php echo BOX_WIDTH; ?>" cellspacing="0" cellpadding="2">
<!-- left_navigation //-->
<?php require(DIR_WS_INCLUDES . 'column_left.php'); ?>
<!-- left_navigation_eof //-->
</table></td>
<!-- body_text //-->
<?php
if ($category_depth == 'nested') {
$category_query = tep_db_query("select cd.categories_name, c.categories_image, c.category_head_title_tag, c.category_head_desc_tag, c.category_head_keywords_tag from " . TABLE_CATEGORIES . " c, " . TABLE_CATEGORIES_DESCRIPTION . " cd where c.categories_id = '" . (int)$current_category_id . "' and cd.categories_id = '" . (int)$current_category_id . "' and cd.language_id = '" . (int)$languages_id . "'");
$category = tep_db_fetch_array($category_query);
?>
<td width="100%" valign="top"><table border="0" width="100%" cellspacing="0" cellpadding="0">
<tr>
<td><table border="0" width="100%" cellspacing="0" cellpadding="0">
<tr>
<td><h1><?php echo $category['category_head_title_tag']; ?></h1></td>
<td class="pageHeading" align="right"><?php echo tep_image(DIR_WS_IMAGES . $category['categories_image'], $category['categories_name'], HEADING_IMAGE_WIDTH, HEADING_IMAGE_HEIGHT); ?></td>
</tr>
</table></td>
</tr>
<tr>
<td><?php echo tep_draw_separator('pixel_trans.gif', '100%', '10'); ?></td>
</tr>
<tr>
<td><table border="0" width="100%" cellspacing="0" cellpadding="2">
<tr>
<td><table border="0" width="100%" cellspacing="0" cellpadding="2">
<tr>
<?php
if (isset($cPath) && strpos('_', $cPath)) {
// check to see if there are deeper categories within the current category
$category_links = array_reverse($cPath_array);
for($i=0, $n=sizeof($category_links); $i<$n; $i++) {
$categories_query = tep_db_query("select count(*) as total from " . TABLE_CATEGORIES . " c, " . TABLE_CATEGORIES_DESCRIPTION . " cd where c.parent_id = '" . (int)$category_links[$i] . "' and c.categories_id = cd.categories_id and cd.language_id = '" . (int)$languages_id . "'");
$categories = tep_db_fetch_array($categories_query);
if ($categories['total'] < 1) {
// do nothing, go through the loop
} else {
$categories_query = tep_db_query("select c.categories_id, cd.categories_name, c.categories_image, c.parent_id from " . TABLE_CATEGORIES . " c, " . TABLE_CATEGORIES_DESCRIPTION . " cd where c.parent_id = '" . (int)$category_links[$i] . "' and c.categories_id = cd.categories_id and cd.language_id = '" . (int)$languages_id . "' order by sort_order, cd.categories_name");
break; // we've found the deepest category the customer is in
}
}
} else {
$categories_query = tep_db_query("select c.categories_id, cd.categories_name, c.categories_image, c.parent_id from " . TABLE_CATEGORIES . " c, " . TABLE_CATEGORIES_DESCRIPTION . " cd where c.parent_id = '" . (int)$current_category_id . "' and c.categories_id = cd.categories_id and cd.language_id = '" . (int)$languages_id . "' order by sort_order, cd.categories_name");
}

$number_of_categories = tep_db_num_rows($categories_query);

$rows = 0;
while ($categories = tep_db_fetch_array($categories_query)) {
$rows++;
$cPath_new = tep_get_path($categories['categories_id']);
$width = (int)(100 / MAX_DISPLAY_CATEGORIES_PER_ROW) . '%';
echo ' <td align="center" class="smallText" width="' . $width . '" valign="top"><a href="' . tep_href_link(FILENAME_DEFAULT, $cPath_new) . '">' . tep_image(DIR_WS_IMAGES . $categories['categories_image'], $categories['categories_name'], SUBCATEGORY_IMAGE_WIDTH, SUBCATEGORY_IMAGE_HEIGHT) . '<br>' . $categories['categories_name'] . '</a></td>' . "\n";
if ((($rows / MAX_DISPLAY_CATEGORIES_PER_ROW) == floor($rows / MAX_DISPLAY_CATEGORIES_PER_ROW)) && ($rows != $number_of_categories)) {
echo ' </tr>' . "\n";
echo ' <tr>' . "\n";
}
}

// needed for the new products module shown below
$new_products_category_id = $current_category_id;
?>
</tr>
</table></td>
</tr>
<tr>
<td><?php echo tep_draw_separator('pixel_trans.gif', '100%', '10'); ?></td>
</tr>
<tr>
<td><?php include(DIR_WS_MODULES . FILENAME_NEW_PRODUCTS); ?></td>
</tr>
</table></td>
</tr>
</table></td>
<?php
} elseif ($category_depth == 'products' || isset($HTTP_GET_VARS['manufacturers_id'])) {
// create column list
$define_list = array('PRODUCT_LIST_MODEL' => PRODUCT_LIST_MODEL,
'PRODUCT_LIST_NAME' => PRODUCT_LIST_NAME,
'PRODUCT_LIST_MANUFACTURER' => PRODUCT_LIST_MANUFACTURER,
'PRODUCT_LIST_PRICE' => PRODUCT_LIST_PRICE,
'PRODUCT_LIST_QUANTITY' => PRODUCT_LIST_QUANTITY,
'PRODUCT_LIST_WEIGHT' => PRODUCT_LIST_WEIGHT,
'PRODUCT_LIST_IMAGE' => PRODUCT_LIST_IMAGE,
'PRODUCT_LIST_BUY_NOW' => PRODUCT_LIST_BUY_NOW);

asort($define_list);

$column_list = array();
reset($define_list);
while (list($key, $value) = each($define_list)) {
if ($value > 0) $column_list[] = $key;
}

$select_column_list = '';

for ($i=0, $n=sizeof($column_list); $i<$n; $i++) {
switch ($column_list[$i]) {
case 'PRODUCT_LIST_MODEL':
$select_column_list .= 'p.products_model, ';
break;
case 'PRODUCT_LIST_NAME':
$select_column_list .= 'pd.products_name, ';
break;
case 'PRODUCT_LIST_MANUFACTURER':
$select_column_list .= 'm.manufacturers_name, ';
break;
case 'PRODUCT_LIST_QUANTITY':
$select_column_list .= 'p.products_quantity, ';
break;
case 'PRODUCT_LIST_IMAGE':
$select_column_list .= 'p.products_image, ';
break;
case 'PRODUCT_LIST_WEIGHT':
$select_column_list .= 'p.products_weight, ';
break;
}
}

// show the products of a specified manufacturer
if (isset($HTTP_GET_VARS['manufacturers_id'])) {
if (isset($HTTP_GET_VARS['filter_id']) && tep_not_null($HTTP_GET_VARS['filter_id'])) {
// We are asked to show only a specific category
$listing_sql = "select " . $select_column_list . " p.products_id, p.manufacturers_id, p.products_price, p.products_tax_class_id, IF(s.status, s.specials_new_products_price, NULL) as specials_new_products_price, IF(s.status, s.specials_new_products_price, p.products_price) as final_price from " . TABLE_PRODUCTS . " p, " . TABLE_PRODUCTS_DESCRIPTION . " pd, " . TABLE_MANUFACTURERS . " m, " . TABLE_PRODUCTS_TO_CATEGORIES . " p2c left join " . TABLE_SPECIALS . " s on p.products_id = s.products_id where p.products_status = '1' and p.manufacturers_id = m.manufacturers_id and m.manufacturers_id = '" . (int)$HTTP_GET_VARS['manufacturers_id'] . "' and p.products_id = p2c.products_id and pd.products_id = p2c.products_id and pd.language_id = '" . (int)$languages_id . "' and p2c.categories_id = '" . (int)$HTTP_GET_VARS['filter_id'] . "'";
} else {
// We show them all
$listing_sql = "select " . $select_column_list . " p.products_id, p.manufacturers_id, p.products_price, p.products_tax_class_id, IF(s.status, s.specials_new_products_price, NULL) as specials_new_products_price, IF(s.status, s.specials_new_products_price, p.products_price) as final_price from " . TABLE_PRODUCTS . " p, " . TABLE_PRODUCTS_DESCRIPTION . " pd, " . TABLE_MANUFACTURERS . " m left join " . TABLE_SPECIALS . " s on p.products_id = s.products_id where p.products_status = '1' and pd.products_id = p.products_id and pd.language_id = '" . (int)$languages_id . "' and p.manufacturers_id = m.manufacturers_id and m.manufacturers_id = '" . (int)$HTTP_GET_VARS['manufacturers_id'] . "'";
}
} else {
// show the products in a given categorie
if (isset($HTTP_GET_VARS['filter_id']) && tep_not_null($HTTP_GET_VARS['filter_id'])) {
// We are asked to show only specific catgeory
$listing_sql = "select " . $select_column_list . " p.products_id, p.manufacturers_id, p.products_price, p.products_tax_class_id, IF(s.status, s.specials_new_products_price, NULL) as specials_new_products_price, IF(s.status, s.specials_new_products_price, p.products_price) as final_price from " . TABLE_PRODUCTS . " p, " . TABLE_PRODUCTS_DESCRIPTION . " pd, " . TABLE_MANUFACTURERS . " m, " . TABLE_PRODUCTS_TO_CATEGORIES . " p2c left join " . TABLE_SPECIALS . " s on p.products_id = s.products_id where p.products_status = '1' and p.manufacturers_id = m.manufacturers_id and m.manufacturers_id = '" . (int)$HTTP_GET_VARS['filter_id'] . "' and p.products_id = p2c.products_id and pd.products_id = p2c.products_id and pd.language_id = '" . (int)$languages_id . "' and p2c.categories_id = '" . (int)$current_category_id . "'";
} else {
// We show them all
$listing_sql = "select " . $select_column_list . " p.products_id, p.manufacturers_id, p.products_price, p.products_tax_class_id, IF(s.status, s.specials_new_products_price, NULL) as specials_new_products_price, IF(s.status, s.specials_new_products_price, p.products_price) as final_price from " . TABLE_PRODUCTS_DESCRIPTION . " pd, " . TABLE_PRODUCTS . " p left join " . TABLE_MANUFACTURERS . " m on p.manufacturers_id = m.manufacturers_id, " . TABLE_PRODUCTS_TO_CATEGORIES . " p2c left join " . TABLE_SPECIALS . " s on p.products_id = s.products_id where p.products_status = '1' and p.products_id = p2c.products_id and pd.products_id = p2c.products_id and pd.language_id = '" . (int)$languages_id . "' and p2c.categories_id = '" . (int)$current_category_id . "'";
}
}

if ( (!isset($HTTP_GET_VARS['sort'])) || (!ereg('[1-8][ad]', $HTTP_GET_VARS['sort'])) || (substr($HTTP_GET_VARS['sort'], 0, 1) > sizeof($column_list)) ) {
for ($i=0, $n=sizeof($column_list); $i<$n; $i++) {
if ($column_list[$i] == 'PRODUCT_LIST_NAME') {
$HTTP_GET_VARS['sort'] = $i+1 . 'a';
$listing_sql .= " order by pd.products_name";
break;
}
}
} else {
$sort_col = substr($HTTP_GET_VARS['sort'], 0 , 1);
$sort_order = substr($HTTP_GET_VARS['sort'], 1);
$listing_sql .= ' order by ';
switch ($column_list[$sort_col-1]) {
case 'PRODUCT_LIST_MODEL':
$listing_sql .= "p.products_model " . ($sort_order == 'd' ? 'desc' : '') . ", pd.products_name";
break;
case 'PRODUCT_LIST_NAME':
$listing_sql .= "pd.products_name " . ($sort_order == 'd' ? 'desc' : '');
break;
case 'PRODUCT_LIST_MANUFACTURER':
$listing_sql .= "m.manufacturers_name " . ($sort_order == 'd' ? 'desc' : '') . ", pd.products_name";
break;
case 'PRODUCT_LIST_QUANTITY':
$listing_sql .= "p.products_quantity " . ($sort_order == 'd' ? 'desc' : '') . ", pd.products_name";
break;
case 'PRODUCT_LIST_IMAGE':
$listing_sql .= "pd.products_name";
break;
case 'PRODUCT_LIST_WEIGHT':
$listing_sql .= "p.products_weight " . ($sort_order == 'd' ? 'desc' : '') . ", pd.products_name";
break;
case 'PRODUCT_LIST_PRICE':
$listing_sql .= "final_price " . ($sort_order == 'd' ? 'desc' : '') . ", pd.products_name";
break;
}
}
$category_query = tep_db_query("select c.category_head_title_tag from " . TABLE_CATEGORIES . " c, " . TABLE_CATEGORIES_DESCRIPTION . " cd where c.categories_id = '" . (int)$current_category_id . "' and cd.categories_id = '" . (int)$current_category_id . "' and cd.language_id = '" . (int)$languages_id . "'");
$category = tep_db_fetch_array($category_query);
?>
<td width="100%" valign="top"><table border="0" width="100%" cellspacing="0" cellpadding="0">
<tr>
<td><table border="0" width="100%" cellspacing="0" cellpadding="0">
<tr>
<td><h1><?php echo $category['category_head_title_tag']; ?></h1></td>
<?php
// optional Product List Filter
if (PRODUCT_LIST_FILTER > 0) {
if (isset($HTTP_GET_VARS['manufacturers_id'])) {
$filterlist_sql = "select distinct c.categories_id as id, cd.categories_name as name from " . TABLE_PRODUCTS . " p, " . TABLE_PRODUCTS_TO_CATEGORIES . " p2c, " . TABLE_CATEGORIES . " c, " . TABLE_CATEGORIES_DESCRIPTION . " cd where p.products_status = '1' and p.products_id = p2c.products_id and p2c.categories_id = c.categories_id and p2c.categories_id = cd.categories_id and cd.language_id = '" . (int)$languages_id . "' and p.manufacturers_id = '" . (int)$HTTP_GET_VARS['manufacturers_id'] . "' order by cd.categories_name";
} else {
$filterlist_sql= "select distinct m.manufacturers_id as id, m.manufacturers_name as name from " . TABLE_PRODUCTS . " p, " . TABLE_PRODUCTS_TO_CATEGORIES . " p2c, " . TABLE_MANUFACTURERS . " m where p.products_status = '1' and p.manufacturers_id = m.manufacturers_id and p.products_id = p2c.products_id and p2c.categories_id = '" . (int)$current_category_id . "' order by m.manufacturers_name";
}
$filterlist_query = tep_db_query($filterlist_sql);
if (tep_db_num_rows($filterlist_query) > 1) {
echo ' <td align="center" class="main">' . tep_draw_form('filter', FILENAME_DEFAULT, 'get') . TEXT_SHOW . '&nbsp;';
if (isset($HTTP_GET_VARS['manufacturers_id'])) {
echo tep_draw_hidden_field('manufacturers_id', $HTTP_GET_VARS['manufacturers_id']);
$options = array(array('id' => '', 'text' => TEXT_ALL_CATEGORIES));
} else {
echo tep_draw_hidden_field('cPath', $cPath);
$options = array(array('id' => '', 'text' => TEXT_ALL_MANUFACTURERS));
}
echo tep_draw_hidden_field('sort', $HTTP_GET_VARS['sort']);
while ($filterlist = tep_db_fetch_array($filterlist_query)) {
$options[] = array('id' => $filterlist['id'], 'text' => $filterlist['name']);
}
echo tep_draw_pull_down_menu('filter_id', $options, (isset($HTTP_GET_VARS['filter_id']) ? $HTTP_GET_VARS['filter_id'] : ''), 'onchange="this.form.submit()"');
echo '</form></td>' . "\n";
}
}

// Get the right image for the top-right
$image = DIR_WS_IMAGES . 'table_background_list.gif';
if (isset($HTTP_GET_VARS['manufacturers_id'])) {
$image = tep_db_query("select manufacturers_image from " . TABLE_MANUFACTURERS . " where manufacturers_id = '" . (int)$HTTP_GET_VARS['manufacturers_id'] . "'");
$image = tep_db_fetch_array($image);
$image = $image['manufacturers_image'];
} elseif ($current_category_id) {
$image = tep_db_query("select categories_image from " . TABLE_CATEGORIES . " where categories_id = '" . (int)$current_category_id . "'");
$image = tep_db_fetch_array($image);
$image = $image['categories_image'];
}
?>
<td align="right"><?php echo tep_image(DIR_WS_IMAGES . $image, HEADING_TITLE, HEADING_IMAGE_WIDTH, HEADING_IMAGE_HEIGHT); ?></td>
</tr>
</table></td>
</tr>
<tr>
<td><?php echo tep_draw_separator('pixel_trans.gif', '100%', '10'); ?></td>
</tr>
<tr>
<td><?php include(DIR_WS_MODULES . FILENAME_PRODUCT_LISTING); ?></td>
</tr>
</table></td>
<?php
} else { // default page
?>
<td width="100%" valign="top"><table border="0" width="100%" cellspacing="0" cellpadding="0">
<tr>

</tr>
<tr>
<td><?php echo tep_draw_separator('pixel_trans.gif', '100%', '10'); ?></td>
</tr>
<tr>
<td><table border="0" width="100%" cellspacing="0" cellpadding="0">
<tr>
<td class="main"> Title of your page New Page goes Here</td><br>
</tr>
<tr>
<td><?php echo tep_draw_separator('pixel_trans.gif', '100%', '10'); ?></td>
</tr>
<tr>
<td class="main">



Enter the text you want HERE and rename this file to what ever you want to call it i.e New_page.php, and thats it,simple and easy
(Here a tips Create page in somthing like front page view the HTML Code Copy the HTML code between the <body> </body> tags and paste it here and you will have a new page..try it )<br><br>



</td>
</tr>
<tr>
<td><?php echo tep_draw_separator('pixel_trans.gif', '100%', '10'); ?></td>
</tr>
<tr>
<td><?php include(DIR_WS_MODULES . FILENAME_NEW_PRODUCTS); ?></td>
</tr>
<?php
include(DIR_WS_MODULES . FILENAME_UPCOMING_PRODUCTS);
?>
</table></td>
</tr>
</table></td>
<?php
}
?>
<!-- body_text_eof //-->
<td width="<?php echo BOX_WIDTH; ?>" valign="top"><table border="0" width="<?php echo BOX_WIDTH; ?>" cellspacing="0" cellpadding="2">
<!-- right_navigation //-->
<?php require(DIR_WS_INCLUDES . 'column_right.php'); ?>
<!-- right_navigation_eof //-->
</table></td>
</tr>
</table>
<!-- body_eof //-->

<!-- footer //-->
<?php require(DIR_WS_INCLUDES . 'footer.php'); ?>
<!-- footer_eof //-->
<br>
</body>
</html>
<?php require(DIR_WS_INCLUDES . 'application_bottom.php'); ?>
TCwho
@saj-uk:

Please DO NOT Post BAD Advice. This is not the proper way to go about creating a new page.
Vger
Agreed. Steps were left out, which would generate errors, and you wouldn't use a root level index.php page (with all of its coding) to add new 'static' pages to your website.

Vger
itchyfanny
QUOTE (burt @ Jan 8 2003, 12:00 PM)
require(DIR_WS_LANGUAGES . $language . '/' . FILENAME_CONDITIONS);
 $breadcrumb->add(NAVBAR_TITLE, tep_href_link(FILENAME_CONDITIONS, '', 'NONSSL'));



Nice one burt, thats works great.

One question if I may.. the pages I make are SSL enabled. Is there anyway I can turn this off for my new pages?


Thanks in advance
RenFromPenn
When I tried to add the page I got a 500 error when I tried to visit any ideas why?
VPSsupport
Is there a way to add a new information box? so that the new pages are in their own box.

Thanks
jcall
Clive,

You can use similar instructions to those above, but copy includes/boxes/information.php to includes/boxes/new_box.php.

Include any language definitions in includes/languages/english.php, and add the box in includes/column_left.php or column_right.php.

-jared
badboysdarts
QUOTE (jcall @ Oct 6 2005, 07:26 AM) *
Clive,

You can use similar instructions to those above, but copy includes/boxes/information.php to includes/boxes/new_box.php.

Include any language definitions in includes/languages/english.php, and add the box in includes/column_left.php or column_right.php.

-jared


Is it possible to make this a links box to outside osc?

and is it possible to store links to filenames.php with the link to http://wherever.com
jcall
Jim, have you tried it?

-jared
double_d77
QUOTE (Henkersbraut @ Apr 14 2005, 11:14 AM) *
And in my box it now says BOX_INFORMATION_LINKS

What did I mess up this time? (And thanks for the help so far!)


Hi,

I've got the same problem as the above!!

Any ideas on how to solve it??


Cheers

Dave
jcall
in catalog/includes/languages/english.php, find
CODE
// information box text in includes/boxes/information.php
define('BOX_HEADING_INFORMATION', 'Information');
define('BOX_INFORMATION_PRIVACY', 'Privacy Notice');
define('BOX_INFORMATION_CONDITIONS', 'Conditions of Use');
define('BOX_INFORMATION_SHIPPING', 'Shipping & Returns');
define('BOX_INFORMATION_CONTACT', 'Contact Us');

and add this underneath it:
CODE
define ('BOX_INFORMATION_LINKS', 'Links from Gehenna');


That's assuming, of course, that you want the box title to be Links from Gehenna.

-jared
double_d77
QUOTE (jcall @ Oct 22 2005, 08:24 AM) *
in catalog/includes/languages/english.php, find
CODE
// information box text in includes/boxes/information.php
define('BOX_HEADING_INFORMATION', 'Information');
define('BOX_INFORMATION_PRIVACY', 'Privacy Notice');
define('BOX_INFORMATION_CONDITIONS', 'Conditions of Use');
define('BOX_INFORMATION_SHIPPING', 'Shipping & Returns');
define('BOX_INFORMATION_CONTACT', 'Contact Us');

and add this underneath it:
CODE
define ('BOX_INFORMATION_LINKS', 'Links from Gehenna');


That's assuming, of course, that you want the box title to be Links from Gehenna.

-jared


jared,

Thanks very much for your help!!!
thumbsup.gif

Dave
Elrahc
QUOTE (Vger @ May 1 2004, 05:41 PM) *
Let's clear up a few misconceptions.

You can install osCommerce in the root directory, in which case there is no folder called 'catalog'.

If you decide not to install in he root directory then the default folder would be 'catalog'

You can call the database whatever you like, as long as you name it when installing.

In the post by Burt, once the files have been uploaded, you add the new files to includes/filenames.php and not to application_top.php.

Vger


If that's the correct way of doing it I'd suggest editing Burt's post to reflect that. People tend to read the first few posts in a thread, not the whole thing. At least it'd be nice to have the "perfect solution" in one single post instead of spread thin - perhaps Burt or Vger would be so kind as to add the correct straight forward instructions to the knowledge base or as a contribution?

My $0.02

Elrahc
chongordon
hi ...im OSC newbie. i've successfully added a new page. but i cant add a pic inside the box. i wanna add a pic insted of words as a Link to "CONDITIONS"

<?php
$info_box_contents = array();
$info_box_contents[] = array('text' => BOX_HEADING_SIZE);

new infoBoxHeading($info_box_contents, false, false);

$info_box_contents = array();
$info_box_contents[] = array('text' => '<a href="' . tep_href_link(FILENAME_CONDITIONS) . '">' .i. '</a>');

new infoBox($info_box_contents);
?>


and i cant get rid of the I.... errors comes out when i get rid of the I ..
where should i add the code <img src="pic"> ?
Thanks !!! in advanced!!
Corkyswe
QUOTE (burt @ Jan 8 2003, 12:00 AM) *
Your way is good, but better (IMO):
Download the following files:
catalog/conditions.php
catalog/includes/languages/english/conditions.php
Save them (on your Hard Drive as):
catalog/template.php
catalog/includes/languages/english/template.php
When you want a new page:
Open catalog/template.php (on your HD) and change the following:
CODE
require(DIR_WS_LANGUAGES . $language . '/' . FILENAME_CONDITIONS);
 $breadcrumb->add(NAVBAR_TITLE, tep_href_link(FILENAME_CONDITIONS, '', 'NONSSL'));

To:
CODE
require(DIR_WS_LANGUAGES . $language . '/' . FILENAME_NEW_PAGE);
 $breadcrumb->add(NAVBAR_TITLE, tep_href_link(FILENAME_NEW_PAGE, '', 'NONSSL'));

where NEW_PAGE is the name of your new page.
eg if you wanted a page called "about_us.php" the code would be:
CODE
require(DIR_WS_LANGUAGES . $language . '/' . FILENAME_ABOUT_US);
 $breadcrumb->add(NAVBAR_TITLE, tep_href_link(FILENAME_ABOUT_US, '', 'NONSSL'));

Save and Upload both:
catalog/template.php
catalog/includes/languages/english/template.php
to their respective places on the live server, and then rename them BOTH to whatever, in the example: about_us.php
Set CHMOD 777 on your newly created and renamed:
catalog/includes/languages/english/about_us.php
Download, and open up application_top.php and add the following:
CODE
// New page about_us.php

define('FILENAME_ABOUT_US', 'about_us.php');

Save and upload includes/application_top.php
Now go Admin > Tools > Define Languages > about_us.php
Done. It sounds complicated but once you get the hang of it, it takes no longer than 2 minutes. It maintains the proper Osc structure.


I thought I could do it directly in the filemanager of osCommerce.
I just create a new file...
.../www/myfile.php
.../www/includes/languages/english/myfile.php

and copy the code from another file like "conditions.php" into the new respective file and change FILENAME variables as mentioned + adding new FILENAME variable in filenames.php

But when calling the file from a link inside index.php everything works ok except I get the following red text on top...

Warning: session_start(): open(/data/members/paid/c/o/coyoteboardstore.se/htdocs/www/admin/sessions/sess_0a29bdb75e2a91174e811fd23f9fafb6, O_RDWR) failed: Permission denied (13) in /data/members/paid/c/o/coyoteboardstore.se/htdocs/www/includes/functions/sessions.php on line 67

Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at /data/members/paid/c/o/coyoteboardstore.se/htdocs/www/includes/functions/sessions.php:67) in /data/members/paid/c/o/coyoteboardstore.se/htdocs/www/includes/functions/sessions.php on line 67


and on this at the very bottom...

Warning: session_write_close(): open(/data/members/paid/c/o/coyoteboardstore.se/htdocs/www/admin/sessions/sess_0a29bdb75e2a91174e811fd23f9fafb6, O_RDWR) failed: Permission denied (13) in /data/members/paid/c/o/coyoteboardstore.se/htdocs/www/includes/functions/sessions.php on line 106

Warning: session_write_close(): Failed to write session data (files). Please verify that the current setting of session.save_path is correct (/data/members/paid/c/o/coyoteboardstore.se/htdocs/www/admin/sessions) in /data/members/paid/c/o/coyoteboardstore.se/htdocs/www/includes/functions/sessions.php on line 106



The only thing I can't do in the osCommerce filemanager is...
Set CHMOD 777 on your newly created files

Is this the reason of my error? My newly created file has the same mode as the one I copied i.e. -rw-rw-r--

What am I missing here?
chongordon
QUOTE (chongordon @ Jan 25 2006, 06:52 AM) *
hi ...im OSC newbie. i've successfully added a new page. but i cant add a pic inside the box. i wanna add a pic insted of words as a Link to "CONDITIONS"

<?php
$info_box_contents = array();
$info_box_contents[] = array('text' => BOX_HEADING_SIZE);

new infoBoxHeading($info_box_contents, false, false);

$info_box_contents = array();
$info_box_contents[] = array('text' => '<a href="' . tep_href_link(FILENAME_CONDITIONS) . '">' .i. '</a>');

new infoBox($info_box_contents);
?>
and i cant get rid of the I.... errors comes out when i get rid of the I ..
where should i add the code <img src="pic"> ?
Thanks !!! in advanced!!




no one can help ? PLZ PLZ PLZ PLZ PLZ HELP !!!!!!!!!!!!!!!!
Corkyswe
I thought I could add pages directly in the filemanager of osCommerce.
I just create a new file...
.../www/myfile.php
.../www/includes/languages/english/myfile.php

and copy the code from another file like "conditions.php" into the new respective file and change FILENAME variables as mentioned + adding new FILENAME variable in filenames.php

But when calling the file from a link inside index.php everything works ok except I get the following red text on top...

Warning: session_start(): open(/data/members/paid/c/o/coyoteboardstore.se/htdocs/www/admin/sessions/sess_0a29bdb75e2a91174e811fd23f9fafb6, O_RDWR) failed: Permission denied (13) in /data/members/paid/c/o/coyoteboardstore.se/htdocs/www/includes/functions/sessions.php on line 67

Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at /data/members/paid/c/o/coyoteboardstore.se/htdocs/www/includes/functions/sessions.php:67) in /data/members/paid/c/o/coyoteboardstore.se/htdocs/www/includes/functions/sessions.php on line 67


and on this at the very bottom...

Warning: session_write_close(): open(/data/members/paid/c/o/coyoteboardstore.se/htdocs/www/admin/sessions/sess_0a29bdb75e2a91174e811fd23f9fafb6, O_RDWR) failed: Permission denied (13) in /data/members/paid/c/o/coyoteboardstore.se/htdocs/www/includes/functions/sessions.php on line 106

Warning: session_write_close(): Failed to write session data (files). Please verify that the current setting of session.save_path is correct (/data/members/paid/c/o/coyoteboardstore.se/htdocs/www/admin/sessions) in /data/members/paid/c/o/coyoteboardstore.se/htdocs/www/includes/functions/sessions.php on line 106


The only thing I can't do in the osCommerce filemanager is...
Set CHMOD 777 on your newly created files

Is this the reason of my error? My newly created file has the same mode as the one I copied i.e. -rw-rw-r--

I now tried downloading an existing file. Changed name and uploaded as stated. Now mode of my new files are _rwxrwxrwx

But still the same session error.

What am I missing here?
jcall
QUOTE (chongordon @ Feb 3 2006, 02:54 AM) *
no one can help ? PLZ PLZ PLZ PLZ PLZ HELP !!!!!!!!!!!!!!!!


try
CODE
$info_box_contents[] = array('text' => '<a href="' . tep_href_link(FILENAME_CONDITIONS) . '"><img src="myimage.jpg"></a>');


-jared
saman
QUOTE (jhilgeman @ Jan 7 2003, 10:40 PM) *
www.naturesflavors.com
- Jonathan


thanks, i am wondering how did you change: E-Commerce Engine Copyright © 2003 osCommerce
osCommerce provides no warranty and is redistributable under the GNU General Public License

Powered by osCommerce into: All Content Copyright 2006 Nature's Flavors. All Rights Reserved.
1145 W. Shelly Ct., Orange, CA 92868 - TEL: (714) 744-3700

how did you do that on all your pages and can you please tell me how to do that 2...

thanks,

saman
Tsuri Japan
If you want the text to actually show you'll have to edit the information.php file also. Hope that might help a bit more..........

Otherwords thanks and worked good.

Nigelman smile.gif
missa88
speaking of new pages, I've been trying to figure out how to create a new page with products i want to feature.

I dont want to go into the admin and create a new category and put items in there. I want the page to be kinda hidden so i can send a text link to the newsletter subscribers.

What i want to do is create a page that calls up certain products by their id number and list them with their small image, text and price, which then links to their page. Just like a sub-category page.

That way i can just browse my site and input all the numbers for the products i want.

is this possible?

maybe something like modifying the products new file?:

<td width="<?php echo SMALL_IMAGE_WIDTH + 10; ?>" valign="top" class="main"><?php echo '<a href="' . tep_href_link(FILENAME_PRODUCT_INFO, 'products_id=' . $products_new['products_id']) . '">' . tep_image(DIR_WS_IMAGES . $products_new['products_image'], $products_new['products_name'], SMALL_IMAGE_WIDTH, SMALL_IMAGE_HEIGHT) . '</a>'; ?></td>
<td valign="top" class="main"><?php echo '<a href="' . tep_href_link(FILENAME_PRODUCT_INFO, 'products_id=' . $products_new['products_id']) . '"><b><u>' . $products_new['products_name'] . '</u></b></a><br>' . $products_new['manufacturers_name'] . '<br><br>' . TEXT_PRICE . ' ' . $products_price; ?></td>

but modify each code to reflect bunch of chosen product id's ????
pcgal
Hey that's helpful!!
maddashin
QUOTE (jhilgeman @ Jan 7 2003, 10:40 PM) *
I found that if I wanted to add "extra" pages to OSC, it became a real pain to work with them. For each page there are so many headers and extra lines that include the HTML headers, columns, etc... I came up with a simpler solution - it's only a little weird to set up in the beginning.
You can see an example of this by going to www.naturesflavors.com and clicking on any of the links in the "Product Information" box on the right, or by going to www.naturesflavors.com/newsletter
Doesn't look too different than normal OSC pages, right?
Now I can add a new page to my store in seconds. This is how it works - I simply copy all the header and footer information into one file called display_page.inc.php, so its contents look like:
<?php
// display_page.inc.php
// Header
require('includes/application_top.php');
more header stuff bla bla bla
// Content
echo $PageContent;
// Footer
require('includes/application_bottom.php');
more footer stuff
?>
Then for each page I want to create, I simply make a new document, assign the content to $PageContent and include the display_page.inc.php. For instance new_policies.php:
<?
// new_policies.php
$PageContent = "<p>Here are our new policies:</p>";
$PageContent .= "Blah dee dah.<br> More stuff. Etc... n";
$PageContent .= "And that's all of them. Thanks!<br>n";
include("display_page.inc.php");
?>
And that gives me a fully-rendered page. I don't have to waste time copying-and-pasting headers and footers into each new page.
I've done a bit more than that, but that is the basic working concept.
- Jonathan
funkyducky
QUOTE (burt @ Jan 8 2003, 12:00 AM) *
Now go Admin > Tools > Define Languages > about_us.php
Done. It sounds complicated but once you get the hang of it, it takes no longer than 2 minutes. It maintains the proper Osc structure.


Those instructions were great, easy to follow but now I'm stuck.

I'm in admin>tools>define languages>my_page.php, and defined my new page. How do I get it to appear on my site? I want it in the information infobox or maybe a new info box. What do I have to select/switch on to do.

Thanks in advance.
jadegirl
QUOTE (gabrielk @ Apr 10 2005, 07:14 PM) *
You wanna add it to includes/filenames.php. You can add it anywhere in that file. smile.gif (Includes is inside your parent directory. So if osCommerce is installed in /catalogue/ then the file would be /catalogue/includes/filenames.php.

HTH, I'm fairly new to this too.

Gabriel


I sucessfully added the new page but got an error message after editing filenames.php

Warning: session_start(): Cannot send session cookie - headers already sent by (output started at c:\hosting\webhost4life\member\jadegirly2k\catalog\includes\filenames.php:68) in c:\hosting\webhost4life\member\jadegirly2k\catalog\includes\functions\sessions.php on line 67.

I restored the backup filename.php but the error is still there

HELP!!!
I didn't set the CHMOD 777 cause don't know how to. Could that be the problem?

I did exactly as Burt said and added the page in the information box.

whats gone wrong??!!!!!!!
Chorlton
Is there a way to make the additional pages only available to people with an account/logged in?

Thanks
funkyducky
Hi,

I've got to the stage I can now see my new page in the information box, and I've followed all the steps but I get the error when I click on it


Fatal error: main(): Failed opening required '' (include_path='.:/usr/local/lib/php') in /content/StartupHostPlus/b/a/xxxxxxxx.com/web/templates/fallback/main_page.tpl.php on line 121

I looked at this file and cannot see anything out of the ordinary. I'm guessing this has something to do with the templates being used (someone else set the site up for me and I'm now maintaining it).

Any ideas, what does main_page.tpl.php does or what is going wrong with it?

Thanks for you help. I'm getting there.

Regards
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Invision Power Board © 2001-2008 Invision Power Services, Inc.