fominsa
Мой дом здесь!
- Регистрация
- 11 Фев 2008
- Сообщения
- 234
- Реакции
- 230
а за 500 ссылок думаете ЯША не заматерит?
думаю нет я покрайней мере отслеживаю его матерки
делать меньшее количество не удобно - пропадает смысл прайс листа
Follow along with the video below to see how to install our site as a web app on your home screen.
Примечание: This feature may not be available in some browsers.
а за 500 ссылок думаете ЯША не заматерит?
Ладно народ уговорили!
надоело мне видеть данную тему с бессмыслеными топиками. просьба модераторов закройте ее!
Я же в свою очередь выкладываю алгаритм разбиения по листам с фиксированым количеством товаров!
Заметьте имено фиксированом товаров а не строк. тоесть если вы ставите показывать 10 позиций то строк будет всеравно больше пример:
Код:-Категория1 --Категория2 ---Категория3 ----Товар 1 ----Товар 2 ----Товар 3 ----Товар 4 ----Товар 5 ----Товар 6 ----Товар 7 ----Товар 8 ----Товар 9 ----Товар 10
Итого строк 13 товаров отображено 10
другой вариант
Итого строк 22 товаров отображено 10Код:-Категория1 --Категория2 ---Категория3-1 ----Товар 1 ---Категория3-2 ----Товар 2 ---Категория3-3 ----Товар 3 ---Категория3-4 ----Товар 4 ---Категория3-5 ----Товар 5 ---Категория3-6 ----Товар 6 ---Категория3-7 ----Товар 7 ---Категория3-8 ----Товар 8 ---Категория3-9 ----Товар 9 ---Категория3-10 ----Товар 10
Как видите во втором варианте количество ссылок резко возрастает так что при настройке скрипта вам надо это учитавать.
Я не буду расписывать где что поменял в файле вот текст файла includes/pricelist.php просто заменяйте все на это.
define("MAX_TOWAR_IN_PRAIS_LIST",20); число 20 меняете на свое это и есть строка отвечающая за колличество товаров на странице.PHP:<?php define("MAX_TOWAR_IN_PRAIS_LIST",20); // show whole price list $_GET["mmm"]=0; function pricessCategories($parent,$level) { //same as processCategories(), except it creates a pricelist of the shop $out = array(); $cnt = 0; $q1 = db_query("select categoryID, name from ".CATEGORIES_TABLE. " where parent=$parent order by sort_order, name") or die (db_error()); while (($row = db_fetch_row($q1))&&($_GET["mmm"]<MAX_TOWAR_IN_PRAIS_LIST+$_GET["page"])){ //define back color of the cell $r = hexdec(substr(CONF_MIDDLE_COLOR, 0, 2)); $g = hexdec(substr(CONF_MIDDLE_COLOR, 2, 2)); $b = hexdec(substr(CONF_MIDDLE_COLOR, 4, 2)); $m = (float)max($r, max($g,$b)); $r = round((190+20*min($level,3))*$r/$m); $g = round((190+20*min($level,3))*$g/$m); $b = round((190+20*min($level,3))*$b/$m); $c = dechex($r).dechex($g).dechex($b); //final color //add category to the output $out[$cnt][0] = $row[0]; $out[$cnt][1] = $row[1]; $out[$cnt][2] = $level; $out[$cnt][3] = $c; $out[$cnt][4] = 0; //0 is for category, 1 - product $cnt++; if ( !isset($_GET["sort"]) ) $order_clause = "order by sort_order"; else { //verify $_GET["sort"] switch ($_GET["sort"]){ default: $_GET["sort"] = "name"; case 'name': case 'Price': case 'customers_rating': break; } $order_clause = " order by ".$_GET["sort"]; if ( isset($_GET["direction"]) ) { if ( !strcmp( $_GET["direction"] , "DESC" ) ) $order_clause .= " DESC "; else $order_clause .= " ASC "; } } $sql = " select productID, name, Price, in_stock from ".PRODUCTS_TABLE. " where categoryID=".$row[0]." and enabled=1 ". $order_clause." "; //add products $q = db_query( $sql ) or die (db_error()); while ($row1 = db_fetch_row($q)) { $_GET["mmm"]++; if ($_GET["mmm"]>$_GET["page"]&&$_GET["mmm"]<=$_GET["page"]+MAX_TOWAR_IN_PRAIS_LIST){ if ($row1[2] <= 0) $row1[2]= "n/a"; else $row1[2] = show_price($row1[2]); //add product to the output $out[$cnt][0] = $row1[0]; $out[$cnt][1] = $row1[1]; $out[$cnt][2] = $level; $out[$cnt][3] = "FFFFFF"; $out[$cnt][4] = 1; //0 is for category, 1 - product $out[$cnt][5] = $row1[2]; $out[$cnt][6] = $row1[3]; $cnt++; } } //process all subcategories if ($_GET["mmm"]<=($_GET["page"]+MAX_TOWAR_IN_PRAIS_LIST)){ $sub_out = pricessCategories($row[0], $level+1); } //add $sub_out to the end of $out for ($j=0; $j<count($sub_out); $j++){ $out[] = $sub_out[$j]; $cnt++; } } return $out; } //pricessCategories function _sortPriceListSetting( &$smarty, $urlToSort ) { $sort_string = STRING_PRICELIST_ITEM_SORT; $sort_string = str_replace( "{ASC_NAME}", "<a href='".$urlToSort."&sort=name&direction=ASC'>".STRING_ASC."</a>", $sort_string ); $sort_string = str_replace( "{DESC_NAME}", "<a href='".$urlToSort."&sort=name&direction=DESC'>".STRING_DESC."</a>", $sort_string ); $sort_string = str_replace( "{ASC_PRICE}", "<a href='".$urlToSort."&sort=Price&direction=ASC'>".STRING_ASC."</a>", $sort_string ); $sort_string = str_replace( "{DESC_PRICE}", "<a href='".$urlToSort."&sort=Price&direction=DESC'>".STRING_DESC."</a>", $sort_string ); $smarty->assign( "string_product_sort", $sort_string ); } if (isset($_GET["show_price"])) //show pricelist { _sortPriceListSetting( $smarty, "index.php?show_price=yes" ); list($max_product)=mysql_fetch_row(mysql_query("SELECT COUNT(*) FROM ".PRODUCTS_TABLE." WHERE `enabled`=1&&categoryID!=1")); $max_pages=ceil($max_product/MAX_TOWAR_IN_PRAIS_LIST); $_GET["page"]=(isset($_GET["page"])&&(int)$_GET["page"]>=0&&(int)$_GET["page"]<$max_pages)?(int)$_GET["page"]*MAX_TOWAR_IN_PRAIS_LIST:0; $pricelist_elements = pricessCategories(1,0); $pricelist_elements=array_reverse($pricelist_elements); foreach ($pricelist_elements as $key=>$val){ if ($val[4]==1){ $maximym=$val[2]; }else{ if ($val[2]<=$maximym)$maximym--; else unset($pricelist_elements[$key]); } } $pricelist_elements=array_reverse($pricelist_elements); $smarty->assign("pricelist_pages", $max_pages); $smarty->assign("pricelist_now_page", (int)$_GET["page"]/MAX_TOWAR_IN_PRAIS_LIST); $smarty->assign("pricelist_elements", $pricelist_elements); $smarty->assign("main_content_template", "pricelist.tpl.html"); } ?>
Далее в templates\frontend\tmpl1\pricelist.tpl.html
там где необходимо вывести страницы пишем:
тупые вопросы расцениваю как нежелание разбиратся и их игнорирую!HTML:<table cellpadding="0" cellspacing="0" border="0"><tr> {section name=i loop=$pricelist_pages} <td width="25">{if $smarty.section.i.index ne $pricelist_now_page}<a href="/index.php?show_price=yes&page={$smarty.section.i.index}">{$smarty.section.i.index+1}</a>{else}{$smarty.section.i.index+1}{/if}</td> {/section} </tr></table>
for ($j=0; $j<count($sub_out); $j++){
$out[] = $sub_out[$j];
$cnt++;
}
Спасибо большое, все классно!
Одно но:
не нравится ему 86 строка:
Notice: Undefined variable: sub_out in /var/www/vhosts/site.com/httpdocs/includes/pricelist.php on line 86
PHP:for ($j=0; $j<count($sub_out); $j++){ $out[] = $sub_out[$j]; $cnt++; }
if ($_GET["mmm"]<=($_GET["page"]+MAX_TOWAR_IN_PRAIS_LIST)){
$sub_out = pricessCategories($row[0], $level+1);
}
//add $sub_out to the end of $out
for ($j=0; $j<count($sub_out); $j++){
$out[] = $sub_out[$j];
$cnt++;
}
// меняем на
if ($_GET["mmm"]<=($_GET["page"]+MAX_TOWAR_IN_PRAIS_LIST)){
$sub_out = pricessCategories($row[0], $level+1);
//add $sub_out to the end of $out
for ($j=0; $j<count($sub_out); $j++){
$out[] = $sub_out[$j];
$cnt++;
}
}
ты в шаблоне priselist.tpl.htmlВсё разобрался - ошибки нет.
Но Вот с выводом на печать - почемуто выводися каждый раз только 1 страница.
В привед1нном примере сайта - santehnika04.ru/index.php?show_price=yes&page=17
тоже выводит на печать 1 страницу.
javascript:open_printable_version('printable.php?show_price=yes');
javascript:open_printable_version('printable.php?show_price=yes&page={$pricelist_now_page}');
<table cellpadding="0" cellspacing="0" border="0"><tr>
{section name=i loop=$pricelist_pages}
<td width="25">{if $smarty.section.i.index ne $pricelist_now_page}
<a href="/shop/index.php?show_price=yes&page={$smarty.section.i.index}">
{$smarty.section.i.index+1}</a>
{else}{$smarty.section.i.index+1}{/if}</td>
{/section}
</tr></table>