Новости 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 Гость просматривают эту тему.
  • 10 Ответов
  • 2229 Просмотров
*

M1tt

  • Новичок
  • 8
  • 0 / 0
Проблема с выводом script
« : 15.08.2013, 10:45:24 »
Прежде всего хочу сказать, что в программировании я практически полный ноль. Так общие сведения и не более. Поэтому прошу "помидорами не закидывать" если пишу что-то совсем нелепое и неправильное.

Есть сайт на Joomla 2.5. Шаблон сделанный в Arteester 4.0. Знаю, что косяков там много, но уже ничего не поделаешь. Проблема такого рода. При вставке тегов script в любой материал на сайте они автоматически перемещаются в head. Получается, что любая контекстная реклама выводиться не в тексте статьи, а в самом верху странички. Пример такого безобразия http://www.vse-dlya-detey.ru/shkolnye-uchebniki/matematika/628-olimpiada-po-matematike-4-klass.html.

Если же код со скриптом вставлять в других блоках сайта (левый сайдбар, футер), то все нормально и они выводятся там где положено.

Помогите пожалуйста разобраться в чем проблема.

Файл index.php этого шаблона

Код
<?php
defined('_JEXEC') or die;

/**
 * Template for Joomla! CMS, created with Artisteer.
 * See readme.txt for more details on how to use the template.
 */

require_once dirname(__FILE__). DIRECTORY_SEPARATOR . 'functions.php';

// Create alias for $this object reference:
$document = $this;

// Shortcut for template base url:
$templateUrl = $document->baseurl . '/templates/' . $document->template;

Artx::load("Artx_Page");

// Initialize $view:
$view = $this->artx = new ArtxPage($this);

// Decorate component with Artisteer style:
$view->componentWrapper();

JHtml::_('behavior.framework', true);

?>
<!DOCTYPE html>
<html dir="ltr" lang="<?php echo $document->language; ?>">
<head>
    <jdoc:include type="head" />
    <link rel="stylesheet" href="<?php echo $document->baseurl; ?>/templates/system/css/system.css" />
    <link rel="stylesheet" href="<?php echo $document->baseurl; ?>/templates/system/css/general.css" />

    <!-- Created by Artisteer v4.1.0.59688 -->
    
    
    <meta name="viewport" content="initial-scale = 1.0, maximum-scale = 1.0, user-scalable = no, width = device-width">

    <!--[if lt IE 9]><script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script><![endif]-->
    <link rel="stylesheet" href="<?php echo $templateUrl; ?>/css/template.css" media="screen">
    <!--[if lte IE 7]><link rel="stylesheet" href="<?php echo $templateUrl; ?>/css/template.ie7.css" media="screen" /><![endif]-->
    <link rel="stylesheet" href="<?php echo $templateUrl; ?>/css/template.responsive.css" media="all">

<link rel="shortcut icon" href="favicon.ico" type="image/x-icon">
    <script>if ('undefined' != typeof jQuery) document._artxJQueryBackup = jQuery;</script>
    <script src="<?php echo $templateUrl; ?>/jquery.js"></script>
    <script>jQuery.noConflict();</script>

    <script src="<?php echo $templateUrl; ?>/script.js"></script>
    <?php $view->includeInlineScripts()?>
    <script>if (document._artxJQueryBackup) jQuery = document._artxJQueryBackup;</script>
    <script src="<?php echo $templateUrl; ?>/script.responsive.js"></script>
</head>
<body>

<div id="main">
    <div class="sheet clearfix">
<header class="header clearfix"><?php echo $view->position('header', 'nostyle'); ?>


    <div class="shapes">
<p class="headline" data-left="12.15%">
    <a href="<?php echo $document->baseurl; ?>/"><?php echo $this->params->get('siteTitle'); ?></a>
</p>
<p class="slogan" data-left="12.15%"><?php echo $this->params->get('siteSlogan'); ?></p>



            </div>

                
                    
</header>
<?php echo $view->position('banner1', 'nostyle'); ?>
<?php echo $view->positions(array('top1' => 33, 'top2' => 33, 'top3' => 34), 'block'); ?>
<div class="layout-wrapper clearfix">
                <div class="content-layout">
                    <div class="content-layout-row">
                        <?php if ($view->containsModules('left')) : ?>
<div class="layout-cell sidebar1 clearfix">
<?php echo $view->position('left', 'block'); ?>




                        </div>
<?php endif; ?>
                        <div class="layout-cell content clearfix">
<?php
  echo $view->position('banner2', 'nostyle');
  if ($view->containsModules('breadcrumb'))
    echo artxPost($view->position('breadcrumb'));
  echo $view->positions(array('user1' => 50, 'user2' => 50), 'article');
  echo $view->position('banner3', 'nostyle');
  echo artxPost(array('content' => '<jdoc:include type="message" />', 'classes' => ' messages'));
  echo '<jdoc:include type="component" />';
  echo $view->position('banner4', 'nostyle');
  echo $view->positions(array('user4' => 50, 'user5' => 50), 'article');
  echo $view->position('banner5', 'nostyle');
?>



                        </div>
                        <?php if ($view->containsModules('right')) : ?>
<div class="layout-cell sidebar2 clearfix">
<?php echo $view->position('right', 'block'); ?>


                        </div>
<?php endif; ?>
                    </div>
                </div>
            </div>
<?php echo $view->positions(array('bottom1' => 33, 'bottom2' => 33, 'bottom3' => 34), 'block'); ?>
<?php echo $view->position('banner6', 'nostyle'); ?>

<footer class="footer clearfix">
<?php if ($view->containsModules('copyright')) : ?>
    <?php echo $view->position('copyright', 'nostyle'); ?>
<?php else: ?>
<a title="RSS" class="rss-tag-icon" style="position: absolute; bottom: 5px; left: 6px; line-height: 32px;" href="#"></a><div style="position:relative;padding-left:10px;padding-right:10px"><p><br></p></div>
<?php endif; ?>
</footer>

    </div>
</div>



<?php echo $view->position('debug'); ?></body>
</html>
*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
Re: Проблема с выводом script
« Ответ #1 : 15.08.2013, 11:20:40 »
Незнаком с Artisteer, но попробуйте найти в ее коде, где формируется блок head (что-то вроде head.php) и добавить условие вывода js script: запретить addScript для материала, например.
Это первое, что пришло в голову, а не решение.
« Последнее редактирование: 15.08.2013, 12:23:45 от robert »
Не будь паразитом, сделай что-нибудь самостоятельно!
*

M1tt

  • Новичок
  • 8
  • 0 / 0
Re: Проблема с выводом script
« Ответ #2 : 15.08.2013, 11:52:51 »
Путем "тыка и удаления" выяснил что дело скорее всего в строке

Код
<?php $view->includeInlineScripts()?>

Но найти какую то информацию об Include Inline Scripts на русском пока не удалось. При удалении этой строки скрипт в материале вообще нигде не выводится.
*

M1tt

  • Новичок
  • 8
  • 0 / 0
Re: Проблема с выводом script
« Ответ #3 : 15.08.2013, 12:46:23 »
Вообщем порылся в коде файлов и в файле Page.php нашел такие строки

Код
private function parseInlineScripts($matches) {
        ArtxPage::$inlineScripts[] = $matches[0];
        return "";
    }
   
    public function includeInlineScripts() {
        foreach(ArtxPage::$inlineScripts as $script)
            echo $script;

И ниже

Код
Wraps component content into article style unless it is not already wrapped.
     *
     * The componentWrapper method gets the content of the 'component' buffer and searches for the '<div class="post">' string in it.
     * Then it wraps the content of the buffer with the post.
     */
    public function componentWrapper()
    {
        if ($this->page->getType()!= 'html')
            return;
        $option = JRequest::getCmd('option');
        $view = JRequest::getCmd('view');
        $layout = JRequest::getCmd('layout');
        $content = $this->page->getBuffer('component');
        // Workarounds for Joomla bugs and inconsistencies:
        switch ($option) {
            case "com_content":
                switch ($view) {
                    case "form":
                        if ("edit" == $layout)
                            $content = str_replace('<button type="button" onclick="', '<button type="button" class="button" onclick="', $content);
                        break;
                    case "article":
                        $content = preg_replace_callback('/<script[^>]*>([\s\S]+?)<\/script>/', array( &$this, 'parseInlineScripts'), $content);
                        break;

Исходя из комментариев на английском понял, что в коде материала ищутся теги script, после код между этими тегами присваивается function includeInlineScripts() и выводиться в шапке сайта. Сделано это для предотвращения возникновения ошибок.

Не подскажите а как это подчистить, чтобы эта операция не выполнялась и при этом не наделать себе неприятностей в будущем.
*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
Re: Проблема с выводом script
« Ответ #4 : 15.08.2013, 13:04:05 »
Попробуйте изменить функцию parseInlineScripts($matches):
Код
private function parseInlineScripts($matches) {
        $option = JRequest::getVar('option');
        if($option!=='com_content'){
          ArtxPage::$inlineScripts[] = $matches[0];
          return "";
        }
    }
Не будь паразитом, сделай что-нибудь самостоятельно!
*

M1tt

  • Новичок
  • 8
  • 0 / 0
Re: Проблема с выводом script
« Ответ #5 : 15.08.2013, 13:27:24 »
Цитировать
Попробуйте изменить функцию parseInlineScripts($matches)
Попробовал. В шапке скрипт не выводиться, но и в материале тоже его нет.
*

M1tt

  • Новичок
  • 8
  • 0 / 0
Re: Проблема с выводом script
« Ответ #6 : 15.08.2013, 13:29:11 »
А можно просто удалить код?

Код
private function parseInlineScripts($matches) {
        ArtxPage::$inlineScripts[] = $matches[0];
        return "";
    }
   
    public function includeInlineScripts() {
        foreach(ArtxPage::$inlineScripts as $script)
            echo $script;

Код
 case "article":
                        $content = preg_replace_callback('/<script[^>]*>([\s\S]+?)<\/script>/', array( &$this, 'parseInlineScripts'), $content);
                        break;

и

Код
 <?php $view->includeInlineScripts()?> 

*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
Re: Проблема с выводом script
« Ответ #7 : 15.08.2013, 13:34:25 »
Попробуйте удалить (закомментировать) этот код
Код
case "article":
                        $content = preg_replace_callback('/<script[^>]*>([\s\S]+?)<\/script>/', array( &$this, 'parseInlineScripts'), $content);
                        break;
Не будь паразитом, сделай что-нибудь самостоятельно!
*

M1tt

  • Новичок
  • 8
  • 0 / 0
Re: Проблема с выводом script
« Ответ #8 : 15.08.2013, 13:38:06 »
Помогло. Спасибо большое.
*

M1tt

  • Новичок
  • 8
  • 0 / 0
Re: Проблема с выводом script
« Ответ #9 : 15.08.2013, 13:40:17 »
Я так понял теперь получается постоянный пустой массив, который просто не отображается?

Код
public static $inlineScripts = array();
(в начале файла переменная пустой массив)



*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
Re: Проблема с выводом script
« Ответ #10 : 15.08.2013, 13:41:52 »
Нет, не выводятся в head только скрипты от com_content.
Не будь паразитом, сделай что-нибудь самостоятельно!
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Проблема с доступом к шаблону сайта

Автор thas

Ответов: 4
Просмотров: 4274
Последний ответ 08.11.2019, 19:55:23
от stendapuss
Проблема с шаблоном

Автор yura.yushkevich

Ответов: 2
Просмотров: 1579
Последний ответ 07.02.2017, 19:14:43
от istraweb
Проблема после переноса шаблон с версии Joomla 1.5 на 2.5

Автор Berkin09

Ответов: 3
Просмотров: 1537
Последний ответ 24.10.2016, 13:08:27
от Berkin09
Проблема с миграцией шаблона Joomla! 1.5 Ja_Purity на Joomla 2.5

Автор Invictus

Ответов: 6
Просмотров: 1907
Последний ответ 16.05.2016, 06:45:27
от Invictus
Проблема отображения шаблона на моб.устройствах

Автор tomas_morgam

Ответов: 1
Просмотров: 1336
Последний ответ 29.04.2016, 11:54:17
от tomas_morgam