Перейти к содержимому


Штатные ошибки ShopCMS, из коробки :).


  • Вы не можете ответить в тему
Сообщений в теме: 42

#21 badisoft

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 5075 сообщений
Репутация: 786
Мастер

Отправлено 02 February 2016 - 04:01 PM

Очередная штатная ошибка, которая не понятно почему до сих пор никем не была замечена.
В user.js есть JS-функция _formatPrice, она форматирует цену товара исходя из заданного округления валюты.


Все ровно то же самое, но для PHP-функции _formatPrice в файле functions.php


function _formatPrice($price, $rval = 2, $dec = '.', $term = ' ')
{
# BEGIN исправление ошибки при "отрицательном" округлении в настройке валют
# return number_format($price, $rval, $dec, $term);
return number_format(round($price,$rval), $rval, $dec, $term);
# END исправление ошибки при "отрицательном" округлении в настройке валют
}

  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#22 Robby

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 162 сообщений
Репутация: 75
Продвинутый

Отправлено 02 February 2016 - 10:30 PM

Еще одна ошибка. В административной части переходим в обсуждение товаров, выбираем все товары (обсуждений должно быть больше лимита на страницу, чтобы появилась навигация), переходим на страницу отличную от первой (в адресной строке должно появиться кроме прочего &offset=). Теперь если в фильтре товаров выбрать любой товар, то получим циклическую переадресацию. Причина в неправильном адресе возврата после выбора товара.
В файле catalog_discuss.php есть функция function GetUrlToFind() исправляем ее
function GetUrlToFind()
			    {
					    $res = ADMIN_FILE."?dpt=catalog&sub=discuss";
					    # Fix циклическая переадресация в обсуждениях товаров
					    //if ( isset( $_GET["offset"] ) )
					    //	    $res .= "&offset=".$_GET["offset"];
					    if ( isset( $_GET["sort"] ) )
							    $res .= "&sort=".$_GET["sort"];
					    return $res;
			    }
Причина в $_GET["offset"] так как в строке присутствует &offset= то функция возвращает адрес с &offset= которого не существует из-за чего и получается циклическая переадресация.
  • 0

#23 Robby

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 162 сообщений
Репутация: 75
Продвинутый

Отправлено 09 April 2016 - 12:30 PM

Некритичная ошибка в admin.php. На странице редактирования товара или категории вместо правильного charset=windows-1251 будет charset={$smarty.const.DEFAULT_CHARSET}
Находим в двух местах строку
<meta http-equiv="content-type" content="text/html; charset={$smarty.const.DEFAULT_CHARSET}">

заменяем на:
<meta http-equiv="content-type" content="text/html; charset=<?php echo DEFAULT_CHARSET;?>">

  • 0

#24 Robby

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 162 сообщений
Репутация: 75
Продвинутый

Отправлено 21 April 2016 - 09:47 PM

Повтор кода в файле conf_currencies.php - два раза повторяется строка $val["curr_where"] = (int)$val["curr_where"];
						// update existing currencies
foreach( $data as $key => $val )
{
if ( $val["curr_name"] == "" || $val["curr_currencyIso3"] == "" || $val["curr_code"] == "" )
continue;
$val["curr_value"] = (float)$val["curr_value"];
$val["curr_sort"] = (int)$val["curr_sort"];
$val["curr_where"] = (int)$val["curr_where"];
#$val["curr_where"] = (int)$val["curr_where"];
$val["curr_roundval"] = (int)$val["curr_roundval"];
if ( $val["curr_value"] < 0 )
continue;
currUpdateCurrency( $key, $val["curr_name"], $val["curr_code"], $val["curr_currencyIso3"],
$val["curr_value"], $val["curr_where"], $val["curr_sort"], $val["curr_roundval"] );
}

  • 0

#25 badisoft

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 5075 сообщений
Репутация: 786
Мастер

Отправлено 28 April 2016 - 01:12 PM

Очередная штатная ошибка:

В шаблоне category.php есть код


if(isset($_GET["advanced_search_in_category"])){
$smarty->assign( "products_to_showc", count($products));
}else{
if ( $category["show_subcategories_products"] )
$smarty->assign( "products_to_showc", $category["products_count"]);
else $smarty->assign( "products_to_showc", catGetCategoryProductCount( $categoryID, true));
}


он задает смарти-переменную products_to_showc в трех разных случаях - для расширенного поиска, для категории в случае показа с подкатегориями и для категории в случае показа без подкатегорий.
В случае показа категории с подкатегориями этой переменной присваивается значение $category["products_count"], т.е. (исходно) значение, содержащееся в одноименном поле SQL-таблицы CATEGORIES_TABLE.
Вот тут-то и кроется ошибка. Это поле содержит суммарное количетво товаров в этой категории плюс все дочерние. Вроде бы, все хорошо и правильно. Но!
1. Пусть имеется категория ААА (7 товаров), а в ней две дочерние категории BBB и CCC (тоже по 7 товаров).
2. Пусть имеет товар А, находящийся в категории DDD и ему добавлены BBB и ССС как дополнительные категории.
При выводе категорий ААА, BBB и CCC без подкатегорий все будет правильно, в каждой будет показано по 7 товаров, а переменная products_to_showc будет содержать правильное количество товаров.
А вот если вывести категорию ААА с подкатегориями, то товар А будет показан только один раз (и это правильно), хотя есть в двух категориях. А products_to_showc будет содержать неверное значение (21 вместо 20).
Повторюсь, ошибка вылезает только тогда, когда категория показывается с подкатегориями и в дочерних категориях есть дублирующиеся за счет доп.категорий товары.

Исправление:
Из кода видно, что в случае расширенного поиска (advanced_search_in_category) эта переменная принимает значение количества товаров на текущей странице, а в случае показа категории (с подкатегориями и без) - полное количество товаров, а не на текущей странице.
В том же файле category.php есть переменная $count. Если проследить ее до места задания, то это окажется самый конец функции prdSearchProductByTemplate:


$count_row = isset($callBackParam["extraParametrsTemplate"])?$i:$products_count;


Эта переменная как раз и содержит то, что нам надо - при поиске количество товаров на странице ($i), а в остальных случаях полное количество товара ($products_count). Причем как раз именно правильное количество, а не сумму товаров во всех категориях.
Соответственно, весь этот развесистый if else if else можно заменить одной строкой, получив при этом правильное значение products_to_showc вне зависимости от вышеописанных условий.


/*
if(isset($_GET["advanced_search_in_category"])){
$smarty->assign( "products_to_showc", count($products));
}else{
if ( $category["show_subcategories_products"] )
$smarty->assign( "products_to_showc", $category["products_count"]);
else $smarty->assign( "products_to_showc", catGetCategoryProductCount( $categoryID, true));
}
*/
$smarty->assign( "products_to_showc", $count);

  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#26 Robby

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 162 сообщений
Репутация: 75
Продвинутый

Отправлено 23 May 2016 - 09:28 PM

Небольшое исправление:
в файле russian.php в константе ADMIN_PRODUCT_INSTOCK первая буква в слове Склад - английская. Нужно изменить на русскую.
define('ADMIN_PRODUCT_INSTOCK', 'Cклад');

Константа используется при импорте и экспорте, вызовет проблему из-за того, что колонка Склад не будет найдена при импорте.
  • 0

#27 badisoft

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 5075 сообщений
Репутация: 786
Мастер

Отправлено 23 May 2016 - 09:34 PM

в файле russian.php в константе ADMIN_PRODUCT_INSTOCK первая буква в слове Склад - английская. Нужно изменить на русскую. define('ADMIN_PRODUCT_INSTOCK', 'Cклад');

Не нужно. Проблем будет больше. Там по всему shopCMS в соответствующих местах "Склад" с английской буквой. Либо надо везде и менять. И держать этот момент в голове, т.к. старые выгруженные CSV уже не подойдут автоматически.

PS. Хотя нет, оно ж везде оттуда и подставляется. В общем, я года три назад об этом уже писал, но помню, что там был какой-то подвох с заменой на правильное написание слова "Склад". Но в чем эта несовместимость - уже не помню.
  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#28 badisoft

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 5075 сообщений
Репутация: 786
Мастер

Отправлено 30 June 2016 - 04:55 PM

Хех... Очередная штатная ошибка :).
Если в "Управление блоками" в поле "Выбранные товары" вводить ID товаров так, как указано в хелпе, т.е.
--------
Укажите ID товаров разделяя их знаком ":".
Например - 112:231:6544:3342:22:534
--------
то сохранится только первый ID, т.к. на самом деле отделять номера надо Enter-ом, т.е. заполнять так:
112
231
6544
3342
22
534

Либо надо исправить "/n" на ":" в в файле blocks_functions.php в функциях
blockspgUpdateblocksPage
blockspgAddblocksPage
blockspgAddblocksPageFile
и цикл
{section name=z loop=$blocks_edit.products}
{$blocks_edit.products[z]}
{/section}
в файле conf_blocks_edit.tpl.html
  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#29 kery

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 134 сообщений
Репутация: 17
Начинающий

Отправлено 18 July 2016 - 09:08 PM

еще несколько ошибок в импорте csv файла всплыло:
1. не обрабатывает обратный слеш \ в наименовании товаров - если в наименовании присутствует обратный слеш \ и задана идентификация по наименованию то одинаковые товары из файла он считает как новые
2. не знаю баг или нет но импорт как то по особенному обрабатывает идентификацию по наименованию - если в каталоге присутствуют в разных категориях товары с одинаковым названием то как я понял изменяются только первый добавленный в базу к примеру: есть категория 1 уровня - "каталог по Москве" в ней категория 2-го уровня "Табак" и в ней 10 товаров, такая же категория первого уровня "Каталок по Курску" и в ней категория 2-го уровня "Табак" и аналогичные 10 товаров. Если импортировать файл и указать идентификацию по наименованию то только в "Каталоге по Москве" обновятся товары из категории "Табак" (она первая залита в базу) а в категории "Каталог по Курску" товары не изменятся.

пока не смотрел исправление за данные баги, столкнулся с ними при импорте.
  • 0

#30 Salp

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 218 сообщений
Репутация: 54
Продвинутый

Отправлено 03 August 2016 - 01:50 PM

Не ошибка, просто упрощаем код: 1. в файле cart.php заменяем

Сразу и не сообразил, как это упрощение применить при установленных модулях "Подарки к заказу" и "Корзина в модальном окне".

П.С. Даже, вообще, не сообразил (
  • 0

#31 badisoft

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 5075 сообщений
Репутация: 786
Мастер

Отправлено 03 August 2016 - 07:17 PM

Сразу и не сообразил, как это упрощение применить при установленных модулях

А что там соображать?
1. Описанные изменения просто убирают лишний код, т.к. все рассчитываемые в коде данные уже и так есть в результате выполнения вышерасположенной строки

$resCart = cartGetCartContent();

2. Этот "лишний" код практически тот же, что и в функции cartGetCartContent(), т.е. если при установке какого-то модуля (дополнения) вносились изменения в этот код, то такие же изменения должны были вноситься и в функцию.

Другими словами, я не вижу причин, по которым нельзя было бы закомментировать этот же кусок кода даже если в него внесены какие-то изменения.
  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#32 Salp

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 218 сообщений
Репутация: 54
Продвинутый

Отправлено 03 August 2016 - 08:44 PM

badisoft, приведу пример двух участков кода при установленном модуле подарков к заказу:
условие в cart.php
	if ( isset ( $_SESSION["log"] ))
//taking products from database
{
$q = db_query("select itemID, Quantity FROM ".SHOPPING_CARTS_TABLE." WHERE customerID=".( int ) regGetIdByLogin($_SESSION["log"]));
while ( $row = db_fetch_row($q)) {
$q1 = db_query("select productID from ".SHOPPING_CART_ITEMS_TABLE." where itemID=".( int ) $row["itemID"]);
$r1 = db_fetch_row($q1);
$variants = GetConfigurationByItemId($row["itemID"]);
$k += GetPriceProductWithOption($variants, $r1["productID"]) * $row["Quantity"];
$cnt += $row["Quantity"];
}
}
else
if ( isset ( $_SESSION["gids"] ))
//...session vars
{
for ( $i = 0; $i < count($_SESSION["gids"]); $i++ ) {
if ( $_SESSION["gids"][$i] ) {
# BEGIN Present
/*
$t = db_query("select Price FROM ".PRODUCTS_TABLE." WHERE productID=".( int ) $_SESSION["gids"][$i]);
$rr = db_fetch_row($t);
$sum = $rr["Price"];
// $rr["Price"]
foreach ( $_SESSION["configurations"][$i] as $varconf ) {
$q1 = db_query("select price_surplus from ".PRODUCTS_OPTIONS_SET_TABLE." where variantID=".( int ) $varconf." AND productID=".( int ) $_SESSION["gids"][$i]);
$r1 = db_fetch_row($q1);
$sum += $r1["price_surplus"];
}
*/
$sum = GetPriceProductWithOption($_SESSION["configurations"][$i],$_SESSION["gids"][$i]);
# END Present
$k += $_SESSION["counts"][$i] * $sum;
$cnt += $_SESSION["counts"][$i];
}
}
}


условие в файле shopping_cart_info.php
		if (isset($_SESSION["log"])) //taking products from database
{
$q = db_query("select itemID, Quantity FROM ".SHOPPING_CARTS_TABLE.
" WHERE customerID=".regGetIdByLogin($_SESSION["log"]));
while ($row = db_fetch_row($q))
{
$q1=db_query("select productID from ".SHOPPING_CART_ITEMS_TABLE.
" where itemID=".$row["itemID"]);
$r1=db_fetch_row($q1);
if($r1["productID"]){
$variants=GetConfigurationByItemId( $row["itemID"] );
$k += GetPriceProductWithOption($variants, $r1["productID"])*$row["Quantity"];
$cnt+=$row["Quantity"];
}
}
}
else
if (isset($_SESSION["gids"])) //...session vars
{
for ($i=0; $i<count($_SESSION["gids"]); $i++)
{
if ($_SESSION["gids"][$i])
{
# BEGIN Present
/*
$t = db_query("select Price FROM ".PRODUCTS_TABLE." WHERE productID=".(int)$_SESSION["gids"][$i]);
$rr = db_fetch_row($t);
$sum=$rr["Price"];
// $rr["Price"]
foreach( $_SESSION["configurations"][$i] as $vars )
{
$q1=db_query("select price_surplus from ".PRODUCTS_OPTIONS_SET_TABLE.
" where variantID=".(int)$vars." AND productID=".(int)$_SESSION["gids"][$i]);
$r1=db_fetch_row($q1);
$sum+=$r1["price_surplus"];
}
*/
$sum = GetPriceProductWithOption($_SESSION["configurations"][$i],$_SESSION["gids"][$i]);
# END Present
$k += $_SESSION["counts"][$i]*$sum;
$cnt += $_SESSION["counts"][$i];
}
}
}

  • 0

#33 Salp

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 218 сообщений
Репутация: 54
Продвинутый

Отправлено 04 August 2016 - 12:29 AM

Вместо:

/*
if(isset($_GET["advanced_search_in_category"])){
$smarty->assign( "products_to_showc", count($products));
}else{
if ( $category["show_subcategories_products"] )
$smarty->assign( "products_to_showc", $category["products_count"]);
else $smarty->assign( "products_to_showc", catGetCategoryProductCount( $categoryID, true));
*/
$smarty->assign( "products_to_showc", $count);

должно быть (пропущена закрывающая скобка):
/*
if(isset($_GET["advanced_search_in_category"])){
$smarty->assign( "products_to_showc", count($products));
}else{
if ( $category["show_subcategories_products"] )
$smarty->assign( "products_to_showc", $category["products_count"]);
else $smarty->assign( "products_to_showc", catGetCategoryProductCount( $categoryID, true));
}
*/
$smarty->assign( "products_to_showc", $count);

Ошибка приводила к белому экрану, поэтому нужно исправить.
  • 0

#34 Salp

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 218 сообщений
Репутация: 54
Продвинутый

Отправлено 12 August 2016 - 08:59 AM

В админке при подсчете заказов сегодня/вчера и за месяц не учитывается часовой пояс, установленный в общих настройках.
Исправление - файл totals.php
//orders today
#$curr_time = time();
$curr_time = time() + intval(CONF_TIMEZONE)*3600;

#$YESTERDAY = strftime( "%Y-%m-%d 00:00:00", time()-24*3600);
$YESTERDAY = strftime( "%Y-%m-%d 00:00:00", time()-24*3600 + intval(CONF_TIMEZONE)*3600 );

  • 0

#35 badisoft

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 5075 сообщений
Репутация: 786
Мастер

Отправлено 26 March 2017 - 03:18 PM

Проблемы с DMARC

С 18 мая 2016 года администрацией mail.ru была включена строгая политика DMARC для всех почтовых ящиков в доменах почтового сервиса mail.ru, таких как
*@(mail.ru/list.ru/inbox.ru/bk.ru/mail.ua).

По этой причине сообщения с заголовками From (От кого) и указанием ящиков почтового сервиса mail.ru, отправляемые не с почтового сервера mail.ru, к примеру, с использованием скриптов Вашего сайта, сразу отклоняются использующими проверку DMARC-политики серверами получателей и не могут быть доставлены.
На текущий момент проверка DMARC производится на таких почтовых сервисах как yandex.ru, mail.ru, gmail.com, yahoo.com и других.

С течением времени политику DMARC начинает применять все большее количество сервисов, что приводит к невозможности доставки писем с некорректным полем From (От кого)

Более полно: https://habrahabr.ru...ru/blog/282602/

Решение: в файле /core/functions/functions.php в функциях xMailTxtHTML и xMailTxtHTMLDATA


вместо


$mail->From = $castmail;


вставляем


# BEGIN исправляем отправку email
#$mail->From = $castmail;
$mail->From = CONF_GENERAL_EMAIL;
$mail->Sender = CONF_GENERAL_EMAIL;
# END исправляем отправку email


Сообщения будут приходить от email магазина, но с именем клиента (в заголовке From будет email магазина)
Но ответ на них (при нажатии кнопки "Ответить") будет идти на email клиента, т.к. он берется из заголовка Reply-To.

Для наглядности можно добавить Имя и email клиента в первую строку сообщения.
  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#36 makki

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 148 сообщений
Репутация: 7
Начинающий

Отправлено 27 March 2017 - 03:47 PM

Проблемы с DMARC

Другой вариант решения проблемы: отправлять через SMTP.
  • 0

#37 badisoft

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 5075 сообщений
Репутация: 786
Мастер

Отправлено 27 March 2017 - 04:51 PM

Другой вариант решения проблемы: отправлять через SMTP.

Это весьма не самый простой вариант.
Ведь через бесплатный SMTP-сервер mail.ru (или yandex, или gmail) получится отправлять только если во From будет стоять соответствующий домен (мэйлрушный, яндексовый, жемэйловый). А многие (люди, не сервисы) совершенно справедливо криво смотрят на ситуацию, когда развесистый магазин со своим доменом почему-то работает через почтовый ящик бесплатного сервиса.

Идея-то у DMARC проста. Каждый доменовладелец (например, mail.ru) вводит правила, по которым письмо с его доменом во from может войти в сеть. Ведь будет странным, если во from будет стоять vasya@mail.ru, а письмо непарольно (!) войдет в сеть с IP 123.123.123.123, который к домену mail.ru никаким боком. По парольному протоколу - пожалуйста.

Можно зарегистрировать MX-запись для своего домена на yandex.ru (https://pdd.yandex.ru/ - почта для домена) или в аналогичной службе Гугла, но я не уверен, что после этого письма с доменом mail.ru или gmail.com в поле From станут доходить. Хотя, если я правильно понял написанное по ссылке, то должны.

В общем, мне кажется, что исправлять надо причину (некорректный по нынешним реалиям email во From), а не пытаться это обойти.
  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#38 makki

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 148 сообщений
Репутация: 7
Начинающий

Отправлено 27 March 2017 - 05:10 PM

Другой вариант решения проблемы: отправлять через SMTP.

Это весьма не самый простой вариант.

Это может быть непростой вариант и почта уходит не так быстро как через серверную функцию mail(), но если все правильно настроено, это гарантированный метод доставки ваших писем даже на привередливый gmail.

Ведь через бесплатный SMTP-сервер mail.ru (или yandex, или gmail) получится отправлять только если во From будет стоять соответствующий домен (мэйлрушный, яндексовый, жемэйловый). А многие (люди, не сервисы) совершенно справедливо криво смотрят на ситуацию, когда развесистый магазин со своим доменом почему-то работает через почтовый ящик бесплатного сервиса.

Я использую SMTP-сервер хостинг провайдера с настроенной DKIM для домена.
Прикрепленный файл  smtp.png   20.2К   8 Количество загрузок:
  • 0

#39 badisoft

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 5075 сообщений
Репутация: 786
Мастер

Отправлено 27 October 2017 - 03:58 PM

Очередная мелкая ошибка. Но позволяет наступить на грабли :).

В файле setting_constants.sql почему-то у всех численных констант функция задана как
'setting_TEXT_BOX(0,'
а надо
'setting_TEXT_BOX(2,'
Из-за этого в численные константы (минимальная сумма заказа и другие) можно вписать любой текст или вообще ничего.
Параметр функции (она находится в setting_functions.php) задает, в какой вид преобразовать введенную в поле строку.
0 - текстовая строка, 1 - float, 2-int.

Исправлять надо ДО инсталляции, т.к. setting_constants.sql это то, что при инсталляции прописывается в SQL-таблицу xxx_settings и берется потом оттуда.
На работающем сайте исправлять надо уже в самой таблице.
  • 1
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#40 badisoft

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 5075 сообщений
Репутация: 786
Мастер

Отправлено 17 January 2018 - 01:38 PM

Еще несколько найденных ошибок:

==========================================

При создании заказа не проверяется необходимость заполнения полей "адрес","город", "город(область)", а ВСЕГДА прописывается то, что было заполнено у клиента при регистрации.
Даже если комбинация заполняемых полей в "форме регистрации" с тех пор изменилась и, например, город при оформлении заказа уже не нужен.

function regGetAddress( $addressID )
{
if ( $addressID != null )
{
// $customerID
$q = db_query( "select first_name, last_name, countryID, zoneID, ".
" state, city, address, customerID from ".
CUSTOMER_ADDRESSES_TABLE." where addressID=".(int)$addressID);
$row=db_fetch_row($q);
# BEGIN исправление. "Обнулим" адрес/город/город(область) клиента, если в админке "Форма регистрации" они не нужны.
if (CONF_ADDRESSFORM_STATE==2) $row['zoneID'] = 0;
if (CONF_ADDRESSFORM_CITY==2) $row['city'] = '';
if (CONF_ADDRESSFORM_ADDRESS==2) $row['address'] = '';
# END исправление. "Обнулим" адрес/город/город(область) клиента, если в админке "Форма регистрации" они не нужны.
return $row;
}
else
return false;
}


=====================================

Нашел интересную SQL-таблицу и функции. На скорость не влияют, просто лишние :).

1. есть файл /install/sql/setting_groups.sql, из него при инсталляции получается таблица SETTINGS_GROUPS_TABLE (xxxx_settings_groups).
2. эта таблица используется в файле install.php и функциях settingInstall и settingGetAllSettingGroup (файл setting_functions.php)
3. функция settingInstall используется в xml_installer.php.
4. функция settingGetAllSettingGroup испольуется в conf_setting.php для получения смарти-массива $setting_groups.
5. смарти-массив $setting_groups не используется в conf_setting.tpl.html, да и вообще нигде.
Круг замкнулся. Ни таблица, ни функции (результат) после инсталляции нигде не используются.

PS. Из спортивного интереса пробежался по product_functions.php (помню, что там попадались какие-то мутные функции) - и точно!
Функции
GetProductInSubCategories
prdGetMetaKeywordTag
нигде и никогда не вызываются.

=====================================

Очередная прикольная штатная ошибка.

В файле order_functions.php в функции _sendOrderNotifycationToCustomer
используется шаблон customer_order_notification.tpl.html для отправки емейла клиенту о том, что создан заказ.
В шаблоне используется смарти-переменная {$order_time}, но она нигде в функции не задается.
Однако, при штатном создании заказа емейл приходит с нормальной датой/временем создания заказа.
Чудеса? Нет.
В аналогичной функции отправки емейла о заказе админу _sendOrderNotifycationToAdmin эта смарти-переменная создается,
а поскольку в функции OrderProcessing отправка письма клиенту стоит ПОСЛЕ отправки письма админу,
то на момент отправки письма клиенту смарти-переменная {$order_time} уже существует и имеет правильное значение.

_sendOrderNotifycationToAdmin(...
_sendOrderNotifycationToCustomer(...

А вот в стороннем модуле "Быстрый заказ 2.0" (quick_order) эти функции расположены наоборот

_sendOrderNotifycationToCustomer(...
_sendOrderNotifycationToAdmin(...

и письмо клиенту приходит без даты/времени создания заказа.
Исправить просто - в функции _sendOrderNotifycationToCustomer
после

$order = _getOrderById( $orderID );

вставляем

$smarty_mail->assign("order_time",format_datetime($order["order_time"]));


=====================================
  • 1
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)