Очень надо изменить одно свойство

Тема в разделе "Shop-script", создана пользователем Pickles, 8 июл 2008.

Статус темы:
Закрыта.
  1. Pickles

    Pickles Постоялец

    Регистр.:
    18 июн 2008
    Сообщения:
    56
    Симпатии:
    8
    Здравствуйте всем!

    История. У меня в csv файле в колонке "На складе" формируется не числа, а слова типа
    "нет", "заканчивается", "много", и "очень много", в зависимости от количества. в 1С это делалось для того, чтоб для разных групп товара формировалось свое значение. Например: 1 товар очень дорогой и много его никогда не бывает и люди больше 1-2 не берут, поэтому для него условие "если < 5, то заканчивается".
    В тоже время для другого, дешевого, товара, где кол-во в наличии может быть и 10000 и его берут минимум 30, то условие для него "если < 100, то заканчивается".
    Ну в общем условия везде разные.

    В общем подскажите как сделать так, чтоб шоп напрямую отображал содержимое поля "На складе" на сайте в том же самом месте, без всяких своих обработок шопа.

    *обычно сам разбираюсь, но тут не получилось, потому что мало времени.. :(
     
  2. Caurus

    Caurus

    Регистр.:
    21 фев 2008
    Сообщения:
    348
    Симпатии:
    285
    а какие у него "свои обработки"?
     
  3. Pickles

    Pickles Постоялец

    Регистр.:
    18 июн 2008
    Сообщения:
    56
    Симпатии:
    8
    Ну например если в csv файле в поле "На складе" написано 0, то на сайте выводит что
    "Наличие на складе: нет", если 5, то "Наличие на складе: 5", а если в поле "На складе" написано любое слово (а мне как раз надо слово), то все= написано "нет".

    Мне надо на прямую выводить содержимое ячейки поля "На складе".
     
  4. Caurus

    Caurus

    Регистр.:
    21 фев 2008
    Сообщения:
    348
    Симпатии:
    285
    вот решение:

    найди в базе SQL SS_products поле in_stock зайди в режим редактирования и измени на Тип - TEXT и сохрани.

    Дале в админке в Настройка-Каталог поставь галку Показывать пользователям точный остаток товаров на складе
    и в Корзина и оформление заказов галку убери на Вести учет товаров на складе

    Далее найди в product_detailed.tpl.html

    PHP:
    {* in stock info *}
                            {if 
    $smarty.const.CONF_CHECKSTOCK == '1'}
                                {
    $smarty.const.IN_STOCK}: 
                                <
    b>
                                {if 
    $product_info.in_stock 0}
                                    {if 
    $smarty.const.CONF_EXACT_PRODUCT_BALANCE}
                                        {
    $product_info.in_stock}
                                    {else}
                                        {
    $smarty.const.ANSWER_YES}
                                    {/if}
                                {else}
    вместо 1 поставь 0 и и далее в этом же участке кода

    PHP:
    {if $product_info.in_stock 0}
                                    {if 
    $smarty.const.CONF_EXACT_PRODUCT_BALANCE}
                                        {
    $product_info.in_stock}
                                    {else}
                                        {
    $smarty.const.ANSWER_YES}
                                    {/if}
    убери
    PHP:
     0
    сохрани. Вроде все. Только сделай бэкап всех файлов.. и проверь заказы несколько раз, что б все приходило. Если надо еще, где вывести количество товаров то напиши... переделаем.. ОБЕЗАТЕЛЬНО СДЕЛАЙ БЭКАП ВСЕГО!!!!!!
     
    Pickles и Phoenix_666 нравится это.
  5. Phoenix_666

    Phoenix_666

    Регистр.:
    27 дек 2007
    Сообщения:
    162
    Симпатии:
    31
    Caurus как всегда порвал шоп на немецкий флаг :)
    маладца!
     
  6. Caurus

    Caurus

    Регистр.:
    21 фев 2008
    Сообщения:
    348
    Симпатии:
    285
    немецкий флаг это хорошо... только проверьте, пожалуйста, что б все работало...и заказы и т.д. В основном заказы. Просто я не проверял до конечного пункта...и вдруг где косяки вылезут из за этого... Хотя если выключена Вести учет товаров на складе то SS вообще не волнует данные о том, сколько и чего осталось!!!!!
     
  7. garo

    garo

    Регистр.:
    28 авг 2007
    Сообщения:
    174
    Симпатии:
    113
    Так можно же легче сделать(если я правильно понял вопрос) из админ.части
     
  8. Caurus

    Caurus

    Регистр.:
    21 фев 2008
    Сообщения:
    348
    Симпатии:
    285
    дело в том, что ему надо, что б было написано "нет", "заканчивается", "много", и "очень много" а так этого не сделать...но это если я правильно понял... Я сделал, а там дело его надо ему или нет! Все бесплатно, так что, какая разница! Может, кому потом понадобиться! ;)
     
  9. Pickles

    Pickles Постоялец

    Регистр.:
    18 июн 2008
    Сообщения:
    56
    Симпатии:
    8
    Все очень надо! Спасибо что помогаете!
    Все сделал, но пока ничего не выходит. При импортировании csv файла в базе SQL SS_products в поле in_stock все значения 0. Там видно еще какие - то проверки идут при импортировании файла.
    А в детальной информации все= высвечивается нет.

    Но если в таблицу вручную вбить например " Заканчивается", то все отображается. Значит действительно где-то в импорте проверка стоит.

    Все галочки поснимал, product_detailed.tpl.html изменил.
     
  10. Caurus

    Caurus

    Регистр.:
    21 фев 2008
    Сообщения:
    348
    Симпатии:
    285
    Я не делал проверку на это... сейчас займусь!!!!

    Уфффф… ну еле получилось…хвостов куча….

    Значит так!!!! САМОЕ ГЛАВНОЕ СДЕЛАТЬ БЭКАП ФАЙЛОВ, КОТОРЫЕ РЕДАКТИРУЕМ И БАЗЫ ТОВАРОВ В НЕСКОЛЬКИХ ВАРИАНТАХ (SQL, CSV) ЧТО Б МОЖНО БЫЛО ВОСТАНОВИТЬ ЕСЛИ ЧТО.

    ДАЛЕЕ НАМ НЕОБХОДИМО ОЧИСТИТЬ ВСЮ БАЗУ ОТ ТОВАРОВ ИНАЧЕ РАБОТАТЬ НЕ БУДЕТ. ДЕЛАЕМ ЭТО СЛЕДУЮЩИМ ОБРАЗОМ ЗАХОДИ В Каталог-Импорт товаров из CSV (Excel / 1С) СТАВИМ ТОЧКУ НА Очистить базу, И ТЫКАЕМ ОК!!!!

    ДАЛЕЕ ПО ПОРЯДКУ!!!!

    1) Находим core_functions\catalog_import_functions.php в нем ищем в самом низу

    PHP:
    else // add new product
        
    {
            
    $Price                        0.0;
            
    $list_price                 0.0;
            
    $sort_order                 0;
            
    $in_stock                    0;
            
    $eproduct_filename            "";
            
    $eproduct_available_days    0;
            
    $eproduct_download_times    0;
            
    $weight                        0.0;
            
    $free_shipping                0;
            
    $min_order_amount            1;
            
    $shipping_freight            0.0;
            
    $tax                        CONF_DEFAULT_TAX_CLASS;

    Заменяем в $in_stock 0 на ""

    2) Ниже находим

    PHP:
    $ProductIsProgram   trim($row[$dbc["eproduct_filename"]]) != "";
            
    $productID AddProduct(
                    
    $currentCategoryID$row$dbc["name"] ], $Price$row$dbc["description"] ], 
                    
    $in_stock
                    
    $row$dbc["brief_description"] ], $list_price,
                    
    $row$dbc["product_code"] ], $sort_order,
                    
    $ProductIsProgram"",
                    
    $eproduct_available_days$eproduct_download_times
                    
    $weight$row[$dbc["meta_description"]], $row[$dbc["meta_keywords"]], 
                    
    $free_shipping$min_order_amount$shipping_freight
                    
    $tax);
    Заменяем $in_stock на $row[ $dbc["in_stock"] ]

    СОХРАНИЕМ!!!

    3) Находим products.php в корне там участок

    PHP:
    <?php
        
    if ($product["in_stock"]<0$is 0;
        else 
    $is $product["in_stock"];
        if (
    CONF_CHECKSTOCK == 1) {
    ?>
        <tr>
        <td align=right><?php echo ADMIN_PRODUCT_INSTOCK;?>:</td>
        <td><input type="text" name="in_stock" value="<?php echo $is;?>"></td>
        </tr>
    <?php } else { ?>
        <input type=hidden name="in_stock" value="<?php echo $is;?>">
    <?php ?>
    В нем меняем if (CONF_CHECKSTOCK == 0) с 0 на 1

    4) Находим в templates\backend\catalog_products_categories.tpl.html

    PHP:
    {if $smarty.const.CONF_CHECKSTOCK eq 1}
                    <
    td align=right>
                        <
    input type=text name=left_{$products[i].productID
                            
    size=
                            value
    ="{$products[i].in_stock}">
                        {if 
    $products[i].in_stock 0}
                            <
    font color=red>
                                ({
    $smarty.const.ADMIN_INSUFFICIENT_IN_STOCK})                        </font>
                        {/if}                </
    td>
                    {/if}
    Меняем в {if $smarty.const.CONF_CHECKSTOCK eq 1} с 1 на 0


    ГОТОВО!!!!! ВСЕМ УРА, СПАСИБО ЗА ВНИМАНИЕ!!!!!
     
    mbumba, VenomHOLD и Pickles нравится это.
Статус темы:
Закрыта.