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

shurakana

  • Давно я тут
  • 792
  • 50 / 6
Всем привет! Как вы знаете стандартная сортировка в JoomShopping сделана select'ом, что не совсем удобно, как мне кажется. Есть конечно варианты сделать на js с дополнительными div'ами и span'ами и еще кучей всего.

Так вот, предлагаю аналогичное решение, но, стандартными средствами Joomla. При этом можно будет отметить активный пункт и пр.

Первым делом надо создать наши radio кнопки с label'ами.
идем в сайт\libraries\cms\html\select.php и находим функцию public static function radiolist 700 строка примерно
и после нее вставляем практически такую же функцию, но, уже сдругим названием, radio кнопками и нужными нам классами (кто не понял вставлять перед самым самым последним знаком "}" ):
Спойлер
[свернуть]
Если хотите свою картинку для каждого пункта то можно сделать так: вместо class="sorting_order_name" напишите class="sorting_order_name image_for_btn_'.$id.'"
В принципе можно было бы использовать стандартную функцию, и изменить ее, но, мало-ли где нам еще пригодятся стандартные radio кнопки.
Итак, мы подготовили radio кнопки для сортировки.

Дальше идем в сайт\components\com_jshopping\controllers\category.php и находим строчку $sorting_sel = JHTML::_ 100 строка примерно.
В строке меняем select.radiolist на select.radiolistorder, сохраняем и смотрим что получилось на данном этапе.
Не помню как выглядит, но ничего хорошего.

Теперь оформление.
Спойлер
[свернуть]

Ну вот вроде бы и все на этом... Разница очевидна.. Сравнение на картинке.


Кто увидел минусы или плюсы, пишем.

Где то читал, что такая конструкция не поддерживается apple'ами и андроидами, или это было в прошлом веке.. Но, в итоге нашел небольшой костыль.
Кто что знает по этому поводу, говорим. А то меня бесит данный кусочек кода. (код не тестировал, нет возможности)
Спойлер
[свернуть]
« Последнее редактирование: 21.08.2014, 07:22:57 от shurakana »
Эта подпись отображается внизу каждого Моего сообщения. Я также могу использовать BB код и смайлы.
*

Cerber

  • Захожу иногда
  • 266
  • 33 / 0
  • Богиня Иштар и ее пес Пи..ц
Вариант без правки контроллера По поиску
:) тем не менее (+)
*

shurakana

  • Давно я тут
  • 792
  • 50 / 6
Вариант без правки контроллера По поиску
Здесь не то чтобы никто подобное не делал, а именно сам вариант решения, т.е. можно на будущее использовать.. Про количество, не понял..
Эта подпись отображается внизу каждого Моего сообщения. Я также могу использовать BB код и смайлы.
*

dmitry_stas

  • Легенда
  • 13152
  • 1232 / 8
чтобы можно было дальше использовать - забывайте про хаки ядра. а то получается что это можно дальше использовать, а вот Joomla обновлять уже нельзя...

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

shurakana

  • Давно я тут
  • 792
  • 50 / 6
Цитировать
чтобы можно было дальше использовать - забывайте про хаки ядра. а то получается что это можно дальше использовать, а вот Joomla обновлять уже нельзя...
Как умеем.. Как получается..)

Цитировать
ну и второй момент - так и не понял, в чем принципиальная разница между label для радио кнопок и потом поиском рабочего решения на js для иос..
Опять таки, захотелось попробовать еще варианты решения, все таки заниматься этим, не гвозди забивать..)
Эта подпись отображается внизу каждого Моего сообщения. Я также могу использовать BB код и смайлы.
*

Linfuby

  • Завсегдатай
  • 1242
  • 176 / 0
  • Всё просто...
Респектую Шуракане, только за тот факт что человек не идёт шаблонно, а ищет решения.
И пусть решения не идеальны, но они имеют место быть. У него пока мало опыта, поэтому его решения кажутся абсурдными. Но именно на таких людях держится развитие ЖШ в Европе и России.
P.S. Попытки найти упоминание ЖШ на востоке не обвенчались успехом (а зря, ведь рынок там хороший)
Немного воображения и логики, и любая проблема становится решенной.
Кривые решения - дают кривой результат!
Решения для JoomShopping
Благодарности и поддержка принимаются по след. реквизитам:
Яндекс.Деньги - 41001751720054
*

shurakana

  • Давно я тут
  • 792
  • 50 / 6
Спасибо, Linfuby, как то не заметил сообщения.
Немного доработал выше сделанное. Сделал кнопку смены направления сортировки прямо в label, т.е. если нажать на активный пункт направление сортировки изменится.
В select.radiolistorder (упомянуто выше) добавляем параметр $orderby, у меня третий в списке.

Далее идем в select.php в самое начало нашей функции (public static function radiolistorder ), туда тоже добавляем параметр, причем можно называть переменную хоть как будь то $orderby или $eretetete, параметры из category.php похоже передаются по очереди, поэтому внимательнее.(select.radiolistorder не параметр, не считается)

Остановимся на $orderby.
После foreach ($data as $obj) {
добавляем проверку. (вместо img рекомендую добавлять class="order_up" ну или down, и добавлять картинку через css)
Код
			if ($order_by == 0)
{$path = "<img src='http://localhost/im/components/com_jshopping/images/arrow_up.gif'>";}
else
{$path = "<img src='http://localhost/im/components/com_jshopping/images/arrow_down.gif'>";}

После $extra = ' '; добавляем $label_active = ' '; это мы делаем доппеременную активности для label.

Ниже, после $extra .= ' selected="selected" '; добавляем еще пару строчек
Код
			$order_change .= ' onclick="submitListProductFilterSortDirection()" '; // только для активного label, по клику смена order_by
$label_active.= ''.$path.''; // только для активного label, указание пути картинки

И еще чуть ниже после $extra .= ((string) $k == (string) $selected ? ' checked="checked" ' : ''); так же вставляем
Код
			$order_change .= ((string) $k == (string) $selected ? ' onclick="submitListProductFilterSortDirection()" ' : '');
$label_active .= ((string) $k == (string) $selected ? $path : '');

Теперь к самим чекбоксам и label, код должен выглядеть так:
Код
			$html .= '<input class="d_none" type="radio" name="'.$name.'" id="'.$id.'" value="'.$k.'" '.$extra.$attribs.'>';
$html .= '<label '.$order_change.' class="ch_order" for="'.$id.'">'.$t.$label_active.'</label>';

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

Соответственно теперь из сайт\components\com_jshopping\templates\default\list_products\form_filters.php можно удалять <img src...
Эта подпись отображается внизу каждого Моего сообщения. Я также могу использовать BB код и смайлы.
*

shurakana

  • Давно я тут
  • 792
  • 50 / 6
Отсюда понял http://stackoverflow.com/questions/5421659/html-label-command-doesnt-work-in-iphone-browser, что проблема наблюдается только в ios4, и нужно добавить к label пустой элемент onclick.

Поэтому вместо
    
Код
 $order_change .= ' onclick="submitListProductFilterSortDirection()" ';
Делаем
    
Код
$order_change .= ' submitListProductFilterSortDirection() ';

И вместо
   
Код
$html .= '<label '.$order_change.' class="ch_order" for="'.$id.'">'.$t.$label_active.'</label>';
делаем
   
Код
$html .= '<label onclick="'.$order_change.'" class="ch_order" for="'.$id.'">'.$t.$label_active.'</label>';

И убираем эти костыли
Код
<script>
    var deviceAgent = navigator.userAgent.toLowerCase();
    var iOS = deviceAgent.match(/(iphone|ipod|ipad)/);
    if (iOS) {
        $('label').click(function (event) {
            $('#' + $(event.target).attr('for')).attr('checked', true).change();
        });
    }
</script>
Эта подпись отображается внизу каждого Моего сообщения. Я также могу использовать BB код и смайлы.
*

dmitry_stas

  • Легенда
  • 13152
  • 1232 / 8
а что в итоге поменялось? :) итоговый HTML же одинаковый
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

shurakana

  • Давно я тут
  • 792
  • 50 / 6
Как не изменился? Теперь у label, атрибут onclick="" есть всегда(вместо костылей), а у активного label, onckilck="submitListProductFilterSortDirection()" для смены сортировки..
Эта подпись отображается внизу каждого Моего сообщения. Я также могу использовать BB код и смайлы.
*

dmitry_stas

  • Легенда
  • 13152
  • 1232 / 8
ясно. вы ж цикл не рисуете, не понял сразу что это в цикле :)

т.е. это получается твик такой для ios4? чтобы label менял состояние радиокнопки, то просто нужен обязательный пустой onclick для label?
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

shurakana

  • Давно я тут
  • 792
  • 50 / 6
Да, именно так, думаю в иос5 и более поздних версиях уже поправили, но кто его знает..)

Думал ios4 только на третьем ифоне, но нет, на четвертом тоже.. (Вспоминаю у кого есть.. ;D)

Хотя там же обновление было, думаю в любом случае все обновились..
« Последнее редактирование: 24.08.2014, 23:42:40 от shurakana »
Эта подпись отображается внизу каждого Моего сообщения. Я также могу использовать BB код и смайлы.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

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

Автор kit2m2

Ответов: 8
Просмотров: 1902
Последний ответ 06.07.2021, 18:31:46
от kit2m2
Подарок при покупке товаров одного производителя

Автор zahar_92

Ответов: 3
Просмотров: 264
Последний ответ 25.03.2020, 19:41:37
от nevigen
[РЕШЕНО] Где изменить список выводимых товаров (материалов) на странице?

Автор nightbodom

Ответов: 2
Просмотров: 369
Последний ответ 09.01.2020, 12:51:48
от nightbodom
Ajax для стандартной сортировки товаров

Автор zahar_92

Ответов: 0
Просмотров: 292
Последний ответ 03.12.2019, 13:42:56
от zahar_92
[Решено] Пунк меню для товаров с опр. характеристикой

Автор kontrast

Ответов: 142
Просмотров: 15169
Последний ответ 06.09.2019, 16:00:47
от dmitry_stas