Jump to content

Как сделать рекомендуемые товары 2?


Recommended Posts

Последовательность приблизительно такая:
1. В базе данных в таблице товаров создается поле по аналогии с рекомендуемыми.
2. В шаблоне ПРОДУКТС в админке создается чекбокс с уникальным именем.
3. В файле ПродуктсАдмин.пхп этот чекбокс отслеживается и сохраняется.
4. В файле Продуктс.пхп в папке АПИ в 2х первых функциях это поле выбирается и отправляеться в шаблон.
Дальше - уже смотря на то, что от этой галочки требуеться...

Link to post
Share on other sites

Что именно не работает? И как это вообще должно работать? "и отмеченные товары выводятся на сайте в нужной позиции?" - это что?
Если вывод на Главной отдельным списком, то для этого нужен фильтр (аналогично рекомендуемым) и специальный плагин + шаблон...
Пока мы только выделили товары и передали свойство в шаблон.

Link to post
Share on other sites

{foreach $products as $product}		<div class="{if !$product->visible}invisible{/if} {if $product->featured}featured{/if} row">			<input type="hidden" name="positions[{$product->id}]" value="{$product->position}">			<div class="move cell"><div class="move_zone"></div></div>	 		<div class="checkbox cell">				<input type="checkbox" name="check[]" value="{$product->id}"/>							</div>			<div class="image cell">				{$image = $product->images|@first}				{if $image}				<a href="{url module=ProductAdmin id=$product->id return=$smarty.server.REQUEST_URI}"><img src="{$image->filename|escape|resize:35:35}" /></a>				{/if}			</div>			<div class="name product_name cell">			 				 	<div class="variants">			 	<ul>				{foreach $product->variants as $variant}				<li {if !$variant@first}class="variant" style="display:none;"{/if}>					<i title="{$variant->name|escape}">{$variant->name|escape|truncate:30:'…':true:true}</i>					<input class="price {if $variant->compare_price>0}compare_price{/if}" type="text" name="price[{$variant->id}]" value="{$variant->price}" {if $variant->compare_price>0}title="Старая цена — {$variant->compare_price} {$currency->sign}"{/if} />{$currency->sign}  					<input class="stock" type="text" name="stock[{$variant->id}]" value="{if $variant->infinity}?{else}{$variant->stock}{/if}" />{$settings->units}				</li>				{/foreach}				</ul>					{$variants_num = $product->variants|count}				{if $variants_num>1}				<div class="expand_variant">				<a class="dash_link expand_variant" href="#">{$variants_num} {$variants_num|plural:'вариант':'вариатов':'варианта'} ?</a>				<a class="dash_link roll_up_variant" style="display:none;" href="#">{$variants_num} {$variants_num|plural:'вариант':'вариатов':'варианта'} ?</a>				</div>				{/if}				</div>								<a href="{url module=ProductAdmin id=$product->id return=$smarty.server.REQUEST_URI}">{$product->name|escape}</a>	 						</div>			<div class="icons cell">				<a class="preview"   title="Предосмотр в новом окне" href="../products/{$product->url}" target="_blank"></a>							<a class="enable"    title="Активен"                 href="#"></a>				<a class="featured"  title="Рекомендуемый"           href="#"></a>				<a class="featured"  title="Рекомендуемый2"          href="#"></a>				<a class="duplicate" title="Дублировать"             href="#"></a>				<a class="delete"    title="Удалить"                 href="#"></a>			</div>						<div class="clear"></div>		</div>		{/foreach}
Link to post
Share on other sites

				

Что здесь написано? 2 раза class="featured"... Будет 2 звыездочки... ВОТ ЭТО НИКАК не связано ни с чем, кроме Рекомендованных...
Обратите внимание на строку
div class="{if !$product->visible}invisible{/if} {if $product->featured}featured{/if} row"
Здесь есть ваш класс или проверка на ваше поле?
Link to post
Share on other sites

да, проверил через страницу товара - отмечается корректно по-отдельности, скорее всего проблема именно в стилях. Но при попытке вставить вывод "рекомендуемых2" в main.tpl - выскакиевает ошибка:

Fatal error: Uncaught exception 'SmartyCompilerException' with message 'Syntax Error in template "/var/www/data/www/xxx.com.ua//design/default_2/html/main.tpl" on line 87 "{get_featured2_products var=featured2_products}" unknown tag "get_featured2_products"' in /var/www/data/www/xxx.com.ua/Smarty/libs/sysplugins/smarty_internal_templatecompilerbase.php:431 Stack trace: #0 /var/www/data/www/xxx.com.ua/Smarty/libs/sysplugins/smarty_internal_templatecompilerbase.php(253): Smarty_Internal_TemplateCompilerBase->trigger_template_error('unknown tag "ge...', 87) #1 /var/www/data/www/xxx.com.ua/Smarty/libs/sysplugins/smarty_internal_templateparser.php(2319): Smarty_Internal_TemplateCompilerBase->compileTag('get_featured2_p...', Array) #2 /var/www/data/www/xxx.com.ua/Smarty/libs/sysplugins/smarty_internal_templateparser.php(2812): Smarty_Internal_Templateparser->yy_r35() #3 /var/www/data/www/xxx.com.ua/Smarty/libs/sysplugins/smarty_inte in /var/www/data/www/xxx.com.ua/Smarty/libs/sysplugins/smarty_internal_templatecompilerbase.php on line 431

Link to post
Share on other sites

Вставлял таким кодом в main.tpl:

{* Рекомендуемые товары *}{get_featured2_products var=featured2_products}{if $featured2_products}<!-- Список товаров--><h1>Самое интересное</h1><ul class="tiny_products">	{foreach $featured2_products as $product}	<!-- Товар-->	<li class="product">				<!-- Фото товара -->		{if $product->image}		<div class="image">			<a href="products/{$product->url}"><img src="{$product->image->filename|resize:400:400}" alt="{$product->name|escape}"/></a>		</div>		{/if}		<!-- Фото товара (The End) -->		<!-- Название товара -->		<h3><a data-product="{$product->id}" href="products/{$product->url}">{$product->name|escape}</a></h3>		<!-- Название товара (The End) -->		<!-- Описание товара -->		<div class="annotation">{$product->annotation}</div>		<!-- Описание товара (The End) -->			</li>	<!-- Товар (The End)-->	{/foreach}			</ul>{/if}
Link to post
Share on other sites

Если вывод на Главной отдельным списком, то для этого нужен фильтр (аналогично рекомендуемым) и специальный плагин + шаблон...

Если вы думаете, что програмисты - нахлебники, просто выкачивающие деньги, то вы очень ошибаетесь... Любое изменение в движке, даже таком простом, как Симпла, это много работы...
Если кто-то дает вам что-то бесплатно - говорите спасибо... Лично я обычно решения в 3 строки никогда не продаю, но с другой стороны тратить свое время на обьяснения человеку, который не может или не хочет думать - значит не уважать себя...
Если вы сделали все до этого момента, то НЕМНОГО приложив мозги сделаете и все остальное...
Без обид, но если вы хотите разобраться, то надо думать... А если нужна просто халява...
Link to post
Share on other sites

Вот, я надеюсь, что следующий раз вы сперва подумаете, потом еще раз подумаете, а потом будете задавать будете вопрос, на который будет приятно отвечать...
Я стараюсь всегда отвечать на взрослые, взвешенные и обдуманные вопросы)))

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

Последовательность приблизительно такая:

1. В базе данных в таблице товаров создается поле по аналогии с рекомендуемыми.

2. В шаблоне ПРОДУКТС в админке создается чекбокс с уникальным именем.

3. В файле ПродуктсАдмин.пхп этот чекбокс отслеживается и сохраняется.

4. В файле Продуктс.пхп в папке АПИ в 2х первых функциях это поле выбирается и отправляеться в шаблон.

Дальше - уже смотря на то, что от этой галочки требуеться...

 

Сдедал по аналогии - а галочка в чекбоксе не сохраняется!

Можете помочь?

Link to post
Share on other sites

Надо эту галочку еще выбрать в АПИ/Продуктс.пхп

Сделал по аналогии с featured

 

Здесь - public function get_products($filter = array())

Здесь - public function count_products($filter = array())

Здесь - public function get_product($id)

Edited by Nikolas
Link to post
Share on other sites

Инструкция, которой пользуетесь:

1. очень старая,

2. написана небрежно,

3. содержит очевидные ошибки.

 

Например, в ней вообще не упоминается файл simpla/ProductAdmin.php.  Скорее всего, потому у Вас  и не работает...

Link to post
Share on other sites

Инструкция, которой пользуетесь:

1. очень старая,

2. написана небрежно,

3. содержит очевидные ошибки.

 

Например, в ней вообще не упоминается файл simpla/ProductAdmin.php.  Скорее всего, потому у Вас  и не работает...

 

Да, все ок. Спасибо!

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

Народ, помогите реализовать. Может не в тему..

Требуется создать Рекомендуемые товары2 (featured_new), аналог рекомендуемым товарам, которые также можно отмечать в админке с последующим выводом на сайте вместе с Новинками, акционными и рекомендуемыми.

Что сделал:

1. Создал дополнительное поле featured_new в БД в таблице s_products

2. В файле ProductsAdmin.php добавил аналогично featured

        // Текущий фильтр
        if($f = $this->request->get('filter', 'string')) {
            if($f == 'featured') {
                $filter['featured'] = 1;
            } elseif($f == 'featured_new') {
                $filter['featured_new'] = 1; 

И ниже этого же файла

                    case 'set_featured': {
                        $this->products->update_product($ids, array('featured'=>1));
                        break;
                    }
                    case 'unset_featured': {
                        $this->products->update_product($ids, array('featured'=>0));
                        break;
                    }
                    case 'set_featured_new': {
                        $this->products->update_product($ids, array('featured_new'=>1));
                        break;
                    }
                    case 'unset_featured_new': {
                        $this->products->update_product($ids, array('featured_new'=>0));
                        break;
                    } 

 

3. В шаблоне админки products.tpl добавил иконку и отредактировал стили

<a class="featured_new"  title="Новинки"           href="#"></a>

4. Далее в api/Products.php

Добавил

        $is_featured_filter = '';
		$is_featured_new_filter = '';

добавил еще

        if(isset($filter['featured'])) {
            $is_featured_filter = $this->db->placehold('AND p.featured=?', intval($filter['featured']));
        }

        if(isset($filter['featured_new'])) {
            $is_featured_new_filter = $this->db->placehold('AND p.featured_new=?', intval($filter['featured_new']));
        }

ниже

                p.featured,
				p.featured_new,

5. Делаю вывод на сайте

	{* Рекомендуемые товары *}
{get_featured_new_products var=featured_new_products limit=10}
{if $featured_new_products}
	<div class="border-b-1-info p-y-1">
		<div class="container">
			{* Заголовок блока *}
			<div class="h1 m-b-1">
				<span data-language="{$translate_id['main_recommended_products']}">{$lang->main_recommended_products}</span>
			</div>
			<div class="row">
				{foreach $featured_new_products as $product}
					<div class="col-md-4 col-xl-3">
						{include "tiny_products.tpl"}
					</div>
					{if $product@iteration % 3 == 0}<div class="col-xs-12 hidden-sm-down hidden-md-up"></div>{/if}
				{/foreach}
			</div>
		</div>
	</div>
{/if}
{* @END Рекомендуемые товары *}

6. api/ProductAdmin.php

            $product->featured = $this->request->post('featured');
			$product->featured_new = $this->request->post('featured_new');

 

Но вся конструкция не работает.

Помогите что-то упустил или сделал не так?

Edited by villain1988
Link to post
Share on other sites

{get_featured_new_products var=featured_new_products limit=10}

Вы плагин для Смарти get_featured_new_products реализовали?

В принципе можно сделать так:

{get_new_products var=featured_new_products sort='position' featured_new=1  limit=10}

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