Перейти к содержимому


Упрощаем работу со спец. предложениями в админке


  • Вы не можете ответить в тему
Сообщений в теме: 7

#1 R.Sergey

    Администратор

  • Администраторы
  • 2810 сообщений
Репутация: 332
Мастер

Отправлено 23 October 2011 - 05:24 PM

Короче в чем суть. Когда в админке добавляешь товар в спец-предложения - кликаешь плюсик, то товар добавляется и тебя перекидывает в Спецпредложения зачем-то..... и чтобы добавить еще один товар приходится снова заходить в каталог и т.д. и так каждый раз.

Решил это исправить:
открываем файл catalog_special.php
находим (примерно 63я строка)

Redirect(ADMIN_FILE."?dpt=catalog&sub=special")

и меняем на

Redirect($_SERVER["HTTP_REFERER"]);

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

Придется немножко повозиться :)
1. Открываем файл catalog_special.php
находим:

if (isset($_GET["delete"])) //delete special offer


и НАД ним вставляем
       
if (isset($_GET["del"])) //delete special offer
{
if (CONF_BACKEND_SAFEMODE) //this action is forbidden when SAFE MODE is ON
{
Redirect(ADMIN_FILE."?dpt=catalog&sub=special&safemode=yes");
}

db_query("delete from ".SPECIAL_OFFERS_TABLE." where productID=".(int)$_GET["del"]);
Redirect($_SERVER["HTTP_REFERER"]);
}


2. Открываем файл catalog_products_categories.php
находим
for( $i=0; $i < count($products); $i++ )

и НАД ним вставляем

$sql_spec = db_query("select offerID, productID from ".SPECIAL_OFFERS_TABLE);
$result_spec = array();
while ($row_spec = db_fetch_row($sql_spec)) {$result_spec[] = $row_spec[1];}
$smarty->assign("spec", $result_spec );


3. открываем файл catalog_products_categories.tpl.html
находим

<a href="{$smarty.const.ADMIN_FILE}?dpt=catalog&amp;sub=special&amp;new_offer={$products[i].productID}" title="{$smarty.const.ADMIN_ADMIN_MENUNEW7}" {if !$products[i].enabled}class="greyy"{/if}>+</a>

и заменяем его на


{if in_array($products[i].productID, $spec)}
<a style="color: #ff0000; font-weight: bold" href="#" onclick="confirmDelete({$products[i].productID},'Удалить из спецпредложений?','{$smarty.const.ADMIN_FILE}?dpt=catalog&amp;sub=special&amp;del=');" title="{$smarty.const.ADMIN_ADMIN_MENUNEW8}">X</a>
{else}
<a href="{$smarty.const.ADMIN_FILE}?dpt=catalog&amp;sub=special&amp;new_offer={$products[i].productID}" title="{$smarty.const.ADMIN_ADMIN_MENUNEW7}" {if !$products[i].enabled}class="greyy"{/if}>+</a>
{/if}


Вроде бы всЬО
Кроме этого теперь Вы не сможете добавить в спецпредложения один и тот же товар дважды. Не представляю даже зачем это было нужно.
  • 0

#2 ruter

    Продвинутый пользователь

  • VIP
  • 334 сообщений
Репутация: 151
Мастер

Отправлено 24 October 2011 - 09:27 PM

Только не могу понять, почему меня кидает после удаления продукта из спецпредложения на главную сайта. Ведь редирект стоит
 Redirect($_SERVER['HTTP_REFERER']); 

По идее должно оставлять на странице, где удаляется продукт из спецпредложения.

Понял:
В общем поскольку обработка идет в файле catalog_special.php, а спецпредложения выводятся на главной вот и кидает на главную страницу.
Для того, чтобы остаться в категори нужно подумать.

---------- Сообщение объединено ----------

Небольшая доработка, чтобы после удаления из спецпредложений оставаться на странице категории в админке:

Берем за основу код, который приведен выше и вносим некоторые изменения:

Берем код в файле catalog_special.php

if (isset($_GET["del"])) //delete special offer
{
if (CONF_BACKEND_SAFEMODE) //this action is forbidden when SAFE MODE is ON
{
Redirect(ADMIN_FILE."?dpt=catalog&sub=special&safemode=yes");
}

db_query("delete from ".SPECIAL_OFFERS_TABLE." where productID=".(int)$_GET["del"]);
Redirect($_SERVER["HTTP_REFERER"]);
}


Меняем на код:

if (isset($_GET["del"]) && isset($_GET["categoryID"])) //delete special offer
{
if (CONF_BACKEND_SAFEMODE) //this action is forbidden when SAFE MODE is ON
{
Redirect(ADMIN_FILE."?dpt=catalog&sub=special&safemode=yes");
}

db_query("delete from ".SPECIAL_OFFERS_TABLE." where productID=".(int)$_GET["del"]);
Redirect(ADMIN_FILE."?dpt=catalog&sub=products_categories&categoryID=".(int)$_GET["categoryID"]);
}


Затем правим файл catalog_products_categories.tpl.html
меняем код:


{if in_array($products[i].productID, $spec)}
<a style="color: #ff0000; font-weight: bold" href="#" onclick="confirmDelete({$products[i].productID},'Удалить из спецпредложений?','{$smarty.const.ADMIN_FILE}?dpt=catalog&amp;sub=special&amp;del=');" title="{$smarty.const.ADMIN_ADMIN_MENUNEW8}">X</a>
{else}
<a href="{$smarty.const.ADMIN_FILE}?dpt=catalog&amp;sub=special&amp;new_offer={$products[i].productID}" title="{$smarty.const.ADMIN_ADMIN_MENUNEW7}" {if !$products[i].enabled}class="greyy"{/if}>+</a>
{/if}


На код:


{if in_array($products[i].productID, $spec)}
<a style="color: #ff0000; font-weight: bold" href="#" onclick="confirmDelete({$products[i].productID},'Удалить из спецпредложений?','{$smarty.const.ADMIN_FILE}?dpt=catalog&amp;sub=special&amp;categoryID={$categoryID}&amp;del=');" title="{$smarty.const.ADMIN_ADMIN_MENUNEW8}">X</a>
{else}
<a href="{$smarty.const.ADMIN_FILE}?dpt=catalog&amp;sub=special&amp;new_offer={$products[i].productID}" title="{$smarty.const.ADMIN_ADMIN_MENUNEW7}" {if !$products[i].enabled}class="greyy"{/if}>+</a>
{/if}



Сохраняем. Обновляем на сервере. Сбрасываем кеш. Теперь после удаления товара из спецпредложений на странице категории, должны оставаться там же.
  • 0

#3 R.Sergey

    Администратор

  • Администраторы
  • 2810 сообщений
Репутация: 332
Мастер

Отправлено 24 October 2011 - 09:52 PM

общем поскольку обработка идет в файле catalog_special.php, а спецпредложения выводятся на главной вот и кидает на главную страницу.


нет все таки не понятно меня то не кидает никуда..... редирект верно стоит и страница сохраняется.

---------- Сообщение объединено ----------

Перепроверил еще раз - не кидает на главную удаляет все как по маслу. Может от браузера зависит - хотя как-то сомнительно.
  • 0

#4 ruter

    Продвинутый пользователь

  • VIP
  • 334 сообщений
Репутация: 151
Мастер

Отправлено 24 October 2011 - 10:16 PM

Я на IE8 проверял, другие браузеры не смотрел, а надо было бы. Выводил массив $_SERVER смотрел, вроде должно было нормально работать. Но не хотел.
Решил так сделать передал ID категории при удалении и редирект на категорию просмотра. Вот надежней будет, независимо от браузера или какой другой ошибки.
  • 0

#5 R.Sergey

    Администратор

  • Администраторы
  • 2810 сообщений
Репутация: 332
Мастер

Отправлено 24 October 2011 - 10:38 PM

Ха...... удивительно, но ИЕ как всегда отличился, действительно перебрасывает на главную страницу, при том при добавлении не перебрасывает, хотя стоит тот же редирект ..... идиотизм какой-то.
ruter, спасибо
  • 0

#6 ruter

    Продвинутый пользователь

  • VIP
  • 334 сообщений
Репутация: 151
Мастер

Отправлено 24 October 2011 - 10:40 PM

Да слышал, чтобы таких казусов не было адреса из $_SERVER для редиректов лучше не использовать, а делать более устойчивые адреса. А так как на грабли наступить:)))

А так вообще R.Sergey тебе тоже благодарность, я хотел это сделать, давно так как достал перекид в спецпредложения, за тем снова в каталог идти, а так теперь, то, что надо:)))
  • 0

#7 stasikons

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 68 сообщений
Репутация: 4
Начинающий

Отправлено 14 August 2014 - 09:44 AM

Подскажите пожалуйста, как сделать что бы спецпредложения отображались не на главной, а на отдельно созданной странице со спецпредложениями?
Не могу найти , где можно убрать вывод спецпредложений именно на главной.
  • 0

#8 idal

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 243 сообщений
Репутация: 7
Начинающий
  • ГородКиев

Отправлено 14 August 2014 - 12:52 PM

Я сделал так. Шаблон home.tpl.html сделал пустым, а код с этого шаблона перенес в новый блок
  • 0