Новости Joomla

Как тестировать Joomla PHP-разработчику? Компонент Patch tester.

👩‍💻 Как тестировать Joomla PHP-разработчику? Компонент Patch tester.Joomla - open source PHP-фреймворк с готовой админкой. Его основная разработка ведётся на GitHub. Для того, чтобы международному сообществу разработчиков было удобнее тестировать Pull Requests был создан компонент Patch Tester, который позволяет "накатить" на текущую установку Joomla именно те изменения, которые необходимо протестировать. На стороне инфраструктуры Joomla для каждого PR собираются готовые пакеты, в которых находится ядро + предложенные изменения. В каждом PR обычно находятся инструкции по тестированию: куда зайти, что нажать, ожидаемый результат. Тестировщики могут предположить дополнительные сценарии, исходя из своего опыта и найти баги, о которых сообщить разработчику. Или не найти, и тогда улучшение или исправление ошибки быстрее войдёт в ядро Joomla. Напомню, что для того, чтобы PR вошёл в ядро Joomla нужны минимум 2 положительных теста от 2 участников сообщества, кроме автора. Видео на YouTubeВидео на VK ВидеоВидео на RuTubeКомпонент на GitHub https://github.com/joomla-extensions/patchtester@joomlafeed#joomla #php #webdev #community

Вышел релиз Revo PageBuilder Toolkit for YOOtheme Pro 1.6

Вышел релиз Revo PageBuilder Toolkit for YOOtheme Pro 1.6.2PageBuilder Toolkit - это специализированный плагин для конструктора страниц Yootheme Pro, содержит набор различных утилит для ускорения процесса работы и отладки макета, множественные улучшения в интерфейсе, включая поддержку dark mode, подсказки, быстрая смена разрешения в окне просмотра и много чего еще.v.1.6.2 Что нового?- Индикатор статусов: теперь не просто показывает состояние запросов, но и делает автоматические попытки их отправки при кратковременных сбоях в сети, а если это не помогло, то переводит конструктор в ручной режим, что позволяет сохранит макет и настройки темы прежде чем вы потеряете все, что было сделано с момента последнего сохранения- Подсветка ошибок в макете: плагин анализирует код страницы и может автоматически подсвечивать data атрибуты с кучей мусора, которые попадают в код страницы при копипасте из Figma в TinyMCE (пригодится для старых макетов, в текущей работе плагин сам очищает код мусора). Также есть подсветка семантических ошибок сборки - дубли h1 тега на странице и вложенных друг в друга заголовков.- Улучшена поддержка будущего релиза Yootheme Pro 5 и редактора CodeMirror 6Плагин для русскоязычных пользователей доступен в каталоге расширений SovMart и распространяется за символическую плату (100р). Разработчики Joomla расширений и партнеры автора могут получить плагин бесплатно.Для работы плагина необходим конструктор страниц Yootheme Pro.Разработчик плагина - участник нашего сообщества Александр Судьбинов (@alexrevo), член официальной группы поддержки Yootheme Pro. Страница расширенияОписание на сайте автора@joomlafeed#joomla #yootheme

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

Luckas147

  • Новичок
  • 8
  • 0 / 0
вот код подключения скриптов jquery и fancybox в <head>
Код
<script type="text/javascript" src="http://code.jquery.com/jquery-latest.min.js"></script>
<link rel="stylesheet" href="http://fancyapps.com/fancybox/source/jquery.fancybox.css?v=1.3.4" type="text/css" media="screen" />
<script type="text/javascript" src="js/jquery.fancybox-1.3.4.pack.js"></script>
вот код кнопки, по щелчке на которую должна появляться форма в fancybox и код самой формы в файле шаблона index.php
Код
<p><a class="fancybox" href="#form"><img width="280" height="60" border="0" src="/images/stories/f_4e393bc47e0083333.png"></img></a></p>
<div id="form" style="display:none;">
   <form class="forms" method="post" name="form" action="file.php">
   <p>Имя:<br/><input name="name" size="40" type="text"/></p>
   <p>Фамилия:<br/><input name="nickname" size="40" type="text"/></p>
   <p>Текст:<br/><textarea name="text" cols="50" rows="20"></textarea></p>
   <input name="submit" class="button" type="submit"/>
   </form>
 </div>
а вот JavaScript так же в хед индекса
Код
<script type="text/javascript">
$(document).ready(function() {
$(".fancybox").fancybox({
maxWidth : 600,
maxHeight : 400,
fitToView : false,
width : '70%',
height : '70%',
autoSize : false,
closeClick : false,
openEffect : 'none',
closeEffect : 'none'
});
});
</script>
В обычном файле 2.php делаю всё тоже самое - работает, в шаблоне Joomla 1.5 нет, хелп
*

beliyadm

  • Легенда
  • 9758
  • 1665 / 66
  • Севастополь, Россия
проверьте в FireBug - нет ли конфликтов скриптов? Если еще грузится стандартный мутулз - будут ошибки
тогда нужно добавлять для квери строку с noConflict
Все истины, которые я хочу вам изложить, — бесстыдная ложь. Сделать всё хорошо
TLG: @Beliyadm
*

Fedor Vlasenko

  • Живу я здесь
  • 3845
  • 733 / 7
  • https://fedor-vlasenko.web.app
и этот путь src="js/jquery.fancybox-1.3.4.pack.js" не совсем правильный. Скрипт загружается? Укажите путь от корня сайта
*

beliyadm

  • Легенда
  • 9758
  • 1665 / 66
  • Севастополь, Россия
и этот путь src="js/jquery.fancybox-1.3.4.pack.js" не совсем правильный. Скрипт загружается? Укажите путь от корня сайта
кстати да, я обычно в идексе шаблона изначально пишу
Код: php
$doc	= JFactory::getDocument();
$tplurl = JURI::base().'templates/'.$doc->template;
и дальше в всех скриптах шаблона пляшу от него
Код: html4strict
<script type="text/javascript" src="<?php echo $tplurl; ?>/js/jquery.js"></script>
Все истины, которые я хочу вам изложить, — бесстыдная ложь. Сделать всё хорошо
TLG: @Beliyadm
*

Luckas147

  • Новичок
  • 8
  • 0 / 0
грузится мутулз
Код
<?php
/**
* @package   yoo_studio Template
* @file      index.php
* @version   1.5.2 June 2010
* @author    YOOtheme http://www.yootheme.com
* @copyright Copyright (C) 2007 - 2010 YOOtheme GmbH
*/

// no direct access
defined('_JEXEC') or die('Restricted access');

JHTML::_('behavior.mootools');

// include config
include_once(dirname(__FILE__).'/config.php');
$doc = JFactory::getDocument();
$tplurl = JURI::base().'templates/'.$doc->template;
?>
подскажите как будет с ноуконфликт решение
*

beliyadm

  • Легенда
  • 9758
  • 1665 / 66
  • Севастополь, Россия
грузится мутулз
тогда нужно добавлять для квери строку с noConflict
Все истины, которые я хочу вам изложить, — бесстыдная ложь. Сделать всё хорошо
TLG: @Beliyadm
*

Luckas147

  • Новичок
  • 8
  • 0 / 0
подскажите решение как будет с noconflict
*

beliyadm

  • Легенда
  • 9758
  • 1665 / 66
  • Севастополь, Россия
Код: javascript
<script type="text/javascript">
$(document).ready(function() {
jQuery.noConflict();
jQuery(".fancybox").fancybox({
maxWidth : 600,
maxHeight : 400,
fitToView : false,
width : '70%',
height : '70%',
autoSize : false,
closeClick : false,
openEffect : 'none',
closeEffect : 'none'
});
});
</script>
Все истины, которые я хочу вам изложить, — бесстыдная ложь. Сделать всё хорошо
TLG: @Beliyadm
*

Luckas147

  • Новичок
  • 8
  • 0 / 0
почему-то не работает вот весь индекс
Код
<?php
/**
* @package   yoo_studio Template
* @file      index.php
* @version   1.5.2 June 2010
* @author    YOOtheme http://www.yootheme.com
* @copyright Copyright (C) 2007 - 2010 YOOtheme GmbH
*/

// no direct access
defined('_JEXEC') or die('Restricted access');

JHTML::_('behavior.mootools');

// include config
include_once(dirname(__FILE__).'/config.php');
$doc = JFactory::getDocument();
$tplurl = JURI::base().'templates/'.$doc->template;
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="<?php echo $this->language; ?>" lang="<?php echo $this->language; ?>" dir="<?php echo $this->direction; ?>" >
<head>
<script type="text/javascript" src="http://code.jquery.com/jquery-1.9.1.min.js"></script>
<script src="http://code.jquery.com/ui/1.10.2/jquery-ui.js"></script>
<link rel="stylesheet" href="http://code.jquery.com/ui/1.10.2/themes/smoothness/jquery-ui.css" />
<script type="text/javascript" src="http://sk.lang-tutor.com/info-block.js"></script>
<script type="text/javascript" src="http://sk.lang-tutor.com/faq.js"></script>

<script type="text/javascript" src="http://code.jquery.com/jquery-latest.min.js"></script>
<link rel="stylesheet" href="<?php echo $tplurl; ?>/style/jquery.fancybox-1.3.4.css" type="text/css" media="screen" />
<script type="text/javascript" src="<?php echo $tplurl; ?>/js/jquery.fancybox-1.3.4.pack.js"></script>

<jdoc:include type="head" />
<link rel="apple-touch-icon" href="<?php echo $template->url ?>/apple_touch_icon.png" />
<meta name='yandex-verification' content='5ce3924672b838ff' />
<meta name="cmsmagazine" content="fb628f3d20f491dbd1427a74b3197d19" />
<meta name="google-site-verification" content="dQUgVM_BabFgUhU2myzqiRnBBMmz442_3yj-watSTos" />
 <script>
    $(function() {
        $( "#accordion1" ).accordion({
            heightStyle: "content",
            active: "false",
            collapsible: "true"
        });
    });
    $(function(){
        $("#ui-accordion-accordion1-header-4").remove();   
    });
</script>

<script type="text/javascript">
    var _gaq = _gaq || [];
    _gaq.push(['_setAccount', 'UA-27215134-1']);
    var OpenStatParser = {
        _params: {},
        _parsed: false,
        _decode64: function(data) {
            if (typeof window['atob'] === 'function') {
                return atob(data);
            }

            var b64 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
            var o1, o2, o3, h1, h2, h3, h4, bits, i = 0,
                    ac = 0,
                    dec = "",
                    tmp_arr = [];

            if (!data) {
                return data;
            }

            data += '';

            do {
                h1 = b64.indexOf(data.charAt(i++));
                h2 = b64.indexOf(data.charAt(i++));
                h3 = b64.indexOf(data.charAt(i++));
                h4 = b64.indexOf(data.charAt(i++));

                bits = h1 << 18 | h2 << 12 | h3 << 6 | h4;

                o1 = bits >> 16 & 0xff;
                o2 = bits >> 8 & 0xff;
                o3 = bits & 0xff;

                if (h3 == 64) {
                    tmp_arr[ac++] = String.fromCharCode(o1);
                } else if (h4 == 64) {
                    tmp_arr[ac++] = String.fromCharCode(o1, o2);
                } else {
                    tmp_arr[ac++] = String.fromCharCode(o1, o2, o3);
                }
            } while (i < data.length);

            dec = tmp_arr.join('');

            return dec;
        },
        _parse: function() {
            var prmstr = window.location.search.substr(1);
            var prmarr = prmstr.split('&');
            this._params = {};

            for (var i = 0; i < prmarr.length; i++) {
                var tmparr = prmarr[i].split('=');
                this._params[tmparr[0]] = tmparr[1];
            }

            this._parsed = true;
        },
        hasMarker: function() {
            if (!this._parsed) {
                this._parse();
            }
            return (typeof this._params['_openstat'] !== 'undefined')? true : false;
        },
        buildCampaignParams: function() {
            if (!this.hasMarker()) {
                return false;
            }
            var openstat = this._decode64(this._params['_openstat']);
            var statarr = openstat.split(';');
            return 'utm_campaign=' + statarr[3] + '&utm_source=' + statarr[0] + '&utm_medium=cpc&utm_content=' + statarr[2];
        }
    }
    if (OpenStatParser.hasMarker()) {
        var campaignParams = OpenStatParser.buildCampaignParams();
        if (campaignParams !== false) {
            _gaq.push(['_set', 'campaignParams', campaignParams]);
        }
    }
    _gaq.push(['_addOrganic', 'images.yandex.ru', 'text']);
    _gaq.push(['_addOrganic', 'blogs.yandex.ru', 'text']);
    _gaq.push(['_addOrganic', 'video.yandex.ru', 'text']);
    _gaq.push(['_addOrganic', 'yandex.ru', 'query']);
    _gaq.push(['_addOrganic', 'go.mail.ru', 'q']);
    _gaq.push(['_addOrganic', 'mail.ru', 'q']);
    _gaq.push(['_addOrganic', 'images.google.ru', 'q']);
    _gaq.push(['_addOrganic', 'maps.google.ru', 'q']);
    _gaq.push(['_addOrganic', 'google.com.ua', 'q']);
    _gaq.push(['_addOrganic', 'rambler.ru', 'words']);
    _gaq.push(['_addOrganic', 'nova.rambler.ru', 'query']);
    _gaq.push(['_addOrganic', 'nova.rambler.ru', 'words']);
    _gaq.push(['_addOrganic', 'gogo.ru', 'q']);
    _gaq.push(['_addOrganic', 'nigma.ru', 's']);
    _gaq.push(['_addOrganic', 'search.qip.ru', 'query']);
    _gaq.push(['_addOrganic', 'webalta.ru', 'q']);
    _gaq.push(['_addOrganic', 'sm.aport.ru', 'r']);
    _gaq.push(['_addOrganic', 'meta.ua', 'q']);
    _gaq.push(['_addOrganic', 'search.bigmir.net', 'z']);
    _gaq.push(['_addOrganic', 'search.i.ua', 'q']);
    _gaq.push(['_addOrganic', 'index.online.ua', 'q']);
    _gaq.push(['_addOrganic', 'web20.a.ua', 'query']);
    _gaq.push(['_addOrganic', 'search.ukr.net', 'q']);
    _gaq.push(['_addOrganic', 'search.ukr.net', 'search_query']);
    _gaq.push(['_addOrganic', 'search.com.ua', 'q']);
    _gaq.push(['_addOrganic', 'search.ua', 'q']);
    _gaq.push(['_addOrganic', 'poisk.ru', 'text']);
    _gaq.push(['_addOrganic', 'go.km.ru', 'sq']);
    _gaq.push(['_addOrganic', 'liveinternet.ru', 'ask']);
    _gaq.push(['_addOrganic', 'gde.ru', 'keywords']);
    _gaq.push(['_addOrganic', 'affiliates.quintura.com', 'request']);
    _gaq.push(['_addOrganic', 'akavita.by', 'z']);
    _gaq.push(['_addOrganic', 'search.tut.by', 'query']);
    _gaq.push(['_addOrganic', 'all.by', 'query']);
    _gaq.push(['_trackPageview']);

    (function() {
        var ga = document.createElement('script');
        ga.type = 'text/javascript';
        ga.async = true;
        ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
        var s = document.getElementsByTagName('script')[0];
        s.parentNode.insertBefore(ga, s);
    })();
</script>
<script type="text/javascript">
$(document).ready(function() {
jQuery.noConflict();
jQuery(".fancybox").fancybox({
maxWidth : 600,
maxHeight : 400,
fitToView : false,
width : '70%',
height : '70%',
autoSize : false,
closeClick : false,
openEffect : 'none',
closeEffect : 'none'
});
});
</script>

</head>

<body id="page" class="yoopage <?php echo $this->params->get('columns'); ?> <?php echo $this->params->get('itemcolor'); ?> <?php echo $this->params->get('toolscolor'); ?>">

<?php if($this->countModules('absolute')) : ?>
<div id="absolute">
<jdoc:include type="yoomodules" name="absolute" />
</div>
<?php endif; ?>
<div id="page-body">
<div class="page-body-img">
<div class="wrapper">

<div id="header">

<div id="toolbar">

<?php if($this->params->get('date')) : ?>
<div id="date">
<div class="module mod-toolbar"><div class="box-1"><div class="box-2"><div class="box-3 deepest">
<?php echo JHTML::_('date', 'now', JText::_('DATE_FORMAT_LC'))?>
</div></div></div></div>
</div>
<?php endif; ?>

<?php if($this->countModules('toolbarleft')) : ?>
<div class="left">
<jdoc:include type="yoomodules" name="toolbarleft" style="yoo" />
</div>
<?php endif; ?>

<?php if($this->countModules('toolbarright')) : ?>
<div class="right">
<jdoc:include type="yoomodules" name="toolbarright" style="yoo" />
</div>
<?php endif; ?>

</div>


<div id="headerbar">

<?php if($this->countModules('headerleft')) : ?>
<div class="left">
<jdoc:include type="yoomodules" name="headerleft" style="yoo" />
</div>
<?php endif; ?>

<?php if($this->countModules('headerright')) : ?>
<div class="right">
<jdoc:include type="yoomodules" name="headerright" style="yoo" />
</div>
<?php endif; ?>

</div>



<?php if($this->countModules('logo')) { ?>
                                            <?php $front = & JSite::getMenu(); ?>
                                            <div id="logo">
                                                <?php if ($front->getActive() == $front->getDefault()) : ?>
                                                    <jdoc:include type="yoomodules" name="logo" />
                                                <?php else : ?>
                                                    <a href="/"><jdoc:include type="yoomodules" name="logo" /></a>   
                                                <?php endif ?>
                                            </div>
                                        <?php } ?>

<?php if ($this->countModules('banner')) : ?>
<div id="banner">
<jdoc:include type="yoomodules" name="banner" />
</div>
<?php endif; ?>

</div>
<!-- header end -->


<?php if ($this->countModules('top + topblock')) : ?>
<div id="top">

<?php if($this->countModules('topblock')) : ?>
<div class="topblock width100 float-left">
<jdoc:include type="yoomodules" name="topblock" style="yoo" />
</div>
<?php endif; ?>

<?php if ($this->countModules('top')) : ?>
<jdoc:include type="yoomodules" name="top" wrapper="topbox float-left" layout="<?php echo $this->params->get('top'); ?>" style="yoo" />
<?php endif; ?>

</div>
<!-- top end -->
<?php endif; ?>

<div class="menubar">

<?php if($this->countModules('menu')) : ?>
<div id="menu">

</div>
<?php endif; ?>

<?php if($this->countModules('search')) : ?>
<div id="search" class="<?php if($this->countModules('left + right')) echo "sidebar-search"; ?>">

</div>
<?php endif; ?>

<div class="content-wrapper-t1">
<div class="content-wrapper-t2">
<div class="content-wrapper-t3"></div>
</div>
</div>

</div>

<div class="content-wrapper-1">
<div class="content-wrapper-2">
<div class="content-wrapper-3">
<div class="content-wrapper-4">

<div id="middle">
<div id="middle-expand">

<div id="main">
<div id="main-shift">

<?php if ($this->countModules('breadcrumbs')) : ?>
<div id="breadcrumbs">
<jdoc:include type="yoomodules" name="breadcrumbs" />
</div>
<?php endif; ?>


<div id="maintop">
                                                                                                    <div class="clear"></div>
                                                                                                    <?php if ($this->countModules('maintop + maintopblock')) : ?><?php endif; ?>
</div>
<!-- maintop end -->


<div class="component-bg floatbox <?php if (!$this->countModules('mainbottom + mainbottomblock')) echo "last"; ?>">
<jdoc:include type="message" />
<jdoc:include type="component" />

</div>

<?php if ($this->countModules('mainbottom + mainbottomblock')) : ?>
                                                                                                <div id="mainbottom">

<?php if ($this->countModules('mainbottom')) : ?>

<?php endif; ?>

<?php if($this->countModules('mainbottomblock')) : ?>
<div class="mainbottomblock width100 float-left">
<jdoc:include type="yoomodules" name="mainbottomblock" style="yoo" />
</div>
<?php endif; ?>

</div>
<!-- maintop end -->
<?php endif; ?>

</div>
</div>

<?php if($this->countModules('left')) : ?>
<div id="left" class="sidebar">
<jdoc:include type="yoomodules" name="left" style="yoo" />
</div>
<?php endif; ?>

<?php if($this->countModules('right')) : ?>
<div id="right" class="sidebar">
<jdoc:include type="yoomodules" name="right" style="yoo" />
</div>
<?php endif; ?>

</div>
</div>

</div>
</div>
</div>
</div>

<div class="content-wrapper-b1">
<div class="content-wrapper-b2">
<div class="content-wrapper-b3"></div>
</div>
</div>

</div>
</div>
</div>


<div id="page-footer">

<p><a class="fancybox" href="#form1"><img width="280" height="60" border="0" src="/images/stories/f_4e393bc47e0083333.png"></img></a></p>
<div id="form1" style="display:none">
<form class="forms" method="post" name="form" action="file.php">
    <p>Имя:<br/><input name="name" size="40" type="text"/></p>
    <p>Фамилия:<br/><input name="nickname" size="40" type="text"/></p>
    <p>Текст:<br/><textarea name="text" cols="50" rows="20"></textarea></p>
    <input name="submit" class="button" type="submit"/>
    </form>
</div>
<div class="wrapper">

<?php if ($this->countModules('bottom + bottomblock')) : ?>
<div id="bottom">

<?php if ($this->countModules('bottom')) : ?>
<jdoc:include type="yoomodules" name="bottom" wrapper="bottombox float-left" layout="<?php echo $this->params->get('bottom'); ?>" style="yoo" />
<?php endif; ?>

<?php if($this->countModules('bottomblock')) : ?>
<div class="bottomblock width100 float-left">
<jdoc:include type="yoomodules" name="bottomblock" style="yoo" />
</div>
<?php endif; ?>

</div>
<!-- bottom end -->
<?php endif; ?>

<?php if ($this->countModules('footer + debug')) : ?>
<div id="footer">

<a class="anchor" href="#page"></a>
<jdoc:include type="yoomodules" name="footer" />
<jdoc:include type="yoomodules" name="debug" />

</div>
<!-- footer end -->
<?php endif; ?>

</div>
</div>
<noindex>

<!-- Yandex.Metrika counter -->
<script type="text/javascript">
(function (d, w, c) {
    (w[c] = w[c] || []).push(function() {
        try {
            w.yaCounter20888581 = new Ya.Metrika({id:20888581,
                    clickmap:true,
                    trackLinks:true,
                    accurateTrackBounce:true});
        } catch(e) { }
    });

    var n = d.getElementsByTagName("script")[0],
        s = d.createElement("script"),
        f = function () { n.parentNode.insertBefore(s, n); };
    s.type = "text/javascript";
    s.async = true;
    s.src = (d.location.protocol == "https:" ? "https:" : "http:") + "//mc.yandex.ru/metrika/watch.js";

    if (w.opera == "[object Opera]") {
        d.addEventListener("DOMContentLoaded", f, false);
    } else { f(); }
})(document, window, "yandex_metrika_callbacks");
</script>
<noscript><div><img src="//mc.yandex.ru/watch/20888581" style="position:absolute; left:-9999px;" alt="" /></div></noscript>
<!-- /Yandex.Metrika counter -->


<!--LiveInternet counter--><script type="text/javascript"><!--
document.write("<a href='http://www.liveinternet.ru/click' "+
"target=_blank><img src='//counter.yadro.ru/hit?t42.6;r"+
escape(document.referrer)+((typeof(screen)=="undefined")?"":
";s"+screen.width+"*"+screen.height+"*"+(screen.colorDepth?
screen.colorDepth:screen.pixelDepth))+";u"+escape(document.URL)+
";"+Math.random()+
"' alt='' title='LiveInternet' "+
"border='0' width='1' height='1'><\/a>")
//--></script><!--/LiveInternet-->



</noindex>
  <div align="center">

 
</body>
</html>
*

beliyadm

  • Легенда
  • 9758
  • 1665 / 66
  • Севастополь, Россия
1 - у вас минимум 2 раза грузится jquery
2 - строка JHTML::_('behavior.mootools'); в шаблоне не нужна
3 - все равно будут конфликты, потому что noConflict нужно объявлять сразу после загрузки библиотеки jquery и до вызова любых плагинов этой библиотеки
дальше не стал смотрел
Информации достаточно, погуглите минут 30 и все станет на свои места
Все истины, которые я хочу вам изложить, — бесстыдная ложь. Сделать всё хорошо
TLG: @Beliyadm
*

Fedor Vlasenko

  • Живу я здесь
  • 3845
  • 733 / 7
  • https://fedor-vlasenko.web.app
$doc   = JFactory::getDocument(); - эта строка лишняя для шаблона класс уже определен в $this
$tplurl = '/templates/'.$this->template;
----------------------------------------------------------------------------------------------------------------------
Код: javascript
<script>
    (function() {
     $("#ui-accordion-accordion1-header-4").remove();
        $( "#accordion1" ).accordion({
            heightStyle: "content",
            active: "false",
            collapsible: "true"
        });
    })(jQuery);
</script>
*

Luckas147

  • Новичок
  • 8
  • 0 / 0
помучался еще день, оказалось что для корректной работы на Joomla 1.5.22 требуется версия fancybox не выше 1.3.4, требующая jquery 1.4.4
Код
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js"></script>
<script type="text/javascript" src="http://lang-tutor.com/templates/yoo_studio/fancybox/jquery.fancybox-1.3.4.pack.js"></script>
<link rel="stylesheet" type="text/css" href="http://lang-tutor.com/templates/yoo_studio/fancybox/jquery.fancybox-1.3.4.css" media="screen" />
обнаружил конфликт меню-аккордеона работающего на jquery 1.9.1 и не совместимого с fancybox на jquery 1.4.4 работает либо то либо то, теперь придется писать с нуля меню( всем спасибо за советы
*

Luckas147

  • Новичок
  • 8
  • 0 / 0
Подскажите пожалуйста еще PHP код вывода jforms с определенным id в шаблон, я хочу его в fancybox вывести
*

Luckas147

  • Новичок
  • 8
  • 0 / 0
пытаюсь совместить PHP отправки емайл и JavaScript проверки на заполненность полей
Код
<?php


function complete_mail() {
        // $_POST['title'] содержит данные из поля "Тема", trim() - убираем все лишние пробелы и переносы строк, htmlspecialchars() - преобразует специальные символы в HTML сущности, будем считать для того, чтобы простейшие попытки взломать наш сайт обломались, ну и  substr($_POST['title'], 0, 1000) - урезаем текст до 1000 символов. Для переменных $_POST['mess'], $_POST['name'], $_POST['tel'], $_POST['email'] все аналогично
        $_POST['name'] =  substr(htmlspecialchars(trim($_POST['name'])), 0, 30);
$_POST['email'] =  substr(htmlspecialchars(trim($_POST['email'])), 0, 40);
$_POST['skype'] =  substr(htmlspecialchars(trim($_POST['skype'])), 0, 30);
$_POST['lang'] =  substr(htmlspecialchars($_POST['lang']), 0, 100);
$_POST['level'] =  substr(htmlspecialchars(trim($_POST['level'])), 0, 100);
$_POST['time'] =  substr(htmlspecialchars(trim($_POST['time'])), 0, 30);
        $_POST['mess'] =  substr(htmlspecialchars(trim($_POST['mess'])), 0, 10000);
 
        // создаем наше сообщение
        $mess = '
Имя отправителя:'.$_POST['name'].'
Контактный email:'.$_POST['email'].'
Контактный skype:'.$_POST['skype'].'
Интересующий язык:'.$_POST['lang'].'
Текущий уровень знаний языка:'.$_POST['level'].'
Удобное время занятий мск:'.$_POST['time'].'
'.$_POST['mess'];
        // $to - кому отправляем
        $to = 'luckas167@yandex.ru';
        // $from - от кого
        $from = 'site@lang-tutor.com';
$subject = 'сообщение с сайта lang-tutor.com';
        mail($to, $subject, $mess, "From:".$from);
}

if (!empty($_POST['submit'])) complete_mail();
?>
Код
<script type="text/javascript">
$(document).ready(function() {
    $(".various").fancybox({
    'scrolling' : 'no',
'height'        : '450',
'width'         : '450',
    'titleShow' : false,
    'onClosed' : function() {
        $("#login_error1").hide();
$("#login_error2").hide();
    }
    });
});
</script>
<script type="text/javascript">
$(document).ready(function() {
    $("#jform").bind("submit", function() {

    if ($("#email).val().length < 1) {
        $("#login_error1").show();
        $.fancybox.resize();
        return false;
    }
        if ($("#mess").val().length < 1) {
        $("#login_error2").show();
        $.fancybox.resize();
        return false;
    }


return false;
    });
});
</script>
вот код формы на всякий
Код
<div style="display: none;">
<form id="jform" action="" method="post">
<h2 style="text-align:center">Форма заявки</h2>
<p class="forma">Вы можете отправить заявку на обучение через <strong>форму ниже</strong>. Мы стараемся обработать и ответить на все ваши заявки в кротчайшее время. Напоминаем вам что <strong>первый урок бесплатен.</strong></p>

<div class="field">
    <label class='jftextbox' style='width:197px;height:22px;'>Ваше имя</label>
    <input name="name" type='text' maxlength='50' class='jftextbox' value='' style='width:202px;height:16px;' />
</div>

<div class="field">
    <label class='jftextbox' style='width:197px;height:26px;'>E-mail<span class="required" style="color:red"> * </span></label>
    <input name="email" id="email" type='text' maxlength='50' class='jftextbox' value='' style='width:202px;height:16px;' />
<p id="login_error1" style="display:none">Введите email</p>
</div>

<div class="field">
    <label class='jftextbox' style='width:197px;height:23px;'>Ваш логин в skype </label>
    <input name="skype" type='text' maxlength='50' class='jftextbox' value='' style='width:202px;height:16px;' />
</div>

<div class="field">
    <label class='jflist' style='width:197px;height:22px;'>Меня интересует язык<span class="required" style="color:red"> * </span></label>
    <select name="lang" class='jflist' style='width:202px;'>
<option value='выбирите язык' selected="selected">выбирите язык</option>
<option value='английский' >английский</option>
<option value='арабский' >арабский</option>
<option value='болгарский' >болгарский</option>
<option value='греческий' >греческий</option>
<option value='испанский' >испанский</option>
<option value='итальянский ' >итальянский </option>
<option value='китайский' >китайский</option>
<option value='корейский' >корейский</option>
<option value='латинский ' >латинский </option>
<option value='монгольский' >монгольский</option>
<option value='немецкий ' >немецкий </option>
<option value='норвежский' >норвежский</option>
<option value='польский ' >польский </option>
<option value='португальский ' >португальский </option>
<option value='русский' >русский</option>
<option value='финский' >финский</option>
<option value='французский ' >французский </option>
<option value='шведский ' >шведский </option>
<option value='японский' >японский</option>
    </select>
</div>

<div class="field">
    <label class='jflist' style='width:197px;height:22px;'>Мой уровень сейчас</label>
    <select name="level" class='jflist' style='width:202px;'>
<option value='выбирите уровень' selected="selected">выбирите уровень</option>
<option value='Нулевой-начальный' >Нулевой-начальный</option>
<option value='Базовый (читаю, что-то понимаю, мало говорю)' >Базовый (читаю, что-то понимаю, мало говорю)</option>
<option value='Средний (все понимаю, говорю, но много ошибок)' >Средний (все понимаю, говорю, но много ошибок)</option>
<option value='Продвинутый (много знаю, хочу разобраться в тонкостях)' >Продвинутый (много знаю, хочу разобраться в тонкостях)</option>
    </select>
</div>

<div class="field">
    <label class='jflist' style='width:197px;height:22px;'>Удобное время занятий (московское время)</label>
    <select name="time" class='jflist' style='width:202px;'>
<option value='Любое' selected="selected">Любое</option>
<option value='Утро (7-12)' >Утро (7-12)</option>
<option value='День (12-16)' >День (12-16)</option>
<option value='Вечер (16-21)' >Вечер (16-21)</option>
<option value='Другое' >Другое</option>
    </select>
</div>

<div class="field message">
    <label class='jftextarea' style='width:197px;height:22px'>Ваше сообщение<span class="required" style="color:red"> * </span></label>
    <textarea id="mess" name="mess" rows='0' cols='0' class='jftextarea' style='width:202px;height:100px;'></textarea>
<p id="login_error2" style="display:none">Введите сообщение</p>
</div>

<input class='jfbutton' name="submit" type='submit' value='Отправить' />

</div>
</div>
подскажите что делаю не так, ява не робит, PHP робит, читал где-то что это делается по событию onClick
*

Luckas147

  • Новичок
  • 8
  • 0 / 0
Получилось, вот коды кому надо
Код
<?php


function complete_mail() {
        // $_POST['title'] содержит данные из поля "Тема", trim() - убираем все лишние пробелы и переносы строк, htmlspecialchars() - преобразует специальные символы в HTML сущности, будем считать для того, чтобы простейшие попытки взломать наш сайт обломались, ну и  substr($_POST['title'], 0, 1000) - урезаем текст до 1000 символов. Для переменных $_POST['mess'], $_POST['name'], $_POST['tel'], $_POST['email'] все аналогично
        $_POST['name'] =  substr(htmlspecialchars(trim($_POST['name'])), 0, 30);
$_POST['email'] =  substr(htmlspecialchars(trim($_POST['email'])), 0, 40);
$_POST['skype'] =  substr(htmlspecialchars(trim($_POST['skype'])), 0, 30);
$_POST['lang'] =  substr(htmlspecialchars($_POST['lang']), 0, 100);
$_POST['level'] =  substr(htmlspecialchars(trim($_POST['level'])), 0, 100);
$_POST['time'] =  substr(htmlspecialchars(trim($_POST['time'])), 0, 30);
        $_POST['mess'] =  substr(htmlspecialchars(trim($_POST['mess'])), 0, 10000);
 
        // создаем наше сообщение
        $mess = '
Имя отправителя:'.$_POST['name'].'
Контактный email:'.$_POST['email'].'
Контактный skype:'.$_POST['skype'].'
Интересующий язык:'.$_POST['lang'].'
Текущий уровень знаний языка:'.$_POST['level'].'
Удобное время занятий мск:'.$_POST['time'].'
'.$_POST['mess'];
        // $to - кому отправляем
        $to = 'luckas167@yandex.ru';
        // $from - от кого
        $from = 'site@lang-tutor.com';
$subject = 'сообщение с сайта lang-tutor.com';
        mail($to, $subject, $mess, "From:".$from);
}

if (!empty($_POST['submit'])) complete_mail();
?>
Код
<script type="text/javascript">
$(document).ready(function() {
    $("#jform").bind("submit", function() {

        if ($("#email").val().length < 1) {
            $("#login_error1").show();
            $.fancybox.resize();
            return false;
        }
            if ($("#mess").val().length < 1) {
            $("#login_error2").show();
            $.fancybox.resize();
            return false;
        }
    });
});
</script>
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Проблемы с входом на сайт

Автор belovpaha

Ответов: 7
Просмотров: 4821
Последний ответ 20.09.2022, 14:30:51
от sivers
Проблемы с правами на запись папок "logs и tmp"

Автор murich

Ответов: 42
Просмотров: 29031
Последний ответ 07.10.2021, 18:29:16
от Maxandrey
Где хранится и где искать что написали в обратной связи ?

Автор Lzrv

Ответов: 0
Просмотров: 1443
Последний ответ 04.12.2017, 21:17:14
от Lzrv
Как проверить форму обратной связи [Решено]

Автор mafiozzzza

Ответов: 8
Просмотров: 6910
Последний ответ 30.05.2017, 11:34:11
от darkghost
Как в Joomla создать форму обратной связки со своими полями?

Автор citizenfour

Ответов: 7
Просмотров: 1801
Последний ответ 28.09.2016, 21:42:13
от vipiusss