When I look at the contributions Glenn Herbert makes to this forum I realise just how fortunate the forum is to have his expertise and commitment.
This series of posts is extremely valuable. Thanks a TON, Glen, for all you do around here.![]()
When I look at the contributions Glenn Herbert makes to this forum I realise just how fortunate the forum is to have his expertise and commitment.
This series of posts is extremely valuable. Thanks a TON, Glen, for all you do around here.![]()
20 years a Zencart User
I agree wholeheartedly with this observation.
The original EZ-Pages Sidebox does work correctly!
"ezpages2.php" however is another story. I was trying to test it out with my EZ-Page '1' and it will not display even after I have verified that it is set to show in the sidebox with a sort order of 1.
I have edited the file by changing the mistake you told me to fix. The code is shown below.
ezpages2.php:
Could it be something related to "tpl_ezpages2.php"? I have left this file unchanged.PHP Code:<?php
/**
* ezpages sidebox - used to display links to EZ-Pages content
*
* @package templateSystem
* @copyright Copyright 2003-2007 Zen Cart Development Team
* @copyright Portions Copyright 2003 osCommerce
* @license http://www.zen-cart.com/license/2_0.txt GNU Public License V2.0
* @version $Id: ezpages.php 6021 2007-03-17 16:34:19Z ajeh $
*/
$zco_notifier->notify('NOTIFY_START_EZPAGES2_SIDEBOX');
// test if sidebox should display
if (EZPAGES2_STATUS_SIDEBOX == '1' or (EZPAGES2_STATUS_SIDEBOX== '2' and (strstr(EXCLUDE_ADMIN_IP_FOR_MAINTENANCE, $_SERVER['REMOTE_ADDR'])))) {
if (isset($var_linksList)) {
unset($var_linksList);
}
$page_query = $db->Execute("select * from " . TABLE_EZPAGES . " where status_sidebox = 1 and sidebox_sort_order > 0 order by sidebox_sort_order, pages_title");
if ($page_query->RecordCount()>0) {
$title = BOX_HEADING_EZPAGES2;
$box_id = 'ezpages2';
$rows = 0;
while (!$page_query->EOF) {
if (in_array($page_query->fields['pages_id'], explode(',', '1,2,3,17,4,5,6,1,7,8,9,10'))) { //list of ez-page ids to display in this box
$rows++;
$page_query_list_sidebox[$rows]['id'] = $page_query->fields['pages_id'];
$page_query_list_sidebox[$rows]['name'] = $page_query->fields['pages_title'];
$page_query_list_sidebox[$rows]['altURL'] = "";
switch (true) {
// external link new window or same window
case ($page_query->fields['alt_url_external'] != ''):
$page_query_list_sidebox[$rows]['altURL'] = $page_query->fields['alt_url_external'];
break;
// internal link new window
case ($page_query->fields['alt_url'] != '' and $page_query->fields['page_open_new_window'] == '1'):
$page_query_list_sidebox[$rows]['altURL'] = (substr($page_query->fields['alt_url'],0,4) == 'http') ?
$page_query->fields['alt_url'] :
($page_query->fields['alt_url']=='' ? '' : zen_href_link($page_query->fields['alt_url'], '', ($page_query->fields['page_is_ssl']=='0' ? 'NONSSL' : 'SSL'), true, true, true));
break;
// internal link same window
case ($page_query->fields['alt_url'] != '' and $page_query->fields['page_open_new_window'] == '0'):
$page_query_list_sidebox[$rows]['altURL'] = (substr($page_query->fields['alt_url'],0,4) == 'http') ?
$page_query->fields['alt_url'] :
($page_query->fields['alt_url']=='' ? '' : zen_href_link($page_query->fields['alt_url'], '', ($page_query->fields['page_is_ssl']=='0' ? 'NONSSL' : 'SSL'), true, true, true));
break;
}
// if altURL is specified, use it; otherwise, use EZPage ID to create link
$page_query_list_sidebox[$rows]['link'] = ($page_query_list_sidebox[$rows]['altURL'] =='') ?
zen_href_link(FILENAME_EZPAGES2, 'id=' . $page_query->fields['pages_id'] . ($page_query->fields['toc_chapter'] > 0 ? '&chapter=' . $page_query->fields['toc_chapter'] : ''), ($page_query->fields['page_is_ssl']=='0' ? 'NONSSL' : 'SSL')) :
$page_query_list_sidebox[$rows]['altURL'];
$page_query_list_sidebox[$rows]['link'] .= ($page_query->fields['page_open_new_window'] == '1' ? '" target="_blank' : '');
} //in_array
$page_query->MoveNext();
}
$title_link = false;
$var_linksList = $page_query_list_sidebox;
require($template->get_template_dir('tpl_ezpages2.php',DIR_WS_TEMPLATE, $current_page_base,'sideboxes'). '/tpl_ezpages2.php');
$zco_notifier->notify('NOTIFY_END_EZPAGES_SIDEBOX');
require($template->get_template_dir($column_box_default, DIR_WS_TEMPLATE, $current_page_base,'common') . '/' . $column_box_default);
}
} // test for display
$zco_notifier->notify('NOTIFY_END_EZPAGES2_SIDEBOX');
?>
Thanks in Advance!
ojhernandez
I was looking at "ezpages2.php" again and saw that there was one mention of "EZPAGES" that was not edited to have the 2 after it.
This is shown in the line below:
This line is now edited to read:PHP Code:$zco_notifier->notify('NOTIFY_END_EZPAGES_SIDEBOX');
I fixed this and it still does not work.PHP Code:$zco_notifier->notify('NOTIFY_END_EZPAGES2_SIDEBOX');
Just wanted to add this in case that was the error.
Thanks,
ojhernandez
I can't see anything that should be a problem, assuming all of the constants for EZPAGES2 have been defined correctly... Okay, that's it.
Some of the constants are for admin settings, and without adding new code to probably several admin files, this test will fail:It needs to refer to the only existing admin setting, EZPAGES_STATUS_SIDEBOXPHP Code:// test if sidebox should display
if (EZPAGES2_STATUS_SIDEBOX == '1' or (EZPAGES2_STATUS_SIDEBOX== '2' and (strstr(EXCLUDE_ADMIN_IP_FOR_MAINTENANCE, $_SERVER['REMOTE_ADDR'])))) {
Both sideboxes will be on or off together.PHP Code:// test if sidebox should display
if (EZPAGES_STATUS_SIDEBOX == '1' or (EZPAGES_STATUS_SIDEBOX== '2' and (strstr(EXCLUDE_ADMIN_IP_FOR_MAINTENANCE, $_SERVER['REMOTE_ADDR'])))) {
Are You Vulnerable for an Accessibility Lawsuit?
myZenCartHost.com - Zen Cart Certified, PCI Compatible Hosting by JEANDRET
Free SSL, Domain, and MagicThumb with semi-annual and longer hosting
I had to make a few more changes to get it to work. On line 53 of ezpages2.php it should say
(without EZPAGES2)Code:zen_href_link(FILENAME_EZPAGES, 'id='
The page_query that decides which EZ Page goes into which box wasn't working, because they both had the same name, so I renamed the second to $page_query2
And I had to add
define('BOX_HEADING_EZPAGES2','Box 2 Heading');
to ez_pages_definitions.php
And now it works a treat!
Would it be worth making it a contrib?
Okay, zen_href_link(FILENAME_EZPAGES, is required because this doesn't refer to the sidebox at all, but to the ez-page main_page name in the URL.
define('BOX_HEADING_EZPAGES2','Box 2 Heading'); was something I expected to be already defined correctly, but didn't know you hadn't done.
I wouldn't think the $page_query would be a problem any more than the $page_query_list_sidebox, as they are both assigned from scratch in each sidebox and should wipe out any previous content, but maybe something from the first box execution carries over in spite of that. I'll have to test that.
There is one possible failure mode for the display test as is: if there are no actual ez-pages set to display in one of the sideboxes, it will still execute and show an empty box. That can be avoided by moving the filter to an earlier point, in the SQL query. This fetches all sidebox links regardless of which box they are intended to display in:It would be necessary to add to the "where" clause something like and id in [list]; I have seen an example of this but still need to look up the correct syntax for the list and check the "id" field to be sure of its correct name.PHP Code:$page_query = $db->Execute("select * from " . TABLE_EZPAGES . " where status_sidebox = 1 and sidebox_sort_order > 0 order by sidebox_sort_order, pages_title");
if ($page_query->RecordCount()>0) {
I had been thinking that this would make a good tutorial to highlight various gotchas that might need to be dealt with when cloning a sidebox; with the additional ones you have uncovered, it would definitely save a lot of grief to also have it in packaged mod form. I'll work on that, with the SQL adaptation I mentioned.
If it works, it works. This is not an ambiguous function, so I don't expect surprises if you have it doing what it is supposed to do. I actually didn't notice that it wasn't you who posted those additional changes.
The BOX_HEADING_EZPAGES2, if undefined, will be used as its literal name, and your sidebox would be titled BOX_HEADING_EZPAGES2.
The zen_href_link(FILENAME_EZPAGES, will only be active if the link is to an ez-page; internal or external links will bypass that function and work regardless.
I'm not sure that you actually need to edit $page_query.
For the improved filter, remove the two lines described above in post 6.
Add to the SQL query
and pages_id in (" . EZPAGES_SIDEBOX_FILTER . ")
or
and pages_id in (" . EZPAGES2_SIDEBOX_FILTER . ")
to getMake a new file /includes/datafiles/extra_datafiles/ezpages_sidebox_filters.php, with contentPHP Code:$page_query = $db->Execute("select * from " . TABLE_EZPAGES . " where status_sidebox = 1 and sidebox_sort_order > 0 and pages_id in (" . EZPAGES_SIDEBOX_FILTER . ") order by sidebox_sort_order, pages_title");
if ($page_query->RecordCount()>0) {
PHP Code:define('EZPAGES_SIDEBOX_FILTER', '1,3,5,7,11');
define('EZPAGES2_SIDEBOX_FILTER', '2,4,6,8,9,10');