COBALT
Total posts: 408
09 Июнь 2016 15:13

Из инструкции Создание пре-фильтровых ссылок понятно как формировать ссылки.

Можно сформировать следующие ссылки фильтров?:

Новые - статьи сортируются по дате создания

Обновления - статьи сортируются по дате редактирования

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

Рейтинг - статьи сортируются по результатам голосования, с начало самые популярные

Закладки - статьи сортируются по количеству добавивших в закладки, от большего к меньшиму

Это всё относится к сортировке, возможно это сделать как ссылку фильтра?

Последние изменения: 09 Сен 2016


Sergey
Total posts: 13,748
12 Июнь 2016 10:08

Нужно добавить к урл 2 параметрк filter_order и filter_order_Dir. А что туда поставить смотри в исходниках меню сортировки.

2016-06-12_16-11-33


COBALT
Total posts: 408
12 Июнь 2016 14:35

Можно пример как должна выглядеть ссылка на сортировку статей по дате добавления?

Вот например ссылка на очистку всех фильтров раздела "Android", у меня выглядит так: index.php?option=com_cobalt&task=records.cleanall&section_id=5&Itemid=111

Мне бы пример, как применяются параметры filter_order и filter_order_Dir в ссылке.


Sergey
Total posts: 13,748
17 Июнь 2016 15:31

К сожалению на урл для выполниния задач это не сработает. Если в урл есть task=controller.method то это не стработает. Это только для урл самого списка.


COBALT
Total posts: 408
19 Июнь 2016 07:40

Тогда я думаю можно сделать так:

<a onclick="Joomla.tableOrdering('r.mtime','desc','');" href="javascript:void(0);">Новые</a>


Sergey
Total posts: 13,748
21 Июнь 2016 05:27

Да можно.


COBALT
Total posts: 408
21 Июнь 2016 09:46

Подскажите пожалуйста как сделать чтобы при срабатывании ссылки:

<a onclick="Joomla.tableOrdering('r.mtime','desc','');" href="javascript:void(0);">Новые</a>

Рядом с ней появлялась иконка как в меню сортировки:

Или применялся класс CSS


Sergey
Total posts: 13,748
23 Июнь 2016 04:29

Создайте эту ссылку так же как она создается в шаблоне маркап

<?php echo JHtml::_('mrelements.sort', "Текст ссылки", 'r.ctime', 'asc', 0, NULL, 'asc'); ?>

Это будет работать в маркапе и списке статей.

Саму функци вы найдете в components/com_cobalt/library/php/html/mrelements.php в методе sort если нужно будет понять что есть что.


COBALT
Total posts: 408
24 Июнь 2016 07:17

Спасибо, работает, но иконка рядом с ссылкой выводится постоянно, не зависимо какая сортировка применена:

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


Sergey
Total posts: 13,748
29 Июнь 2016 04:38

Если параметре 5 будет равен параметру 3 ('r.ctime' например) то бдует иконка.


COBALT
Total posts: 408
29 Июнь 2016 08:26

Добавляю например в шаблон списка статей markup:

<?php echo JHtml::_('mrelements.sort', "Новые", 'r.ctime', 'asc', 0, NULL, 'asc'); ?></br> <?php echo JHtml::_('mrelements.sort', "Старые", 'r.ctime', 'desc', 0, NULL, 'asc'); ?>

В результате иконка у двух ссылок сортировки, независимо какая сортировка применена:

Что то ещё нужно сделать\добавить в шаблон?


Sergey
Total posts: 13,748
05 Июль 2016 06:48

Поменяй 0 на ''


COBALT
Total posts: 408
05 Июль 2016 09:20

Поменял 0 на '', получилось следующие:

<?php echo JHtml::_('mrelements.sort', "Новые", 'r.ctime', 'asc', '', NULL, 'asc'); ?></br> <?php echo JHtml::_('mrelements.sort', "Старые", 'r.ctime', 'desc', '', NULL, 'asc'); ?>

Иконки не отображаются вообще, независимо от применённой сортировки:

И ещё такая ситуация, после замены 0 на '', срабатывает только сортировка по Старые, ссылка на Новые стала работать так же как при переходе по ссылке Старые.


Sergey
Total posts: 13,748
12 Июль 2016 05:14

Да там нужна логика.

$listDirn    = @$this->ordering_dir;
$listOrder    = @$this->ordering;

You can see that on top of markup template. This you need to get also.

<?php echo JHtml::_('mrelements.sort',  'Измененые', 'r.mtime', $listDirn, $listOrder); ?>

COBALT
Total posts: 408
12 Июль 2016 10:02

Спасибо, работает!

Но есть один нюанс, ссылка работает в двух направлениях как обычная сортировка (уже предусмотрено в Cobalt в шаблоне по умолчанию):

1 клик - сортировка от меньшего значения к большему

2 клик - сортировка от большего к меньшему

Можно сделать так, чтобы ссылка имела одно назначение, как например ссылка:

<?php echo JHtml::_('mrelements.sort', "Новые", 'r.ctime', 'asc', 0, NULL, 'asc'); ?>

PS. Очень нужно для удобства сортировки на сайте, так как пользователи используют сортировку только в одном направлении.


Sergey
Total posts: 13,748
12 Июль 2016 13:47

Замени $listDirn на нужную сортировку или обратную я не помню какая там логика. Но короче руками пропиши или asc или desc.


COBALT
Total posts: 408
13 Июль 2016 09:53

Сортировка работает, но иконки отображаются постоянно, независимо от применённой сортировки, то есть если применена сортировка r.ctime, то иконка отображается у обоих ссылок со значением r.mtime:

<?php echo JHtml::_('mrelements.sort',  'Новые', 'r.mtime', asc, $listOrder); ?></br>
<?php echo JHtml::_('mrelements.sort',  'Старые', 'r.mtime', desc, $listOrder); ?></br>
<?php echo JHtml::_('mrelements.sort',  'Самые просматриваемые', 'r.hits', asc, $listOrder); ?>

И ещё такая ситуация, сортировка срабатывает правильно только после второго клика\перехода по ссылки.

Например перехожу по ссылке Самые просматриваемые:

<?php echo JHtml::_('mrelements.sort',  'Самые просматриваемые', 'r.hits', asc, $listOrder); ?>

Получаю результат сортировки от меньшего значения к большему, кликаю по ссылке ещё раз и получаю нужный\правильный результат - значения от большего к меньшему.


Sergey
Total posts: 13,748
24 Июль 2016 05:32

Попробуйте поменять asc на desc. Или другие параметры.


COBALT
Total posts: 408
27 Июль 2016 08:58

Sergey Попробуйте поменять asc на desc. Или другие параметры.

Если я меняю asc на desc, то получаю обратный результат, от меньшего значения к большему, а мне нужно наоборот, если ставлю asc, то нужный мне результат получаю только после второго клика по ссылке (не понятно почему так происходит).

Подскажите какие параметры можно использовать вместо asc и desc, чтобы получить нужный результат сортировки?


Sergey
Total posts: 13,748
28 Июль 2016 05:22

Смотрите сообщением выше где есть JHtml::_('mrelements.sort', "Новые", 'r.ctime', 'asc', 0, NULL, 'asc'). Есть еще один параметр где это передается. Поробуйте поиграться с ним.

Или выставте нужную вам позицию и просто скопируйте HTML и вставте его.


COBALT
Total posts: 408
28 Июль 2016 15:31

Sergey Или выставте нужную вам позицию и просто скопируйте HTML и вставте его.

Вы имеете ввиду такой вариант?:

<a onclick="Joomla.tableOrdering('r.mtime','desc','');" href="javascript:void(0);">Новые</a>

Дело в том что мне нужно чтобы применённая сортировка как то была обозначена, иконкой рядом с ссылкой или классом css.

Например если пользователь применил сортировку Новые, то рядом с ссылкой появлялась иконка (например галочка: ), или к ней применялся определённый класс css.

Работает на Cobalt