Новости Joomla

Quantum Manager нужен сообществу, а автору нужна ваша поддержка!

Quantum Manager нужен сообществу, а автору нужна ваша поддержка!Файловый менеджер Quantum — одно...

Файловый менеджер Quantum — одно из самых популярных решений для Joomla, созданное разработчиком из сообщества Joomla, Дмитрием Цымбалом (@tsymbalmitia). Он делает Quantum удобным, безопасным и современным, обновляет его, исправляет уязвимости и отвечает пользователям — всё это в свободное от основной работы время.

Теперь настал момент для следующего шага: развитие проекта требует больше времени и ресурсов.

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

ottofonbismark

  • Осваиваюсь на форуме
  • 25
  • 1 / 0
  • Делаем сайты и прочие мелочи
Структура директорий
modules/mod_customer/tmpl/default.php
modules/mod_customer/helper.php
modules/mod_customer/mod_customer.php
modules/mod_customer/mod_customer.xml

в файле представления default.php хочу сделать два selecta связанных. Тоесть значение второго поля зависит от выбора первого.
код файла

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
<?php
defined( '_JEXEC' ) or die( 'Restricted access' );
?>
<?php
require_once('city.php'); // подключаем список с городами

$action = isset($_REQUEST['action'])? $_REQUEST['action'] : '';

// возвращаем список городов
if ($action == 'getCity')
{
    if (isset($city[$_GET['region']]))
    {
        echo json_encode($city[$_GET['region']]); // возвраащем данные в JSON формате;
    }
    else
    {
        echo json_encode(array('Выберите область'));
    }

    exit;
}

// выводим пришедшие данные
if ($action == 'postResult')
{
    //echo '<pre>' . htmlspecialchars(print_r($_POST, true)). '</pre>';
   echo ''.$_POST['region'].'<br>';
   if ($_POST['city']!='Выберите область')
   {
   print_r( $city[$_POST['region']][$_POST['city']]);
   }
    exit;
}
?>

    <style>
        body {font-family:Verdana; font-size:12px;}
    </style>
    <script type="text/javascript">
    // <![CDATA[
        function loadCity(select)
        {
           
            var citySelect = $('select[name="city"]');
            citySelect.attr('disabled', 'disabled'); // делаем список городов не активным
            alert(citySelect);
            // послыаем AJAX запрос, который вернёт список городов для выбранной области
            $.getJSON('modules/mod_customer/tmpl/default.php' ,
            {
               
                action:'getCity',
                region:select.value
            },
           
            function(cityList){
                       
                citySelect.html(''); // очищаем список городов
               
                // заполняем список городов новыми пришедшими данными
                $.each(cityList, function(i){
                    citySelect.append('<option value="' + i + '">' + this + '</option>');
                });
               
                citySelect.removeAttr('disabled'); // делаем список городов активным
               
            });
        }
    // ]]>
    </script>
    <form action="index.php" method="post">
        <select name="region" onchange="loadCity(this)">
            <option></option>
           
            <?php
            // заполняем список областей
            foreach ($city as $region => $cityList)
            {
                echo '<option value="' . $region . '">' . $region . '</option>' . "\n";
            }
            ?>
           
        </select>
       
        <select name="city" disabled="disabled">
            <option>Выберите область</option>
        </select>

        <input type="hidden" name="action" value="postResult" />
        <input type="submit" value="отправить" />
    </form>
</div>


проблема с  $.getJSON('modules/mod_customer/tmpl/default.php'
функция function(cityList) не исполняется.
Подскажите как сделать. Мне нужно работать только с модулем.
*

danik.html

  • Живу я здесь
  • 2650
  • 353 / 4
А вы посмотрите:
У вас в файле default.php в самом верху прописана строчка: defined( '_JEXEC' ) or die( 'Restricted access' );
Разумеется, при прямом обращении к этому файлу константа _JEXEC никем не определена, поэтому die()

К сожалению в Joomla не предусмотрен механизм работы AJAX в модулях, AJAX запросы можно обрабатывать только в компонентах / плагинах.
В случае же с модулем имеется 3 обходных варианта:
1) создать в папке шаблона файл module.php и в нем сделать вывод модуля по id, а к запросу добавлять &tmpl=module&module_id=5 (осторожно, этим мы даем доступ ко всем опубликованым модулям, даже тем которые на сайте не выводятся)
2) очищать в модуле буфер, в который пишется код формируемой html-страницы, записывать в него нужную инфу и отправлять браузеру. Однако этот способ не оптимален, так как до момента отработки модуля отработает еще компонент, плагины и другие модули.
3) создать свою точку входа на сайт, например AJAX.php и обращаться к этому файлу напрямую. Самый простой способ.
【Мегапак Virtuemart:
 • метатеги (description,keywords)
 • заголовки (title)
 • красивые алиасы (чпу) без тормозов и дублей!
*

ottofonbismark

  • Осваиваюсь на форуме
  • 25
  • 1 / 0
  • Делаем сайты и прочие мелочи
спасибо за совет. будем пробовать
*

danik.html

  • Живу я здесь
  • 2650
  • 353 / 4
Файл ajax.php можно создать в папке модуля, и перенести туда код, отвечающий за вывод массива городов или что там у вас. а в default.php оставить только шаблон модуля, этот файл для этого  и предназначен :)
【Мегапак Virtuemart:
 • метатеги (description,keywords)
 • заголовки (title)
 • красивые алиасы (чпу) без тормозов и дублей!
*

ottofonbismark

  • Осваиваюсь на форуме
  • 25
  • 1 / 0
  • Делаем сайты и прочие мелочи
ну тогда сейчас начну. посмотрим что выйдет)))) Я просто думаю, а может таки написать компонент.Что вы посоветуете?
*

danik.html

  • Живу я здесь
  • 2650
  • 353 / 4
Сами решайте. Если есть время и желание разобраться - делайте компонент. Я только не знаю, можно ли делать компонент без админ части, думаю можно.
【Мегапак Virtuemart:
 • метатеги (description,keywords)
 • заголовки (title)
 • красивые алиасы (чпу) без тормозов и дублей!
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Как увиличить максимальное количество символов в стандартном модуле (mod_custom)?

Автор genkey

Ответов: 0
Просмотров: 1455
Последний ответ 27.04.2017, 14:41:22
от genkey
Подскажите по совместимости jquery

Автор M60aut

Ответов: 0
Просмотров: 1313
Последний ответ 10.02.2017, 11:05:05
от M60aut
Подскажите - сайт стал в фронтэнде выводить ошибку. Как ее убрать

Автор vovchikku

Ответов: 7
Просмотров: 2078
Последний ответ 30.01.2017, 10:35:49
от vovchikku
Подскажите где можно заказать расширения для Joomla

Автор prad

Ответов: 8
Просмотров: 2292
Последний ответ 15.12.2015, 18:13:32
от voland
Как применить атрибут size для элемента select в модуле simpleform 2?

Автор Loh

Ответов: 5
Просмотров: 1997
Последний ответ 06.06.2015, 13:44:28
от motokraft