[Модуль] Продукты (app_products)

Разработка дополнительных модулей, подключение различных приложений.

Модератор: immortal

fandaymon
Сообщения: 1553
Зарегистрирован: Сб янв 13, 2018 5:00 pm
Благодарил (а): 39 раз
Поблагодарили: 574 раза

Re: Модуль Продукты

Сообщение fandaymon » Чт мар 01, 2018 10:31 pm

nick7zmail, webms вы же разбирались в разметке и шаблонах этого модуля. Где поменять, чтобы в покупках количество бралось не из таблицы Products, а из таблицы shopping_list_items? Почти доделал возможность при голосовом вводе сказать количество, но не понимаю, что сделать чтобы это количество потом было видно в списке покупок....
Аватара пользователя
webms
Сообщения: 498
Зарегистрирован: Чт дек 15, 2016 3:13 am
Благодарил (а): 221 раз
Поблагодарили: 88 раз

Re: Модуль Продукты

Сообщение webms » Чт мар 01, 2018 10:53 pm

nick7zmail, круто!! этого я не умею уже делать)
у меня в админке вообще не получается создавать категории и подкатегории (я через добавление нового товара добавляю новую категорию)
но после твоих изменений, все работает, спасибо

ps:еще нужно рядом с картинкой кнопку удаление самой картинки сделать :)

предлагаю вот так выводить подкатегории, чуть позже сделаю
Вложения
Clip2net_180301225129.png
Clip2net_180301225129.png (90.83 КБ) 3756 просмотров
Последний раз редактировалось webms Чт мар 01, 2018 11:29 pm, всего редактировалось 2 раза.
Аватара пользователя
webms
Сообщения: 498
Зарегистрирован: Чт дек 15, 2016 3:13 am
Благодарил (а): 221 раз
Поблагодарили: 88 раз

Re: Модуль Продукты

Сообщение webms » Чт мар 01, 2018 11:09 pm

fandaymon писал(а):nick7zmail, webms вы же разбирались в разметке и шаблонах этого модуля. Где поменять, чтобы в покупках количество бралось не из таблицы Products, а из таблицы shopping_list_items? Почти доделал возможность при голосовом вводе сказать количество, но не понимаю, что сделать чтобы это количество потом было видно в списке покупок....
это к nick7zmail, я не знаю как(
Аватара пользователя
webms
Сообщения: 498
Зарегистрирован: Чт дек 15, 2016 3:13 am
Благодарил (а): 221 раз
Поблагодарили: 88 раз

Re: Модуль Продукты

Сообщение webms » Чт мар 01, 2018 11:46 pm

Если не хотите чтоб добавлялся +1 или -1 при добавление в корзину,
то нужно в файле products_search.inc.php закомментировать

Код: Выделить всё

//SQLExec("UPDATE products SET QTY=QTY+1 WHERE ID='".(int)$id."'"); 
и

Код: Выделить всё

//SQLExec("UPDATE products SET QTY=QTY-1 WHERE ID='".(int)$id."'"); 
За это сообщение автора webms поблагодарил:
fandaymon (Пт мар 02, 2018 2:06 am)
Рейтинг: 1.16%
Аватара пользователя
webms
Сообщения: 498
Зарегистрирован: Чт дек 15, 2016 3:13 am
Благодарил (а): 221 раз
Поблагодарили: 88 раз

Re: Модуль Продукты

Сообщение webms » Пт мар 02, 2018 12:35 am

в этом же файле нужно изменить вот это, иначе не показывает заголовок "в корзине" товару из последней категории

Код: Выделить всё

    if ($res[$i]['CATEGORY_ID']!=$old_category_id) {
      $old_category_id=$res[$i]['CATEGORY_ID'];
      $res[$i]['NEW_CATEGORY']=1;
    }
     
    if ($out['SHOPPING']) {
     if ($res[$i]['IN_CART']!=$incart) {
      $res[$i]['CATEGORY_TITLE']='<br><br><hr><span style="color:red;">В карзине:</span><br/>'.$res[$i]['CATEGORY_TITLE'];
      $incart=$res[$i]['IN_CART'];
      $res[$i]['NEW_CATEGORY']=1;
     }
    }
 
fandaymon
Сообщения: 1553
Зарегистрирован: Сб янв 13, 2018 5:00 pm
Благодарил (а): 39 раз
Поблагодарили: 574 раза

Re: Модуль Продукты

Сообщение fandaymon » Пт мар 02, 2018 2:12 am

webms писал(а):Если не хотите чтоб добавлялся +1 или -1 при добавление в корзину,
то нужно в файле products_search.inc.php закомментировать

Код: Выделить всё

//SQLExec("UPDATE products SET QTY=QTY+1 WHERE ID='".(int)$id."'");  
и

Код: Выделить всё

//SQLExec("UPDATE products SET QTY=QTY-1 WHERE ID='".(int)$id."'");  
Поискал в том районе и нашёл, что если добавить в select LIST_QTY из shopping_list_items

// SEARCH RESULTS
$res=SQLSelect("SELECT shopping_list_items.LIST_QTY,products.*, shopping_list_items.IN_CART, (TO_DAYS(EXPIRE_DATE)-TO_DAYS(NOW())) as EXPIRE_TERM, product_categories.TITLE as CATEGORY_TITLE FROM products LEFT JOIN product_categories ON products.CATEGORY_ID=product_categories.ID LEFT JOIN shopping_list_items ON products.ID=shopping_list_items.PRODUCT_ID WHERE $qry ORDER BY $sortby");

А потом в /templates/products_search_admin.html вместо [#QTY#] написать [#LIST_QTY#], то в покупках будет показывать количество не из products, а из shopping_list_items, что и требовалось. Правда такое исправление затирает QTY и в других вкладках - ВСЕ ПРОДУКТЫ, ИСТЕКШИЕ, ОТСУТСТВУЮЩИЕ, но наверное это можно исправить каким-нибудь условием. Буду копать дальше 8-)
Аватара пользователя
nick7zmail
Сообщения: 7573
Зарегистрирован: Пн окт 28, 2013 8:14 am
Откуда: Екатеринбург
Благодарил (а): 121 раз
Поблагодарили: 2010 раз

Re: Модуль Продукты

Сообщение nick7zmail » Пт мар 02, 2018 6:25 am

webms писал(а):nick7zmail, круто!! этого я не умею уже делать)
у меня в админке вообще не получается создавать категории и подкатегории (я через добавление нового товара добавляю новую категорию)
но после твоих изменений, все работает, спасибо

ps:еще нужно рядом с картинкой кнопку удаление самой картинки сделать :)

предлагаю вот так выводить подкатегории, чуть позже сделаю
Ну на это есть я))
У меня в админке модуль даже со старым оформлением работать не хочет...тыкал на категорию - на несколько секунд появляется то что надо, а потом перекидывает на дашборд...и да, категории тоже не хотели создаваться. А вот если открыть приложения, там модуль продукты, и на "ключ гаечный" нажать - вот там всё работает на ура!
Про удаление картинки как то не подумал)) добавим.
Про подкатегории - у них тоже могут быть картинки во-первых, а во-вторых уровень вложенности может быть бесконечный)) ну 3-4 уровня по крайней мере точно стоит проработать...чтобы и картинки и количество было...Предлагаю примерно так сделать, если это возможно
Clip2net_180301225129.jpg
Clip2net_180301225129.jpg (65.67 КБ) 3683 просмотра
Ну или ещё вариант - вообще убрать вложенности...ну это на крайний случай, и, наверное, по согласованию с Сергеем.


И кстати я сделал, чтобы весь блок ссылкой был, а не только надпись...так что можно в любое место блока тыкать, так как-то правильнее наверное.

П.С.: По поводу базы - разве в shopping_list_items есть количество?...вроде не видел...вообще - посмотрел немножко модуль - что-то много таблиц он юзает...мне кажется от половины избавиться можно...products и product_categories оставить.
Вместо shopping_list_items - делать выборку из products по условию, product_log - что это вообще?, product_codes - тоже табличка непонятная...всё в products же вносить можно...



Отправлено с моего Xperia XZ1 Compact через Tapatalk
За это сообщение автора nick7zmail поблагодарил:
webms (Пт мар 02, 2018 8:50 am)
Рейтинг: 1.16%
Raspberry Pi3+Broadlink+esp8266 (blynk)+AMS
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
:arrow: Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
fandaymon
Сообщения: 1553
Зарегистрирован: Сб янв 13, 2018 5:00 pm
Благодарил (а): 39 раз
Поблагодарили: 574 раза

Re: Модуль Продукты

Сообщение fandaymon » Пт мар 02, 2018 12:28 pm

nick7zmail писал(а):
П.С.: По поводу базы - разве в shopping_list_items есть количество?...вроде не видел...вообще - посмотрел немножко модуль - что-то много таблиц он юзает...мне кажется от половины избавиться можно...products и product_categories оставить.
Вместо shopping_list_items - делать выборку из products по условию, product_log - что это вообще?, product_codes - тоже табличка непонятная...всё в products же вносить можно...
По умолчанию - нету, но я добавил. Логика простая - products это то что есть, shopping_list_items это то что надо купить. Хочется иметь возможность указать сколько именно требуется купить продукта. Т.е. не вести учёт что есть и в магазине смотреть чего дома нету и покупать, а заранее составить список чего и сколько надо купить. Ну или что бы этот список составил кто-то другой.
Табличка shopping_list я так понимаю задумано для развития модуля - если скажем я планирую заскочить в несколько разных магазинов и для каждого из них делаю свой список покупок. Наверное это было бы удобно, но вроде на данный момент это не реализовано
product_log - это логирование движения продуктов - когда купили, когда израсходовали. Если добавить цены, то можно посчитатать, например, сколько денег в семье тратится на хлеб 8-) Как для меня ценность этой информации сомнительная, но люди все разные - может кому-то это и нужно. product_codes это чисто справочник кодов. Скачивается какая-нибудь большая таблица со списком кодов и если вдруг в магазине покупается что-то, чего ещё не покупалось и чего нету в таблице products, то по коду из таблицы product_codes приходит название.
fandaymon
Сообщения: 1553
Зарегистрирован: Сб янв 13, 2018 5:00 pm
Благодарил (а): 39 раз
Поблагодарили: 574 раза

Re: Модуль Продукты

Сообщение fandaymon » Сб мар 03, 2018 12:28 am

Очередная версия - добавлено распознавание конструкций - 1 бутылку красного вина, 200 грамм сливочного масла. Исправлены ошибки согласования рода прилагательных и существительных в разных сложных случаях. Добавил 2 новых поля в таблицу shopping_list_items и проверку их наличия в скрипте. Если их нету, то поля добавляются следующим скриптом

Код: Выделить всё

//Добавляем 2 поля в shopping_list_items если их там нету

$res=SQLSelect('show fields from shopping_list_items;');

$is_qty=0;
$is_ed_izm=0;
$totals = count($res);
for ($is = 0; $is < $totals; $is++) {
 if ($res[$is]['Field']=='List_Qty') $is_qty=1;
 if ($res[$is]['Field']=='Ed_Izm') $is_ed_izm=1;
}
             
if ($is_qty==0) SQLExec('ALTER TABLE shopping_list_items ADD List_Qty INT DEFAULT 1');
if ($is_ed_izm==0) SQLExec('ALTER TABLE shopping_list_items ADD Ed_Izm varchar(15)');

СпойлерПоказать

Код: Выделить всё

<?php

//$command='черный молотый перец белого лука гель для душа хлеба белого мыло марки пальмалив 1 бутылку красного вина';


require_once(ROOT . "lib/phpmorphy/common.php");
$opts = array(
 'storage' => PHPMORPHY_STORAGE_MEM,
 'predict_by_suffix' => true,
 'predict_by_db' => true,
 'graminfo_as_text' => true,
 );
$dir = ROOT . 'lib/phpmorphy/dicts';
$lang = 'ru_RU';
        try {
            $morphy = new phpMorphy($dir, $lang, $opts);
            $this->morphy =& $morphy;
        } catch (phpMorphy_Exception $e) {
            die('Error occured while creating phpMorphy instance: ' . PHP_EOL . $e);
        }
        $words = explode(' ', $command);
        $base_forms = array();
        $partsOfSpeech=array();
        $f_word=array();
        $totals = count($words);
        for ($is = 0; $is < $totals; $is++) {
            if (preg_match('/^(\d+)$/', $words[$is])) {
                $base_forms[$is] = array($words[$is]);
        $partsOfSpeech[$is]=array('ЧИСЛ');
        $f_word[$is]=array('');
            } else {
                $Word = mb_strtoupper($words[$is], 'UTF-8');
                $base_forms[$is] = $morphy->getBaseForm($Word);
                $partsOfSpeech[$is] = $morphy->getPartOfSpeech($Word);
                $f_word[$is] = $morphy->getGramInfo($Word);
             if ($base_forms[$is][0]=='ВОД') {
                 $base_forms[$is][0]='ВОДА';
                 for ($kk= 0; $kk < count($f_word[$is][0][0]['grammems'])-1; $kk++) {
           if ($f_word[$is][0][0]['grammems'][$kk]=='МР') {
                     $f_word[$is][0][0]['grammems'][$kk]='ЖР';
                     break;
                   }
                 }
                }
            if ( count($partsOfSpeech[$is])==2) {
                 if ($partsOfSpeech[$is][0]=="С" and $partsOfSpeech[$is][1]=="П") {
                  $partsOfSpeech[$is][0]="П";
          $chislo=array_intersect($f_word[$is][1][0]['grammems'],['ЕД', 'МН']);
          $chislo=reset($chislo);
           $rod=array_intersect($f_word[$is][1][0]['grammems'],['МР', 'ЖР', 'СР']);
           $rod=reset($rod);
          $f_word[$is][0][0]['grammems'][0]=$chislo;
                  $f_word[$is][0][0]['grammems'][1]=$rod;

                 } 
                elseif ($partsOfSpeech[$is][0]=="Г" and $partsOfSpeech[$is][1]=="С") {
          $partsOfSpeech[$is][0]="С";
                 $base_forms[$is][0]=$base_forms[$is][1];
         $chislo=array_intersect($f_word[$is][1][0]['grammems'],['ЕД', 'МН']);
         $chislo=reset($chislo);
          $rod=array_intersect($f_word[$is][1][0]['grammems'],['МР', 'ЖР', 'СР']);
          $rod=reset($rod);
                 $f_word[$is][0][0]['grammems'][0]=$chislo;
                 $f_word[$is][0][0]['grammems'][1]=$rod;
                  
                 }
                }
                $base_forms[$is][]=$words[$is];
            } 
        }


$products='';
$qty=1;
$ed_izm='';


for ($is = 0; $is < $totals; $is++) {

    if (preg_match('/^(\d+)$/', $words[$is])) {
    $qty=(int)$words[$is];
    if (($is+1)<$totals) {
            if (in_array($base_forms[$is+1][0],array('БУТЫЛКА','ПАЧКА','ШТУКА','УПАКОВКА','ГРАММ','КИЛОГРАММ','РУЛОН'))) {         
            $ed_izm=$base_forms[$is+1][0];
            $ed_izm=mb_strtolower($ed_izm, 'UTF-8');
            $is++;
            
        }
    }
    }
    else {
    if ($partsOfSpeech[$is][0]=='С') {
    $chislo=array_intersect($f_word[$is][0][0]['grammems'],['ЕД', 'МН']);
    $chislo=reset($chislo);
    $rod1=array_intersect($f_word[$is][0][0]['grammems'],['МР', 'ЖР', 'СР']);
    $rod1=reset($rod1);

        if (($is+1)<$totals) {
            if ($partsOfSpeech[$is+1][0]=='С') {
        if ($base_forms[$is+1][0]=='МАРКА' or $base_forms[$is+1][0]=='ФИРМА') {
            $product=$base_forms[$is][0]. ' ' . $words[$is+1] . ' ' . $words[$is+2];
            $is=$is+2;
        }
        else {
            if ($chislo=='ЕД') {
             $product=$morphy->castFormByGramInfo($base_forms[$is][0],'С',[$rod1,'ЕД','ИМ']);
            }
            else {
             $product=$morphy->castFormByGramInfo($base_forms[$is][0],'С',[$chislo,'ИМ']);
            }
            $product=$product[0]['form'];
        }
            }
            elseif ($partsOfSpeech[$is+1][0]=='ПРЕДЛ') {
                $product=$base_forms[$is][0] . ' ' . $words[$is+1] . ' ' . $words[$is+2];
                $is=$is+2;
            }
             elseif ($partsOfSpeech[$is+1][0]=='П') {
        $rod=array_intersect($f_word[$is+1][0][0]['grammems'],['МР', 'ЖР', 'СР']);
        $rod=reset($rod);
        // Выбираем форму прилагательного правильного рода
        if ($chislo=='ЕД') {
            $adjective=$morphy->castFormByGramInfo($base_forms[$is+1][0],"П",[$rod,'ЕД','ИМ']);
        }
        else {
            $adjective=$morphy->castFormByGramInfo($base_forms[$is+1][0],"П",['МН','ИМ']);
        }
        $adjective=$adjective[0]['form'];
        if ($chislo=='ЕД') {
            $noun=$morphy->castFormByGramInfo($base_forms[$is][0],'С',[$rod,'ЕД','ИМ']);
        }
        else {
             $noun=$morphy->castFormByGramInfo($base_forms[$is][0],'С',[$chislo,'ИМ']);
        }
        $noun=$noun[0]['form'];
        if (Get_Product_ID($adjective . " " . $noun)>0) {
            $product=$adjective . " " . $noun;
            $is=$is+1;
        }
        else {
            if ($chislo=='ЕД') {
                $noun=$morphy->castFormByGramInfo($base_forms[$is][0],'С',[$rod,'ЕД','ИМ']);
            }
            else {
                 $noun=$morphy->castFormByGramInfo($base_forms[$is][0],'С',[$chislo,'ИМ']);
            }
            $product=$noun[0]['form'];
        }
            }

        }
        else {
        if ($chislo=='ЕД') {
            $noun=$morphy->castFormByGramInfo($base_forms[$is][0],'С',[$chislo,$rod1,'ИМ']);
        }
        else {
            $noun=$morphy->castFormByGramInfo($base_forms[$is][0],'С',[$chislo,'ИМ']);
        }
        $noun=$noun[0]['form'];
            $product=$noun;
        }
    }
    elseif ($partsOfSpeech[$is][0]=='П') {
    $rod=array_intersect($f_word[$is][0][0]['grammems'],['МР', 'ЖР', 'СР']);
    $rod=reset($rod);
    $chislo=array_intersect($f_word[$is][0][0]['grammems'],['МН', 'ЕД']);
    $chislo=reset($chislo);
    
    // Выбираем форму прилагательного правильного рода
    if ($chislo=='ЕД') {
        $adjective=$morphy->castFormByGramInfo($base_forms[$is][0],"П",[$rod,'ЕД','ИМ']);
    }
    else {
        $adjective=$morphy->castFormByGramInfo($base_forms[$is][0],"П",['МН','ИМ']);
    }
    $adjective=$adjective[0]['form'];
        if (($is+1)<$totals) {
            if ($partsOfSpeech[$is+1][0]=='С') {
                if (count($base_forms[$is+1])>2){
                 // выбираем форму согласованную по роду
                 for ($kk= 0; $kk < count($base_forms[$is+1])-1; $kk++) {
                       $rod1=array_intersect($f_word[$is+1][$kk][0]['grammems'],['МР', 'ЖР', 'СР']);
                    $rod1=reset($rod1);
                    if ($rod==$rod1) break;
                 }
         if ($chislo=='ЕД') {
             $noun=$morphy->castFormByGramInfo($base_forms[$is+1][$kk],'С',['ЕД',$rod,'ИМ']);
         }
         else {
            $noun=$morphy->castFormByGramInfo($base_forms[$is+1][$kk],'С',[$chislo,'ИМ']);
         }
         $noun=$noun[0]['form'];

                 $product=$adjective .' ' . $noun ;
                 $is=$is+1; 
                }
                else {
         $noun=$morphy->castFormByGramInfo($base_forms[$is+1][0],'С',[$chislo,'ИМ']);
         $noun=$noun[0]['form'];

                 $product=$adjective .' ' . $noun ;
                 $is=$is+1; 
                } 
            }
            elseif ($partsOfSpeech[$is+1][0]=='П') {
                if ($chislo=='ЕД') {
                    $adjective1=$morphy->castFormByGramInfo($base_forms[$is+1][0],"П",[$rod,'ЕД','ИМ']);
                }
                else {
                    $adjective1=$morphy->castFormByGramInfo($base_forms[$is+1][0],"П",['МН','ИМ']);
                }

                $adjective1=$adjective1[0]['form'];
                if (($is+2)<$totals) {
                    if ($partsOfSpeech[$is+2][0]=='С') {

                        if (count($base_forms[$is+2])>2){
                            // выбираем форму согласованную по роду
                            for ($kk= 0; $kk < count($base_forms[$is+2])-1; $kk++) {
                                $rod1=array_intersect($f_word[$is+2][$kk][0]['grammems'],['МР', 'ЖР', 'СР']);
                                $rod1=reset($rod1);
                            }
                if ($chislo=='ЕД') {
                     $noun=$morphy->castFormByGramInfo($base_forms[$is+2][$kk],'С',['ЕД',$rod,'ИМ']);
                }
                else {
                     $noun=$morphy->castFormByGramInfo($base_forms[$is+2][$kk],'С',[$chislo,'ИМ']);
                }
                 $noun=$noun[0]['form'];
 
                            $product=$adjective .' ' . $adjective1 . ' ' . $noun ;
                            $is=$is+2; 
                 
                        }
                        else {
                 $noun=$morphy->castFormByGramInfo($base_forms[$is+2][0],'С',[$chislo,'ИМ']);
                 $noun=$noun[0]['form'];

                            $product=$adjective .' ' . $adjective1 .' ' . $base_forms[$is+2][0];
                            $is=$is+2; 
                        }
                    }
                    else {
                        $product=$adjective .' ' . $adjective1;
                        $is=$is+1;
                    }    
                }
                else {
                    $product=$adjective .' ' . $adjective1;
                    $is=$is+1;
                }    
            }                
        }
        else {
            $product=$adjective;
        }    
    }        

    $product = mb_strtolower($product, 'UTF-8');

    //say($product);
    if ($products=='') $products.=$product; else $products.='. ' . $product;
     
    if($debugEnabled) debmes('Products produkt:'. $product);
                
    $id=Get_Product_ID( $product);
    if ($id > 0){
        addToListQty($id,$qty,$ed_izm);
        if($debugEnabled) debmes('Products produkt '.$product.' found, ID:'. $id);
    }
    Else {
        if($debugEnabled) debmes('Products produkt '.$product.' not found, adding');
        $category_id = Get_Category_ID("Неотсортированные");
        if ($category_id > 0){
            if($debugEnabled) debmes('Products category exiting unknown');
            $this->category_id = $category_id;
        } 
        Else {
            if($debugEnabled) debmes('Products creating unknown');
               $Record = Array();
               $Record['TITLE'] = "Неотсортированные";
               $Record['ID']=SQLInsert('product_categories', $Record);
            $category_id = $Record['ID'];
                            
            if($debugEnabled) debmes('Products produkt '.$product.' adding to created unknown');
        }

           $Record = Array();
           $Record['TITLE'] = $product;
          $Record['CATEGORY_ID'] = $category_id;
          $Record['QTY'] = 1;
           $Record['ID']=SQLInsert('products', $Record);
        $id = $Record['ID'];

        addToListQty($id,$qty,$ed_izm);
        if($debugEnabled) debmes('Products produkt '.$product.' not found, added to category id '.$category_id);
    }
    $qty=1;
    $ed_izm='';
 }
} 

say('Я добавила в список покупок: ' . $products,2);

function Get_Product_ID($product) {
$res=SQLSelectOne("select ID from products where TITLE='" . $product . "'");

$id=0;
if ($res['ID']) {
 $id=$res['ID'];
}  

return $id;
}

function Get_Category_ID($category) {
$res=SQLSelectOne("select ID from product_categories where TITLE='" . $category . "'");
$id=0;
if ($res['ID']) {
 $id=$res['ID'];
}
return $id;

}

function addToListQty($id,$qty,$ed_izm) {
   $product=SQLSelectOne("SELECT * FROM products WHERE ID='".(int)$id."'");
   if ($product['ID']) {
    SQLExec("DELETE FROM shopping_list_items WHERE PRODUCT_ID='".(int)$id."'");
    $rec=array();
    $rec['PRODUCT_ID']=$product['ID'];
    $rec['TITLE']=$product['TITLE'];
    $rec['IN_CART']=0;
    $rec['List_Qty']=$qty;
    $rec['Ed_Izm']=$ed_izm;
    SQLInsert('shopping_list_items', $rec);
    if (defined('DROPBOX_SHOPPING_LIST')) {
     $data=LoadFile(DROPBOX_SHOPPING_LIST);
     $data=str_replace("\r", '', $data);
     $lines=explode("\n", $data);
     $total=count($lines);
     $found=0;
     for($i=0;$i<$total;$i++) {
      if ($found) {
       continue;
      }
      if (is_integer(strpos($lines[$i], $product['TITLE']))) {
       $found=1;
      }
     }
     if (!$found) {
      if (!$data) {
       $lines=array();
       $lines[]='SHOPPING LIST';
       $lines[]='';
      }
      $lines[]=$product['TITLE'];
      $data=implode("\n", $lines);
      SaveFile(DROPBOX_SHOPPING_LIST, $data);
     }
    }
   }


}

?>
В products_search.inc.php поменять

// SEARCH RESULTS
$res=SQLSelect("SELECT LIST_QTY,ED_IZM, products.*, shopping_list_items.IN_CART, (TO_DAYS(EXPIRE_DATE)-TO_DAYS(NOW())) as EXPIRE_TERM, product_categories.TITLE as CATEGORY_TITLE FROM products LEFT JOIN product_categories ON products.CATEGORY_ID=product_categories.ID LEFT JOIN shopping_list_items ON products.ID=shopping_list_items.PRODUCT_ID WHERE $qry ORDER BY $sortby");

А потом в /templates/products_search_admin.html

[#if "<#SHOPPING#>"=="1"#]
<span id="product[#ID#]_qty">[#LIST_QTY#] [#ED_IZM#]</span>
[#else#]
<span id="product[#ID#]_qty">[#QTY#]</span>
[#endif#]

И вуаля - в список добавляется продукт с количеством и единицей измерения и это же количество и единица измерения видны во вкладке Покупки
За это сообщение автора fandaymon поблагодарил:
lanket (Сб мар 03, 2018 9:54 am)
Рейтинг: 1.16%
Аватара пользователя
lanket
Сообщения: 1168
Зарегистрирован: Вт окт 14, 2014 11:27 pm
Откуда: Санкт-Петербург
Благодарил (а): 260 раз
Поблагодарили: 163 раза

Re: Модуль Продукты

Сообщение lanket » Сб мар 03, 2018 10:01 am

fandaymon писал(а):Очередная версия -...
Хорошая новость, спасибо.
Очень рад что идея прижилась.
Отправлю пуллреквест.

Может, чтобы не было ошибки, будешь сюда архив всех файлов модуля выкладывать.




Отправлено с моего Redmi Note 4 через Tapatalk
Разработка голосового асистента для Мажордомо по любому ключевому слову.
:arrow: Обсужение
:arrow: gitHub 2й версии терминала
:arrow: GitHub модуля для МД
gitHub сырого модуля 2й версии
:arrow: Connect
Rasberry Pi 2, MDM, MySensors. И говорящий апельсин.
Ответить