Jump to content

Товары под заказ


Recommended Posts

можно подробнее про эту часть?
Теперь идем в симпла/дизайн/product.tpl и после строки:
Кол-во
вставляем
Под заказ?
после строки
{$settings->units}
вставляем строку
pod_zakaz}checked{/if}/>
после строки
{$settings->units}
вставляем

непонятно что за часть pod_zakaz}checked{/if}/> и в конце после строки
{$settings->units}
вставляем
???

А также эта конструкция непонятна:
После этого в своем дизайне вместо кнопки купить в файлах product.tpl и products.tpl вставляете такую конструкцию:
{$productinstock = 0}
{foreach $product->variants as $v}
{if $v->pod_zakaz == 1}{$productinstock = 1}{/if}
{/foreach}
{if $productinstock != 0}{else}{/if}

Link to post
Share on other sites
  • 1 month later...

а также меняете конструкцию на следующую:

foreach($simpla->db->results() as $p)
{
$available = 'true';
if ($p->variant_pod_zakaz == 0) {
$available = 'true';
} else {
$available = 'false';
}
$price = round($simpla->money->convert($p->price, $main_currency->id, false),2);
print
"

".$simpla->config->root_url.'/products/'.$p->url.'?variant='.$p->variant_id."";

После этого все должно заработать.
И проблемы с яндексом хотябы по этому поводу исчезнут.

Подскажите, пожалуйста, вместо какого куска кода в yandex.php вставлять эту конструкцию?

Link to post
Share on other sites
  • 2 months later...

Помогите, пожалуйста!

 

В какое место в файле yandex.php вставлять эту конструкцию:

foreach($simpla->db->results() as $p)

{

$available = 'true';

if ($p->variant_pod_zakaz == 0) {

$available = 'true';

} else {

$available = 'false';

}

$price = round($simpla->money->convert($p->price, $main_currency->id, false),2);

print

"



".$simpla->config->root_url.'/products/'.$p->url.'?variant='.$p->variant_id."";

И какие проблемы с яндексом исчезнут после этого?

Очень жду ответа.

Link to post
Share on other sites
$prev_product_id = null;
while($p = $simpla->db->result())
{
$variant_url = '';
if ($prev_product_id === $p->product_id)
	$variant_url = '?variant='.$p->variant_id;
$prev_product_id = $p->product_id;

if ($p->variant_pod_zakaz == 0) {
$available = 'true';
} else {
$available = 'false';
}

$price = round($simpla->money->convert($p->price, $main_currency->id, false),2);
print
"
<offer id='$p->variant_id' available='$available'>
<url>".$simpla->config->root_url.'/products/'.$p->url.$variant_url."</url>";
print "
<price>$price</price>
<currencyId>".$currency_code."</currencyId>
<categoryId>".$p->category_id."</categoryId>
";

if($p->image)
print "<picture>".$simpla->design->resize_modifier($p->image, 200, 200)."</picture>
";

print "<name>".htmlspecialchars($p->product_name).($p->variant_name?' '.htmlspecialchars($p->variant_name):'')."</name>
<description>".htmlspecialchars(strip_tags($p->annotation))."</description>
";
if ($p->variant_pod_zakaz == 1)
print "<sales_notes>Необходима предоплата</sales_notes>
";
print "</offer>
";
}

Этот кусок по желанию, я добавил так как у меня все что под заказ с предоплатой, это чтобы СКК лишний раз мозг не выносила:

if ($p->variant_pod_zakaz == 1)
print "<sales_notes>Необходима предоплата</sales_notes>
";

И не забыть в запрос добавить: v.pod_zakaz

 

Если бы кто нить помог бы доработать иморт-экспорт и вынос в products admin.... :rolleyes:

Link to post
Share on other sites
  • 4 months later...

Где мной допущена ошибка? 

 

В админке при редактировании товара - ставлю галочку под заказ - сохраняю - и появляются новые пустые варианты товаров, на старых галочка отсутствует. 

Link to post
Share on other sites
  • 4 weeks later...

ВОт почему итоговые готовые решения не выводить в какой-то раздел, где будут именно готовые решения?)

 

Потому что всегда найдутся люди с вопросами "почему у меня не работает, делаю все как описано", а так есть много сайтов где выложены готовые решения, как бесплатные так и платные :-)
Link to post
Share on other sites

Потому что всегда найдутся люди с вопросами "почему у меня не работает, делаю все как описано", а так есть много сайтов где выложены готовые решения, как бесплатные так и платные :-)

Ну я как заказчик. Зашел в раздел, увидел что нужно, заказал установку, оплатил и радуюсь. Это идеальный вариант. 

Link to post
Share on other sites
  • 2 weeks later...
  • 4 weeks later...

Где мной допущена ошибка? 

 

В админке при редактировании товара - ставлю галочку под заказ - сохраняю - и появляются новые пустые варианты товаров, на старых галочка отсутствует. 

 

В коде:

 

<li class="variant_pod_zakaz"> <input name="variants[pod_zakaz][{$variant->id}]" type="checkbox" value="1" {if $variant->pod_zakaz}checked{/if}/></li> 
 

надо удалить параметр 

 

{$variant->id}
 

и все заработает как надо.

Link to post
Share on other sites
  • 2 months later...

Сделал все как написано.
При сохраннии с галкой выдает

Warning: Invalid argument supplied for foreach() in /var/www/user3805/data/www/site/simpla/ProductAdmin.php on line 38

Вот этот кусок кода:

 

if($this->request->post('variants'))
            foreach($this->request->post('variants') as $n=>$va) foreach($va as $i=>$v)
                $variants[$i]->$n = $v; 
 

 

       

 

В файле products.tpl не нашел кнопки купить.

Вот код:

 

<div id="page_title">    <p><a href="./">Главная</a>
    {if $category}
        {foreach from=$category->path item=cat} » <a class='link_2' href="catalog/{$cat->url}">{$cat->name|escape}</a>{/foreach}
        {if $brand}» <a class='link_2' href="catalog/{$cat->url}/{$brand->url}">{$brand->name|escape}</a>{/if}
    {elseif $brand}» <a class='link_2' href="brands/{$brand->url}">{$brand->name|escape}</a>
    {elseif $keyword}» Поиск
    {/if}
    </p>    
    <h1>
    {if $keyword}Поиск {$keyword|escape}
    {elseif $page}{$page->name|escape}
    {else}{$category->name|escape} {$brand->name|escape} {$keyword|escape}
    {/if}
    </h1>    
</div>


{if $current_page_num==1 && $category->description}<div id="category_description">{if $page->body}<p>{$page->body}</p>{/if}{$category->description}</div>{/if}
{if $brand->description && $current_page_num==1}<div id="category_description"><h2>{$brand->name}</h2>{$brand->description}</div>{/if}
{if $features || $category->brands}
    <div id="features">
    <ul>
    {if $category->brands}
        <li>
        <p class="name">Бренды</p>
        <p class="values">
        <a href="catalog/{$category->url}" class='hover_mouse{if !$brand->id} selected{/if}'>Все</a>
        {foreach name=brands item=b from=$category->brands}
        <a href="catalog/{$category->url}/{$b->url}" class='hover_mouse{if $b->id == $brand->id} selected{/if}' data-brand="{$b->id}">{$b->name|escape}</a>
        {/foreach}
        </p>
        </li>
    {/if}


    {if $features}
        {foreach $features as $f}
        <li>
        <p class="name" data-feature="{$f->id}">{$f->name}:</p>
        <p class="values">
        <a href="{url params=[$f->id=>null, page=>null]}" class='hover_mouse{if !$smarty.get.$f@key} selected{/if}'>Все</a>
        {foreach $f->options as $o}<a href="{url params=[$f->id=>$o->value, page=>null]}" class='hover_mouse{if $smarty.get.$f@key == $o->value} selected{/if}'>{$o->value|escape}</a>{/foreach}
        </p>
        </li>
        {/foreach}
    {/if}
    </ul>
    </div>
{/if}


{if $products}
    {include file='pagination.tpl'}
    <ul class="tiny_products">
    {foreach $products as $product}
    <li class="product">{include file='tpl_products_blocks.tpl'}</li>
    {/foreach}    Просмотров: {$product->views}
    </ul>
    {include file='pagination.tpl'}
{else}<h4 style='padding:50px 0;'>Сейчас здесь нет предложений<br />Попробуйте зайти позже</h4>{/if}


{literal}
<script>
$(function() {
    // Раскраска строк характеристик
    $("#features li:even").addClass('even');
    // Выбор вариантов
    $('select[name=variant]').change(function() {
        price = $(this).find('option:selected').attr('price');
        compare_price = '';
        if(typeof $(this).find('option:selected').attr('compare_price') == 'string')
            compare_price = $(this).find('option:selected').attr('compare_price');
        $(this).find('option:selected').attr('compare_price');
        $(this).closest('form').find('span').html(price);
        $(this).closest('form').find('strike').html(compare_price);
        return false;
    });
});
</script>
{/literal}
 
Link to post
Share on other sites
  • 5 months later...
  • 1 month later...

Сделал так:

 

case 'stock':
$order = '(SELECT pv.pod_zakaz FROM __variants pv WHERE (pv.pod_zakaz IS NULL OR pv.pod_zakaz>0) AND p.id = pv.product_id AND pv.position=(SELECT MIN(position) FROM __variants WHERE (pod_zakaz>0 OR pod_zakaz IS NULL) AND product_id=p.id LIMIT 1) LIMIT 1)';
break;

 

сортирует, все что "не под заказ" вверху списка, но в перемешку, а хотелось бы по дате добавления, не подскажете как?

Link to post
Share on other sites
  • 3 weeks later...
  • 5 months later...

а кто подскажет, с какого то времени, начался минус переделки, при добавлении нового товара, либо редактировании старого, автоматом ставится галочка "Под заказ", приходится через редактирование БД ставить параметр "pod_zakaz" с 1 на 0.
В БД вот такие параметры:

pod_zakaz    tinyint(1)            Да    NULL 

Как переделать возможность на ручную установку параметра.

Link to post
Share on other sites
  • 1 month later...

а кто подскажет, с какого то времени, начался минус переделки, при добавлении нового товара, либо редактировании старого, автоматом ставится галочка "Под заказ", приходится через редактирование БД ставить параметр "pod_zakaz" с 1 на 0.

В БД вот такие параметры:

pod_zakaz    tinyint(1)            Да    NULL 

Как переделать возможность на ручную установку параметра.

 

Установить в строке "pod_zakaz" параметр "По умолчанию: Нет"

Link to post
Share on other sites
  • 1 year later...

Хочу поделиться как я реализовал под заказ на своем сайте, чтобы те кто ищут смогли найти мой вариант реализации и попробовать у себя.

Помогла данная тема, поэтому и решил сюда написать, так как многие читающие эту тему ищут способ реализации функции покупки товара которого нет на складе, т.е. количество = 0.

 

первое нужно удалить проверку на наличие на складе ('in_stock'=>true), чтобы мы могли видеть стоимость при нулевом количестве

 

 

меняем в файле   ~/view/ProductView.php (у меня строка 25)

//меняем
   foreach($this->variants->get_variants(array('product_id'=>$product->id, 'in_stock'=>true)) as $v)

//на
    foreach($this->variants->get_variants(array('product_id'=>$product->id)) as $v)

 

далее по аналогии меняем в файле   ~/view/ProductsView.php  (у меня строка 150)

 

// меняем
$variants = $this->variants->get_variants(array('product_id'=>$products_ids,   'in_stock'=>true));

//на
$variants = $this->variants->get_variants(array('product_id'=>$products_ids));

 

 файл view/View.php

 

в трех местах строки у меня : 188, 234, 279

// Выбираем варианты товаров
$variants = $this->variants->get_variants(array('product_id'=>$products_ids, 'in_stock'=>true));

//на 
$variants = $this->variants->get_variants(array('product_id'=>$products_ids));

 

Далее нам нужно подредактировать взаимодействие с корзиной ~/api/Cart.php

 

функция add_item  у меня срока 110

функция update_item у меня строка 135

 

в обоих случаем меняем условие

if(!empty($variant && ($variant->stock>0) )
{
	$amount = min($amount, $variant->stock);	     
	$_SESSION['shopping_cart'][$variant_id] = intval($amount); 
}

на

if(!empty($variant))
{
	$_SESSION['shopping_cart'][$variant_id] = intval($amount); 
}

 

Далее необходимо подредактировать ваши файлы шаблонов  product.tpl, products.tpl,  cart.tpl и при необходимости главную страницу main.tpl. далее покажу как это реализовал я.

 

product.tpl, products.tpl

 

было:

 <!-- Выбор варианта товара -->
{if $product->variants|count > 0}
    
  {foreach $product->variants as $v}
    <form class="variants" action="/cart">        
   
    {if $v->name}<label class="variant_name">{$v->name}</label>{/if}
    <
    <input type="submit" class="button" value="ЗАКАЗАТЬ" data-result-text="В КОРЗИНЕ"/>  
    </form>
 
{else}
        нет в наличии     
   {/foreach}
{/if}
<!-- Выбор варианта товара (The End) -->

 

стало:

 <!-- Выбор варианта товара -->
{if $product->variants|count > 0}
	
        {foreach $product->variants as $v}
	<form class="variants" action="/cart">
		
		
	{if $v->name}<label class="variant_name">{$v->name}</label>{/if}
	
        {if $v->stock == 0}
	<input type="submit" class="button" value="ЗАКАЗАТЬ" data-result-text="В КОРЗИНЕ"/>
	{else}
	<input type="submit" class="button" value="КУПИТЬ" data-result-text="В КОРЗИНЕ"/>
	{/if}	
	</form>
	
        
	{if $v->stock < 4 && $v->stock > 0}
	Осталость  {$v->stock} шт.
        {else if $v->stock > 3}
        В наличии
        {else}
        под заказ
 	{/if}
	{/foreach}
{/if}
<!-- Выбор варианта товара (The End) -->

 

 

Теперь файл Cart.tpl

 

вывод количества

было:


{* Количество *}

	<table class="pokupka">
	<tr>
		<td>
		<select name="amounts[{$purchase->variant->id}]" onchange="document.cart.submit();">
			{section name=amounts start=1 loop=$purchase->variant->stock+1 step=1}
<option value="{$smarty.section.amounts.index}" {if $purchase->amount==$smarty.section.amounts.index}selected{/if}>{$smarty.section.amounts.index} {$settings->units}</option>
			{/section}
		</select>
		</td>
	</tr>
	</table>        

стало:


{* Количество *}
{if $purchase->variant->stock != 0}
	<table class="pokupka">
	<tr>
		<td>
		<select name="amounts[{$purchase->variant->id}]" onchange="document.cart.submit();">
			{section name=amounts start=1 loop=$purchase->variant->stock+1 step=1}
<option value="{$smarty.section.amounts.index}" {if $purchase->amount==$smarty.section.amounts.index}selected{/if}>{$smarty.section.amounts.index} {$settings->units}</option>
			{/section}
		</select>
		</td>
	</tr>
	</table> 
       
{else}
<table class="pokupka">
	<tr>

<td>  
<input placeholder='{$purchase->amount}' type="text" name="amounts[{$purchase->variant->id}]" 
value="{$purchase->amount}" class="input_name" onchange="document.cart.submit();">
       
 </td>
</tr>
</table> 

{/if} 

 

и еще поменял отображение название продукта

 

было:


<a href="products/{$purchase->product->url}">{$purchase->product->name|escape}</a> 

стало:

{if $purchase->variant->stock != 0}
    <a href="products/{$purchase->product->url}">  {$purchase->product->name|escape}</a> 
{else}
    <a href="products/{$purchase->product->url}">{$purchase->product->name|escape}</a> <font color="#dd3f20">[ ПОД ЗАКАЗ ]</font>
{/if}

ВОТ НАВЕРНОЕ ПОЖАЛУЙ И ВСЕ

если есть вопросы пишите

http://viaeco.ru/

вот мой сайт где эта функция реализована.

при заказа товара которого нет на складе, в админке стоит уведомление, что товара нет на складе.

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

версия симплы 2.1.4 вроде

Link to post
Share on other sites
  • 2 years later...

Добрый день.

Помогите опустить все товары под заказ вниз списка в каталоге.

Разница лишь в том, что я использую привязку не к варианту, а к продукту, т.е. product->pod_zakaz

Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...