Форум русской поддержки Joomla!® CMS
06.12.2016, 12:08:29 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
   
   Начало   Поиск Joomla 3.0 FAQ Joomla 2.5 FAQ Joomla 1.5 FAQ Правила форума Новости Joomla Реклама Войти Регистрация Помощь  
Страниц: [1]   Вниз
  Добавить закладку  |  Печать  
Автор

Создать массива или дроработать

 (Прочитано 446 раз)
0 Пользователей и 1 Гость смотрят эту тему.
leo78
Живу я здесь
******

Репутация: +59/-8
Offline Offline

Пол: Мужской
Сообщений: 896


I left from paradise!?...


« : 03.08.2015, 04:49:15 »

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

Показать текстовый блок

Все это должно превратиться в это:
Показать текстовый блок
Записан
Aleks.Denezh
Практически профи
*******

Репутация: +372/-4
Offline Offline

Пол: Мужской
Сообщений: 2762



« Ответ #1 : 03.08.2015, 11:19:22 »

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


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

Репутация: +59/-8
Offline Offline

Пол: Мужской
Сообщений: 896


I left from paradise!?...


« Ответ #2 : 03.08.2015, 12:14:41 »

Istaan
Простите за предыдущую беседу.
Спасибо, очень хорошо сократился код.
Код:
"$use_wm1$use_yandex1$use_paypal1$use_moneybookers1$use_robox1$use_liqpay1$use_smscoin1$use_cbank1"
Подобный список мне тоже не очень нравиться.
Нет, не выводит:
Показать текстовый блок
Проверил ваш вариант, не совсем верно он работает:
Показать текстовый блок
Показать текстовый блок
Shocked
« Последнее редактирование: 03.08.2015, 12:31:04 от leo78 » Записан
Aleks.Denezh
Практически профи
*******

Репутация: +372/-4
Offline Offline

Пол: Мужской
Сообщений: 2762



« Ответ #3 : 03.08.2015, 12:32:27 »

Если я правильно понимаю то что то типа этого
Показать текстовый блок
Но мне тестировать неначем, может не работать! Просто приблизительно как можно сократить написал!

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

Репутация: +372/-4
Offline Offline

Пол: Мужской
Сообщений: 2762



« Ответ #4 : 03.08.2015, 12:37:10 »

Хотя правильно ли я понимаю, вам нужно если человек выбрал систему оплаты webmoney то все остальные системы скрываются? Если выбрал PayPal то все остальные системы скрываются!
Если так вам вообще не нужно ни строчки PHP кода и три строчки JS кода!
Если так! То удаляете весь PHP код
И делаете так:
для блоков которые отображают ваши платежные системы даете класс class="payments"
а дальше
$('.payments).hide();
$('#нужная_система').show();
PHP код нужен будет только для того что бы выводить или не выводить иконку включенной системы! Все!
Записан
leo78
Живу я здесь
******

Репутация: +59/-8
Offline Offline

Пол: Мужской
Сообщений: 896


I left from paradise!?...


« Ответ #5 : 03.08.2015, 12: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, 13:01:21 от leo78 » Записан
leo78
Живу я здесь
******

Репутация: +59/-8
Offline Offline

Пол: Мужской
Сообщений: 896


I left from paradise!?...


« Ответ #6 : 03.08.2015, 14:35:58 »

Такой  JS код был:
Показать текстовый блок
Думал упростить его  Angry
Записан
Aleks.Denezh
Практически профи
*******

Репутация: +372/-4
Offline Offline

Пол: Мужской
Сообщений: 2762



« Ответ #7 : 03.08.2015, 15:01:00 »

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

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

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

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

Репутация: +59/-8
Offline Offline

Пол: Мужской
Сообщений: 896


I left from paradise!?...


« Ответ #8 : 03.08.2015, 15:13:32 »

Istaan
Так просто, класс, спасибо!
Записан
leo78
Живу я здесь
******

Репутация: +59/-8
Offline Offline

Пол: Мужской
Сообщений: 896


I left from paradise!?...


« Ответ #9 : 03.08.2015, 16: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, 16:10:30 от leo78 » Записан
Aleks.Denezh
Практически профи
*******

Репутация: +372/-4
Offline Offline

Пол: Мужской
Сообщений: 2762



« Ответ #10 : 03.08.2015, 16:24:16 »

ну я не знал что тот код делает по этому дописал ниже свой на https://jsfiddle.net/Frisian/enwmps9o/35/
Записан
leo78
Живу я здесь
******

Репутация: +59/-8
Offline Offline

Пол: Мужской
Сообщений: 896


I left from paradise!?...


« Ответ #11 : 03.08.2015, 17: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, 17:37:57 от leo78 » Записан
Shustry
Группа развития
*****

Репутация: +727/-3
Offline Offline

Пол: Мужской
Сообщений: 6667


Рисую дизайны


« Ответ #12 : 03.08.2015, 18:17:47 »

Я в предыдущей ваше теме отписывался, что могу сделать вообще без скриптов, как время будет. Задача у вас простая. Размеры кнопок фиксированные, высота выпадающего блока тоже.
Держите.
Записан
leo78
Живу я здесь
******

Репутация: +59/-8
Offline Offline

Пол: Мужской
Сообщений: 896


I left from paradise!?...


« Ответ #13 : 03.08.2015, 18:24:50 »

Shustry
А убрать блок как?
Записан
Shustry
Группа развития
*****

Репутация: +727/-3
Offline Offline

Пол: Мужской
Сообщений: 6667


Рисую дизайны


« Ответ #14 : 03.08.2015, 18:25:37 »

Какой блок убрать? У вас в примере ничего не убирается.
Записан
leo78
Живу я здесь
******

Репутация: +59/-8
Offline Offline

Пол: Мужской
Сообщений: 896


I left from paradise!?...


« Ответ #15 : 03.08.2015, 19: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
Живу я здесь
******

Репутация: +59/-8
Offline Offline

Пол: Мужской
Сообщений: 896


I left from paradise!?...


« Ответ #16 : 03.08.2015, 19:34:13 »

Istaan
брать из массива нашел как
Код:
<?php

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

?>
Показать текстовый блок

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

 drink
« Последнее редактирование: 03.08.2015, 19:49:23 от leo78 » Записан
Aleks.Denezh
Практически профи
*******

Репутация: +372/-4
Offline Offline

Пол: Мужской
Сообщений: 2762



« Ответ #17 : 03.08.2015, 21:58:58 »

Не понял, зачем вам то если я показал рабочий пример без этой ненужной простыни на PHP!
Записан
leo78
Живу я здесь
******

Репутация: +59/-8
Offline Offline

Пол: Мужской
Сообщений: 896


I left from paradise!?...


« Ответ #18 : 03.08.2015, 22:25:58 »

Ваш пример:
https://jsfiddle.net/Frisian/enwmps9o/35/
мой:
http://jsfiddle.net/enwmps9o/40/
Разница в том, что нажимая повторно на кнопку нечего не происходит, в вашем примере оно открывается сколько не нажимай. 
Записан
Aleks.Denezh
Практически профи
*******

Репутация: +372/-4
Offline Offline

Пол: Мужской
Сообщений: 2762



« Ответ #19 : 03.08.2015, 22:50:50 »

так что ли: https://jsfiddle.net/Frisian/enwmps9o/42/
Записан
Shustry
Группа развития
*****

Репутация: +727/-3
Offline Offline

Пол: Мужской
Сообщений: 6667


Рисую дизайны


« Ответ #20 : 03.08.2015, 22:56:57 »

Так?

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

Код
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
Живу я здесь
******

Репутация: +59/-8
Offline Offline

Пол: Мужской
Сообщений: 896


I left from paradise!?...


« Ответ #21 : 03.08.2015, 23:28:54 »

Istaan, Shustry
надо подумать, слишком много информации  Angry
« Последнее редактирование: 04.08.2015, 02:53:30 от leo78 » Записан
Страниц: [1]   Вверх
  Добавить закладку  |  Печать  
 
Перейти в:  

Powered by SMF 1.1.21 | SMF © 2006, Simple Machines

Joomlaforum.ru is not affiliated with or endorsed by the Joomla! Project or Open Source Matters.
The Joomla! name and logo is used under a limited license granted by Open Source Matters
the trademark holder in the United States and other countries.

LiveInternet