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

leo78

  • Завсегдатай
  • 1018
  • 62 / 8
  • I left from paradise!?...
В принципе все работает и можно было оставить так, как есть, но мне кажется его можно улучшить:

Спойлер
[свернуть]

Все это должно превратиться в это:
Спойлер
[свернуть]
*

Aleks.Denezh

  • Живу я здесь
  • 3406
  • 428 / 4
Re: Создать массива или дроработать
« Ответ #1 : 03.08.2015, 10:19:22 »
В принципе все работает и можно было оставить так, как есть, но мне кажется его можно улучшить:
Спойлер
[свернуть]


Все это должно превратиться в это:
Как PHP код может превратиться в JS код? Может все это должно обрабатываться тем JS кодом который там полностью не выведен?
Как и не понятны подобные строки: "$use_wm1$use_yandex1$use_paypal1$use_moneybookers1$use_robox1$use_liqpay1$use_smscoin1$use_cbank1"
Не выведет ли это кучу раз одно и тоже?
*

leo78

  • Завсегдатай
  • 1018
  • 62 / 8
  • I left from paradise!?...
Re: Создать массива или дроработать
« Ответ #2 : 03.08.2015, 11:14:41 »
Istaan
Простите за предыдущую беседу.
Спасибо, очень хорошо сократился код.
Код
"$use_wm1$use_yandex1$use_paypal1$use_moneybookers1$use_robox1$use_liqpay1$use_smscoin1$use_cbank1"
Подобный список мне тоже не очень нравиться.
Нет, не выводит:
Спойлер
[свернуть]
Проверил ваш вариант, не совсем верно он работает:
Спойлер
[свернуть]
Спойлер
[свернуть]
:o
« Последнее редактирование: 03.08.2015, 11:31:04 от leo78 »
*

Aleks.Denezh

  • Живу я здесь
  • 3406
  • 428 / 4
Re: Создать массива или дроработать
« Ответ #3 : 03.08.2015, 11:32:27 »
Если я правильно понимаю то что то типа этого
Спойлер
[свернуть]
Но мне тестировать неначем, может не работать! Просто приблизительно как можно сократить написал!

Мой вариант может неработать по нескольки причинам:
1. Код пишется в уме, и не отлаживается, нет целостности понимания что делает код
2. в строке $use_cbank1 = $params->get( 'use_rupay' ) == 0 ? '' : ' #cbank,'; ошибка вместо use_rupay должно быть use_cbank
*

Aleks.Denezh

  • Живу я здесь
  • 3406
  • 428 / 4
Re: Создать массива или дроработать
« Ответ #4 : 03.08.2015, 11:37:10 »
Хотя правильно ли я понимаю, вам нужно если человек выбрал систему оплаты webmoney то все остальные системы скрываются? Если выбрал PayPal то все остальные системы скрываются!
Если так вам вообще не нужно ни строчки PHP кода и три строчки JS кода!
Если так! То удаляете весь PHP код
И делаете так:
для блоков которые отображают ваши платежные системы даете класс class="payments"
а дальше
$('.payments).hide();
$('#нужная_система').show();
PHP код нужен будет только для того что бы выводить или не выводить иконку включенной системы! Все!
*

leo78

  • Завсегдатай
  • 1018
  • 62 / 8
  • I left from paradise!?...
Re: Создать массива или дроработать
« Ответ #5 : 03.08.2015, 11:45:17 »
Istaan
В том и дело 9 платежных систем, их можно выбрать в админ панели, включить все, или на собственный выбор, конечно не продумано если пользователь отключит их все но даётся выбор.
демонстрация
Массив не проще сделать?
Код
$selectors = array();
array_push($selectors, "#1");
array_push($selectors, "#2");
array_push($selectors, "#3");
echo implode(", ", $selectors); // "#1, #2, #3"
Только как потом выдергивать ненужный ID?
« Последнее редактирование: 03.08.2015, 12:01:21 от leo78 »
*

leo78

  • Завсегдатай
  • 1018
  • 62 / 8
  • I left from paradise!?...
Re: Создать массива или дроработать
« Ответ #6 : 03.08.2015, 13:35:58 »
Такой  JS код был:
Спойлер
[свернуть]
Думал упростить его  >:(
*

Aleks.Denezh

  • Живу я здесь
  • 3406
  • 428 / 4
Re: Создать массива или дроработать
« Ответ #7 : 03.08.2015, 14:01:00 »
https://jsfiddle.net/Frisian/enwmps9o/35/
Как я и говорил все что вы делаете в PHP вам не нужно!
Я поправил ваш код там так как нужно делать!
Основа:
1. Ссылка: <a id="ammh1" style="margin:3px;" class="south" href="#wm" title="WebMoney"></a>
её заключить в
Код: php
<?php if($params->get('show_wm')): ?>
<a id="ammh1" style="margin:3px;" class="south" href="#wm" title="WebMoney"></a>
<?php endif; ?>

2. Блок с платежной системой должен быть в контейнере:
Код: php
<?php if($params->get('show_wm')): ?>
<div id="wm" class="amoney">
... тут платежная система
</div>
<?php endif; ?>
Класс у всех этих блоков должен быть amoney! ID должен быть тот что в href="#wm" (без решетки конено)

Дальше в JS код всего:
Код: javascript
jQuery(function($) {
    $(document).on('click', '.south', function(){
        $('.amoney').hide(); //скрываем все блоки с классом amoney
        $($(this).attr('href')).slideDown(500); //отображаем блок с id которой пришол у нас из аттрибута href текущей ссылки
        return false;
    });
});

Все! Вот ту порнографию что вы писали удалить, она не нужна! Добавлять можно неограниченное количество блоков...
« Последнее редактирование: 03.08.2015, 14:10:04 от Istaan »
*

leo78

  • Завсегдатай
  • 1018
  • 62 / 8
  • I left from paradise!?...
Re: Создать массива или дроработать
« Ответ #8 : 03.08.2015, 14:13:32 »
Istaan
Так просто, класс, спасибо!
*

leo78

  • Завсегдатай
  • 1018
  • 62 / 8
  • I left from paradise!?...
Re: Создать массива или дроработать
« Ответ #9 : 03.08.2015, 15:06:37 »
Istaan
Просто уточнить хотел, так все нормально.
Оставили случайно:
Код
.removeAttr('title');
Код
jQuery(function($) {
    $('#amoney').on('click', '.south', function(){
        $('#amoney .south.active').removeClass('active').removeAttr('title');
        $(this).addClass('active');
- оно Неправильно работает, удаляет но не возвращает.
у меня так работает
Код
jQuery(function($) {
    $('#amoney').on('click', '.south', function(){
     $('#amoney .south').removeClass('active');
     $(this).addClass('active');
    });
});
« Последнее редактирование: 03.08.2015, 15:10:30 от leo78 »
*

Aleks.Denezh

  • Живу я здесь
  • 3406
  • 428 / 4
Re: Создать массива или дроработать
« Ответ #10 : 03.08.2015, 15:24:16 »
ну я не знал что тот код делает по этому дописал ниже свой на https://jsfiddle.net/Frisian/enwmps9o/35/
*

leo78

  • Завсегдатай
  • 1018
  • 62 / 8
  • I left from paradise!?...
Re: Создать массива или дроработать
« Ответ #11 : 03.08.2015, 16:00:24 »
Еще вопрос, что делать с этим:
Код
<a class="south" href="javascript:void(0);" style="margin:3px;text-decoration: none;" onclick="hide_all()" title="Скрыть все">Благодарность Автору</a>
Пишет ошибки:
Цитировать
Uncaught ReferenceError: hide_all is not definedonclick @ universal-module.html:314
jquery.min.js:2 Uncaught Error: Syntax error, unrecognized expression: javascript:void(0);

изменил на
Код
<a rel="nofollow" class="south hasTooltip active" style="margin:3px;text-decoration: none;" title="Скрыть все">Благодарность Автору</a>

https://jsfiddle.net/enwmps9o/36/

И править не чего особо не пришлось только изменил ссылки и все

А если поставить .toggle(500);
https://jsfiddle.net/enwmps9o/38/
« Последнее редактирование: 03.08.2015, 16:37:57 от leo78 »
*

Shustry

  • Гуру
  • 6434
  • 745 / 3
Re: Создать массива или дроработать
« Ответ #12 : 03.08.2015, 17:17:47 »
Я в предыдущей ваше теме отписывался, что могу сделать вообще без скриптов, как время будет. Задача у вас простая. Размеры кнопок фиксированные, высота выпадающего блока тоже.
Держите.
*

leo78

  • Завсегдатай
  • 1018
  • 62 / 8
  • I left from paradise!?...
Re: Создать массива или дроработать
« Ответ #13 : 03.08.2015, 17:24:50 »
Shustry
А убрать блок как?
*

Shustry

  • Гуру
  • 6434
  • 745 / 3
Re: Создать массива или дроработать
« Ответ #14 : 03.08.2015, 17:25:37 »
Какой блок убрать? У вас в примере ничего не убирается.
*

leo78

  • Завсегдатай
  • 1018
  • 62 / 8
  • I left from paradise!?...
Re: Создать массива или дроработать
« Ответ #15 : 03.08.2015, 18:02:11 »
Ладно пока буду ломать это
Код
<?php
$use_wm1 = $params->get( 'use_wm' ) == 0 ? '' : ' #wm,';
$use_rupay1 = $params->get( 'use_rupay' ) == 0 ? '' : '  #rupay,';
$use_yandex1 = $params->get( 'use_yandex' ) == 0 ? '' : ' #yandex,';
$use_paypal1 = $params->get( 'use_paypal' ) == 0 ? '' : ' #paypal,';
$use_moneybookers1 = $params->get( 'use_moneybookers' ) == 0 ? '' : '#moneybookers,';
$use_robox1 = $params->get( 'use_robox' ) == 0 ? '' : ' #robox,';
$use_liqpay1 = $params->get( 'use_liqpay' ) == 0 ? '' : ' #liqpay,';
$use_smscoin1 = $params->get( 'use_smscoin' ) == 0 ? '' : ' #smscoin,';
$use_cbank1 = $params->get( 'use_cbank' ) == 0 ? '' : ' #cbank,';

$hideall = trim( rtrim( "$use_wm1$use_rupay1$use_yandex1$use_paypal1$use_moneybookers1$use_robox1$use_liqpay1$use_smscoin1$use_cbank1", "," ), ' ' );
$payments = array(
   'wm' => trim( rtrim( "$use_rupay1$use_yandex1$use_paypal1$use_moneybookers1$use_robox1$use_liqpay1$use_smscoin1$use_cbank1", "," ), ' ' ),
   'rupay' => trim( rtrim( "$use_wm1$use_yandex1$use_paypal1$use_moneybookers1$use_robox1$use_liqpay1$use_smscoin1$use_cbank1", "," ), ' ' ),
   'yandex' => trim( rtrim( "$use_wm1$use_rupay1$use_paypal1$use_moneybookers1$use_robox1$use_liqpay1$use_smscoin1$use_cbank1", "," ), ' ' ),
   'paypal' => trim( rtrim( "$use_wm1$use_rupay1$use_yandex1$use_moneybookers1$use_robox1$use_liqpay1$use_smscoin1$use_cbank1", "," ), ' ' ),
   'moneybookers' => trim( rtrim( "$use_wm1$use_rupay1$use_yandex1$use_paypal1$use_robox1$use_liqpay1$use_smscoin1$use_cbank1", "," ), ' ' ),
   'robox' => trim( rtrim( "$use_wm1$use_rupay1$use_yandex1$use_paypal1$use_moneybookers1$use_liqpay1$use_smscoin1$use_cbank1", "," ), ' ' ),
   'liqpay' => trim( rtrim( "$use_wm1$use_rupay1$use_yandex1$use_paypal1$use_moneybookers1$use_robox1$use_smscoin1$use_cbank1", "," ), ' ' ),
   'smscoin' => trim( rtrim( "$use_wm1$use_rupay1$use_yandex1$use_paypal1$use_moneybookers1$use_robox1$use_liqpay1$use_cbank1", "," ), ' ' ),
   'cbank' => trim( rtrim( "$use_wm1$use_rupay1$use_yandex1$use_paypal1$use_moneybookers1$use_robox1$use_liqpay1$use_smscoin1", "," ), ' ' )
);
?>
<script>
   (function ($) {
      <?php foreach($payments as $payment => $value): ?>
         <?php if($params->get('use_' . $payment)): ?>
            this.show_<?php echo $payment; ?> = function () {
               $('<?php echo $value; ?>').hide();
               $('#<?php echo $payment; ?>').<?php echo $jfadtogquery;?>;
               return false;
            };
         <?php endif; ?>
      <?php endforeach; ?>
      this.hide_all = function () {
         $('<?php echo $hideall; ?>').hide();
         return false;
      }
   })(jQuery);
   <?php if ($jammfadtogquery1 == 1): ?>
   jQuery(function ($) {
      $('#amoney').on('click', '.south', function () {
         $('#amoney .south').removeClass('active');
         $(this).addClass('active');
      });
   });
   <?php endif; ?>
</script>

правда не работает
*

leo78

  • Завсегдатай
  • 1018
  • 62 / 8
  • I left from paradise!?...
Re: Создать массива или дроработать
« Ответ #16 : 03.08.2015, 18:34:13 »
Istaan
брать из массива нашел как
Код
<?php

$foo = array('bar' => 'baz');
echo "Hello {$foo['bar']}!"; // Hello baz!

?>
Спойлер
[свернуть]

Код
echo $payments['wm'];

 *DRINK*
« Последнее редактирование: 03.08.2015, 18:49:23 от leo78 »
*

Aleks.Denezh

  • Живу я здесь
  • 3406
  • 428 / 4
Re: Создать массива или дроработать
« Ответ #17 : 03.08.2015, 20:58:58 »
Не понял, зачем вам то если я показал рабочий пример без этой ненужной простыни на PHP!
*

leo78

  • Завсегдатай
  • 1018
  • 62 / 8
  • I left from paradise!?...
Re: Создать массива или дроработать
« Ответ #18 : 03.08.2015, 21:25:58 »
Ваш пример:
https://jsfiddle.net/Frisian/enwmps9o/35/
мой:
http://jsfiddle.net/enwmps9o/40/
Разница в том, что нажимая повторно на кнопку нечего не происходит, в вашем примере оно открывается сколько не нажимай. 
*

Aleks.Denezh

  • Живу я здесь
  • 3406
  • 428 / 4
*

Shustry

  • Гуру
  • 6434
  • 745 / 3
Re: Создать массива или дроработать
« Ответ #20 : 03.08.2015, 21:56:57 »
Так?

https://jsfiddle.net/Shustry/f5o6hcw4/1/

Код: javascript
jQuery(function($) {
    $('.south').each(function(idx, el){
        $(this).on('click', function(){
            if ($(this).hasClass('active')) {
               return false;
            } else {
                $(this).addClass('active').siblings().removeClass('active');
                $('.amoney').eq(idx-1).slideDown(500).siblings('.amoney').hide();
            }
        });
    });
});
*

leo78

  • Завсегдатай
  • 1018
  • 62 / 8
  • I left from paradise!?...
Re: Создать массива или дроработать
« Ответ #21 : 03.08.2015, 22:28:54 »
Istaan, Shustry
надо подумать, слишком много информации  >:(
« Последнее редактирование: 04.08.2015, 01:53:30 от leo78 »
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Как создать дополнительный параметр(по типу published) для элемента списка?

Автор borro

Ответов: 4
Просмотров: 1030
Последний ответ 08.02.2018, 17:03:11
от borro
Как создать модуль PayMaster ?

Автор tsinchugova

Ответов: 0
Просмотров: 1326
Последний ответ 27.11.2013, 07:18:44
от tsinchugova
Как создать поле типа "sql" для Joomla 2.5

Автор tasknet

Ответов: 9
Просмотров: 3122
Последний ответ 15.05.2012, 17:36:45
от SDKiller
Как создать zip архив средствами Joomla API

Автор tasknet

Ответов: 14
Просмотров: 4605
Последний ответ 06.01.2012, 12:54:55
от Фей
Как создать установочный .xml файл для компонента

Автор swordholder

Ответов: 4
Просмотров: 2724
Последний ответ 17.03.2011, 03:09:31
от Ortnox