Новости Joomla

0 Пользователей и 1 Гость просматривают эту тему.
  • 8 Ответов
  • 1486 Просмотров
*

devirus

  • Захожу иногда
  • 140
  • 6 / 0
Допустим, есть класс, там метод.
Там определяется переменная $orderbyq.
Затем вызывается плагин, но нужная переменная туда не передается. Возможно ли ее переопределить в плагине, чтобы она переопределилась и в родителе?

Проще будет в коде понять :)

controllers/category.php
Код
class JshoppingControllerCategory extends JControllerLegacy{
  function view(){
    $orderbyq = getQuerySortDirection($order, $orderby);
    $dispatcher->trigger( 'onBeforeDisplayCategory', array(&$category, &$sub_categories) );
    ...
  }
}

плагин
Код
function onBeforeDisplayCategory(&$category, &$sub_categories){
    $orderbyq = "DESC";
}

такой смысл в общем... и контроллер дальше работает с переопределенной переменной.

Так возможно или если в плагин не передается нужных переменных - придется вызывать его позже и дублировать там код контроллера с новой переменной?
« Последнее редактирование: 21.06.2014, 17:34:21 от devirus »
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
Re: Сменить значение переменной
« Ответ #1 : 20.06.2014, 23:13:00 »
к сожалению (или к счастью, смотря с какой стороны смотреть), переопределить в плагине можно только то, что ему дают переопределить
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

passer

  • Завсегдатай
  • 1013
  • 75 / 3
Re: Сменить значение переменной
« Ответ #2 : 20.06.2014, 23:44:31 »
Прикольно. Ну попробуйте
Код: php
$orderbyq = $dispatcher->trigger( 'onBeforeDisplayCategory', array(&$category, &$sub_categories) );
var_dump($orderbyq);
Код: php
function onBeforeDisplayCategory(&$category, &$sub_categories){
   return "DESC";
}
Может и сработает.
Только чем это будет отличаться от прямого присвоения?
Код: php
$orderbyq = "DESC";
Только тем, что сгоняли в соседний город, чтобы переобуться?
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
Re: Сменить значение переменной
« Ответ #3 : 21.06.2014, 00:50:29 »
так суть же в том, что менять контроллер нельзя
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

devirus

  • Захожу иногда
  • 140
  • 6 / 0
Re: Сменить значение переменной
« Ответ #4 : 21.06.2014, 12:00:20 »
Да, верно, суть в том чтоб не менять исходный код, а то в прошлый раз кучу всего переправил, теперь обновляться боюсь.

Проблему решил без плагина, в шаблоне, не знаю насколько рационально, но работает :)
Нужна была сортировка "по убыванию цены", "по возрастанию цены", "по новинкам" и "по популярности" в выпадающем селекте.

Код
$mainframe = JFactory::getApplication();
$order = $mainframe->getUserStateFromRequest('order', 'order', $this->config->product_sorting, 'int');
$orderby = $mainframe->getUserStateFromRequest( $context.'orderby', 'orderby', $jshopConfig->product_sorting_direction, 'int');
if ( $order==2 && $orderby==0 ){
    $order = "2_up";
} elseif ( $order==2 && $orderby==1 ){
    $order = "2_down";
};

$selected = "selected=\"selected\"";

Код
<?php if ($this->config->show_sort_product){ ?>
        <select id="order" class="" onchange="if(this.value!='<?php print $order; ?>'){ $_('orderby').value = 0; if(this.value=='2_up'){this.value = 2;$_('orderby').value = 0;}; if(this.value=='2_down'){this.value = 2;$_('orderby').value = 1;}; if(this.value=='3'){$_('orderby').value = 1;}; submitListProductFilters(); }" size="1" name="order">
            <option <?php if($order==6){echo $selected;} ?>value="6">популярности</option>
            <option <?php if($order=="2_up"){echo $selected;} ?>value="2_up">возрастанию цены</option>
            <option <?php if($order=="2_down"){echo $selected;} ?>value="2_down">убыванию цены</option>
            <option <?php if($order==3){echo $selected;} ?>value="3">новинкам</option>
        </select>
<?php } ?>

p.s. еще предстоит переделать подсчет "популярности" исходя не из "хитов", а из реальных продаж за последние X дней.
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
Re: Сменить значение переменной
« Ответ #5 : 21.06.2014, 15:27:13 »
Цитировать
не знаю насколько рационально
делал точно также, в шаблоне. конечно, немного не рационально, но к сожалению, если без хака ядра, то я вижу только такой путь.

Цитировать
еще предстоит...
а оно надо? :) откуда юзеру знать реальные данные? а запросы будут лишние.
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

devirus

  • Захожу иногда
  • 140
  • 6 / 0
Re: Сменить значение переменной
« Ответ #6 : 21.06.2014, 17:03:50 »
Цитировать
откуда юзеру знать реальные данные?

оно не ради юзеров :) а ради повышения продаж (реально популярный товар ведь с большей вероятностью купят)...
уже другую логику придумал — по реальным продажам отдельный блок "Хиты продаж", а в популярности надо ограничить хиты за последние X дней (иначе я сам уже несколько сотен хитов накрутил у одного товара пока тестил и его никто не обгонит).
Плюс в идеале хиты считать уникальные, но это уже придирки.
*

Fedor Vlasenko

  • Живу я здесь
  • 3845
  • 733 / 7
  • https://fedor-vlasenko.web.app
Re: Сменить значение переменной
« Ответ #7 : 21.06.2014, 17:09:37 »
Цитировать
пока тестил и его никто не обгонит
ручками в базе обнови
каждая такая хотелка лишние запросы в базу
потому должен выбирать, а стоит ли?
*

devirus

  • Захожу иногда
  • 140
  • 6 / 0
Re: Сменить значение переменной
« Ответ #8 : 21.06.2014, 17:28:58 »
Цитировать
ручками в базе обнови

Даже если свои хиты почищу. Они не должны накапливаться за всё время существования магазина. Сезонность убивается.
Начали летом, у холодного лимонада хиты идут - все логично, но пришел новый год и у шоколадного деда мороза хиты зашкалили, а летом он так и остался "самым популярным", потому что лимонад уже не может перебить его. Отсюда снижение продаж и лояльности.
Утрировано конечно, но суть такая :)

А если брать хиты за неделю-месяц, то всё супер. Придется жертвовать запросом(
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Плагин - Скрывать цены, если товара нет в наличии [Скачать]

Автор kit2m2

Ответов: 8
Просмотров: 2562
Последний ответ 24.01.2020, 11:01:34
от kit2m2
Назначение цены в карточке товара в зависимости от группы пользователей

Автор san_san_ku

Ответов: 16
Просмотров: 893
Последний ответ 03.10.2019, 19:11:45
от san_san_ku
Вывод цены

Автор mario052

Ответов: 2
Просмотров: 721
Последний ответ 22.03.2018, 17:54:33
от mario052
Рандомная сортировка товаров одного производителя

Автор dvcool

Ответов: 2
Просмотров: 1441
Последний ответ 01.02.2018, 21:30:40
от dvcool
Сортировка товаров по артикулу

Автор lammmer

Ответов: 0
Просмотров: 865
Последний ответ 13.02.2017, 17:54:46
от lammmer