Перейти к содержанию
Официальный форум поддержки Simpla

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


Рекомендуемые сообщения

можно подробнее про эту часть?
Теперь идем в симпла/дизайн/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}

Ссылка на сообщение
Поделиться на другие сайты
  • 1 месяц спустя...

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

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 вставлять эту конструкцию?

Ссылка на сообщение
Поделиться на другие сайты
  • 2 месяца спустя...

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

 

В какое место в файле 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."";

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

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

Ссылка на сообщение
Поделиться на другие сайты
$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:

Ссылка на сообщение
Поделиться на другие сайты
  • 4 месяца спустя...

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

 

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

Ссылка на сообщение
Поделиться на другие сайты
  • 4 недели спустя...

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

Ссылка на сообщение
Поделиться на другие сайты

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

 

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

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

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

Ссылка на сообщение
Поделиться на другие сайты
  • 2 недели спустя...
  • 4 недели спустя...

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

 

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

 

В коде:

 

<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}
 

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

Ссылка на сообщение
Поделиться на другие сайты
  • 2 месяца спустя...

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

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}
 
Ссылка на сообщение
Поделиться на другие сайты
  • 5 месяцев спустя...
  • 1 месяц спустя...

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

Ссылка на сообщение
Поделиться на другие сайты

Сделал так:

 

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;

 

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

Ссылка на сообщение
Поделиться на другие сайты
  • 3 недели спустя...
  • 5 месяцев спустя...

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

pod_zakaz    tinyint(1)            Да    NULL 

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

Ссылка на сообщение
Поделиться на другие сайты
  • 1 месяц спустя...

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

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

pod_zakaz    tinyint(1)            Да    NULL 

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

 

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

Ссылка на сообщение
Поделиться на другие сайты
  • 1 год спустя...

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

Помогла данная тема, поэтому и решил сюда написать, так как многие читающие эту тему ищут способ реализации функции покупки товара которого нет на складе, т.е. количество = 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 вроде

Ссылка на сообщение
Поделиться на другие сайты
  • 2 года спустя...

Добрый день.

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

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

Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
×
×
  • Создать...