Originally Posted by
clint6998
ok so I have made a few changes to the page and css. Here is the new php and a screen shot as it seems that in a the listings are in teh following order:
div-->manufacturers-->clearBoth-->Next alpha-->attop link. Any ideas? See image below php
PHP Code:
<?php
echo '<div id="alphanumericWrapper"><span class="buttonRow btn"><div style="float: left; padding: 0;margin:4,0"><a name="attop">';
echo '<a href="'. $_SERVER['REQUEST_URI'] . '#hash">#</a></div>';
for ($i=65; $i<91; $i++) {
echo '<div style="float: left; padding: 0;margin:4,0"><a href="'. $_SERVER['REQUEST_URI'] . '#' . chr($i).'">' . chr($i) . '</a></div>';
}
echo '</span></div>';
echo '<br class="clearBoth" /><br class="clearBoth" />';
$manufacturers_query = "SELECT distinct manufacturers_id, manufacturers_name FROM " . TABLE_MANUFACTURERS . " ORDER BY manufacturers_name";
$manufacturers = $db->Execute($manufacturers_query);
$numeric_displayed = false;
while (!$manufacturers->EOF) {
if (!is_numeric(strtoupper(substr($manufacturers->fields['manufacturers_name'], 0, 1))) && $initial !== strtoupper(substr($manufacturers->fields['manufacturers_name'], 0, 1))) {
$initial = strtoupper(substr($manufacturers->fields['manufacturers_name'], 0, 1));
echo '<br class="clearBoth" /><br class="clearBoth" />';
echo '<h4 class="manufacturers" style="width: 100%"><a name="'.$initial.'" class="bold bigger defaultColor">' . $initial . '</a><span style="align: right;" class="btn buttonRow"><a href="'.$_SERVER['REQUEST_URI'] . '#attop">Back to Top</a></span></h4>';
echo '<br class="clearBoth" /><br class="clearBoth" />';
} elseif (!$numeric_displayed && is_numeric(strtoupper(substr($manufacturers->fields['manufacturers_name'], 0, 1)))) {
$initial = strtoupper(substr($manufacturers->fields['manufacturers_name'], 0, 1));
echo '<br class="clearBoth" />';
echo '<h4 class="manufacturers" style="width: 100%"><a name="hash" class="bold bigger defaultColor">#</a>';
echo '##<span style="align: right;" class="btn buttonRow"><a href="'.$_SERVER['REQUEST_URI'] . '#attop">Back to Top</a></span></h4>';
echo '<br class="clearBoth" />';
$numeric_displayed = true;
}
echo '<div style="width: 33.3%; float: left; min-width:200px"><a href="' . zen_href_link(FILENAME_DEFAULT, 'manufacturers_id=' . (int) $manufacturers->fields['manufacturers_id'], $request_type) . '">' . $manufacturers->fields['manufacturers_name'] . '</a></div>';
$manufacturers->MoveNext();
}
echo '<br class="clearBoth" />';
?>
screenshot
Attachment 16095
I agree with @cvhainb, and I have some suggestion for you:
PHP Code:
<?php
// manufacturers map page
// includes/modules/pages/manufacturers_map/header_php.php
// template: includes/templates/YOUR_TEMPLATE/templates/tpl_manufacturers_map_default.php
// store manufacturers in array
$number_list = $manufacturers_list = array();
$letter_list = range('A', 'Z');
$manufacturers_map_title = 'Manufacturers Map';
$link_format = '<li><a href="%s%s" target="_self">%s</a></li>';
$manufacturers_map_link = zen_href_link('manufacturers_map');
$manufacturers_mid_link = zen_href_link(FILENAME_DEFAULT, 'manufacturers_id=%d');
$breadcrumb->add($manufacturers_map_title);
define(META_TAG_TITLE, $manufacturers_map_title . PRIMARY_SECTION . TITLE);
// fetch all manufacturers from db
// ORDER BY usually cause low performance problem, using PHP sort instead
$manufacturers_list_get = $db->Execute(sprintf('SELECT manufacturers_id, manufacturers_name FROM `%s`;', TABLE_MANUFACTURERS));
while (!$manufacturers_list_get->EOF) {
$manufacturers_name = ucwords(trim($manufacturers_list_get->fields['manufacturers_name']));
$first_letter = substr($manufacturers_name, 0, 1);
// check if number
if (is_numeric($first_letter)) {
$number_list[] = array('name' => $manufacturers_name, 'id' => $manufacturers_list_get->fields['manufacturers_id']);
}else{
// check if duplicate
if (!isset($manufacturers_list[$first_letter][$manufacturers_name])) {
$manufacturers_list[$first_letter][$manufacturers_name] = $manufacturers_list_get->fields['manufacturers_id'];
}
}
$manufacturers_list_get->MoveNext();
}
// now we can show manufacuters list in includes/templates/YOUR_TEMPLATE/templates/tpl_manufacturers_map_default.php
//EOF
template: includes/templates/YOUR_TEMPLATE/templates/tpl_manufacturers_map_default.php
PHP Code:
<style>
.clearfix:after{content:".";display:block;height:0;clear:both;visibility:hidden}
.clearfix{*+height:1%;}
#manufacturers_map{}
#manufacturers_letter ul{list-style: none;}
#manufacturers_letter ul li{border-right: 1px solid #aaa; float: left; margin: 0;}
#manufacturers_letter ul li:last-child{border: none;}
#manufacturers_letter ul li a{display: inline-block; padding: 0 5px;}
.manufacturers_list{margin: 15px 0;}
.manufacturers_list .letter{margin-top: 10px;}
.manufacturers_list .letter h3{display: inline-block;}
.manufacturers_list .letter span{float: right;}
.manufacturers_list .letter span a{color: #aaa}
.manufacturers_list .list{list-style: none; border-top: 1px solid #aaa;}
.manufacturers_list .list li{float: left; width: 33%}
</style>
<div id="manufacturers_map">
<h1><?php echo $manufacturers_map_title;?></h1>
<div id="manufacturers_letter">
<ul class="clearfix">
<?php
echo sprintf($link_format, $manufacturers_map_link, "#hash", '#');
foreach ($letter_list as $letter) {
echo sprintf($link_format, $manufacturers_map_link, "#$letter", $letter);
}
?>
</ul>
</div>
<?php
$block = '<div class="manufacturers_list"><div class="letter clearfix"><h3><a name="%s"></a>%s</h3><span><a href="%s#">top</a></span></div><ul class="list clearfix">%s</ul></div>';
if (!empty($number_list)) {
$links = array();
foreach ($number_list as $num_item) {
$links[] = sprintf($link_format, sprintf($manufacturers_mid_link, $num_item['id']), '', $num_item['name']);
}
echo sprintf($block, 'hash', '#', $manufacturers_map_link, implode('', $links));
}
foreach ($letter_list as $letter) {
if (isset($manufacturers_list[$letter])) {
$block_data = sprintf($block, $letter, $letter, $manufacturers_map_link, '%s');
$links = array();
foreach ($manufacturers_list[$letter] as $m_name => $m_id) {
$links[] = sprintf($link_format, sprintf($manufacturers_mid_link, $m_id), '', $m_name);
}
$block_data = sprintf($block_data, implode('', $links));
echo $block_data;
}
}
?>
</div>
Bookmarks