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

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


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

Как сделать еще одну галочку по типу рекомендуемых товаров? То есть отмечаем как в рекомендуемых и отмеченные товары выводятся на сайте в нужной позиции?

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

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

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

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

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

чекбокс сделать удалось, но при его нажатии отмечается сразу 2 звездочки (картинку взял как у рекомендуемых)

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

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

				

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

да, проверил через страницу товара - отмечается корректно по-отдельности, скорее всего проблема именно в стилях. Но при попытке вставить вывод "рекомендуемых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

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

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

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

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

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

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

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

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

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

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

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

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

 

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

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

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

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

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

 

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

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

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

Изменено пользователем Nikolas
Ссылка на сообщение
Поделиться на другие сайты

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

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

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

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

 

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

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

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

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

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

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

 

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

 

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

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

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

Требуется создать Рекомендуемые товары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');

 

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

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

Изменено пользователем villain1988
Ссылка на сообщение
Поделиться на другие сайты

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

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

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

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

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

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

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

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

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

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

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