Новости Joomla

SW JProjects v.2.6.0 - компонент каталога расширений для Joomla

👩‍💻 SW JProjects v.2.6.0 - компонент каталога расширений для Joomla.Компонент позволяет сделать свой мини-Joomla Extensions Directory - каталог расширений для CMS (не только для Joomla) или файлов. Есть возможность скачивания по лицензионным ключам.👩‍💻 v.2.6.0. Что нового?Этот релиз прежде всего связан с SEO и AI-оптимизацией. - Микроразметка Schema.org.Добавлен плагин микроразметки Schema.org для сущностей компонента. Для списков используется ListItem, для страницы проекта и версии - SoftwareApplication, для страницы документации - TechArticle. Плагин группы schemaorg в отличие от стандартных плагинов заполняет данные автоматически, но встраивает данные в граф сущностей микроразметки Joomla. Также исправляется одна ошибка генерируемой ядром микроразметки в зоне ответственности компонента.- Улучшение поиска по ключам. В панели администратора в списке ключей теперь можно искать по номеру заказа, email, домену, содержимому примечания к ключу.- Список ключей в админке. В списке ключей в панели администратора добавлен вывод домена и примечания- Поиск в списке проектов. Поиск в списке проектов в панели администратора стал более точным. Из полей для поиска убраны лишние поля.Компонент работает на Joomla 6 без включённого плагина обратной совместимости.Страница расширения и скачатьGitHub расширения.Joomla Extensions Directory#joomla #расширения

Человек на GitHub ускорил Joomla в 600 раз на объёме 150к+ материалов в 1700+ категориях

Человек на GitHub ускорил Joomla в 600 раз на объёме 150к+ материалов в 1700+ категориях

👩‍💻 Человек на GitHub ускорил Joomla в 600 раз на объёме 150к+ материалов в 1700+ категориях. На старте его сайт на Joomla 3 вообще не смог обновиться на Joomla 5. Пришлось делать экспорт/импорт материалов. Проделав всё это он запустил-таки этот объём данных на Joomla 5. Тестовый скрипт грузил 200 материалов из этого объёма всего за 94 секунды ))) А главная страница с категориями грузилась 20 секунд. Добавив индекс для таблицы #__content

CREATE INDEX idx_catid_state ON #__content (catid, state);
он сократил время загрузки категорий до 1 секунды. Затем наш герой решил поковырять SQL-запрос в ArticleModel, который отвечает за выборку материалов. И решил заменить тип JOIN на STRAIGHT_JOIN для категорий.
// ->from($db->quoteName('#__content', 'a'))->from(    $db->quoteName('#__content', 'a')    . ' STRAIGHT_JOIN ' . $db->quoteName('#__categories', 'c')    . ' ON ' . $db->quoteName('c.id') . ' = ' . $db->quoteName('a.catid'))// ->join('LEFT', $db->quoteName('#__categories', 'c'), $db->quoteName('c.id') . ' = ' . $db->quoteName('a.catid'))
Что сократило загрузку 200 материалов из 150к с 94 секунд до 5. К слову сказать, боевой сайт на Joomla 3 крутится на 12CPU 64GB рамы. А все манипуляции с кодом он делает на базовом 1CPU 1GB сервере и замеры скорости даны именно для базового сервера. Но это всё в дискуссии, хотя в идеале должно вылиться в Pull Requests. Мы - Open Source сообщество, где никто никому ничего не должен. Джунгли. Но человек ищет пути оптимизации Joomla и предлагает решения. Если оказать поддержку и предложить помощь хотя бы с тестированием самых разнообразных сценариев, то возможно эти улучшения смогут войти в ядро. Пусть не быстро, пусть через несколько лет, пусть не все, но войдут. Достаточно предложить руку помощи и приложить немного усилий.
Дискуссию на GitHub можно почитать здесь.@joomlafeed#joomla #community #php

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

Fedor Vlasenko

  • Живу я здесь
  • 3845
  • 733 / 7
  • https://fedor-vlasenko.web.app
Уважаемые господа! Хочу отметить, что есть прекрасный раздел для условий Различные условия в шаблонах Joomla 1.5
Предлагаю вам универсальное решение
И так при включенном SEF, чтобы узнать не SEF ссылку достаточно в шаблоне написать
Код: php-brief
<?php echo $_SERVER["HTTP_HOST"].'/index.php?' . http_build_query($_REQUEST); ?>
выведет не SEF ссылку.
Предлагаю вам воспользоватся функцией showPage, которая даст вам легко, без использования api Joomla, контролировать вывод на разных страницах того или иного элемента. Функция должна быть объявлена выше ее применения.
Функция возвращает два значения. True или false (разрешено или запрещено)

Код: php-brief
function showPage($x = array()){
    return array_intersect_assoc($x,  $_REQUEST) === $x;
}

Как видите, код достаточно прост. Единственный аргумент функции, это массив параметров которые нужно сравнить. Присутствуют ли они в адресе вашей страницы (не SEF ссылке). Анализируя ссылки ваших страниц вы легко можете задать ваши условия.
Пару примеров:
Спойлер
[свернуть]
Еще пример решения использования фильтров php. Создаем условие для блога категории компонента com_content
Спойлер
[свернуть]
JRequest - будет удален. И если вышеприведенное решение не помогает, смотрите для ознакомления
JInput
Фильтрация данных
*

artel-st

  • Захожу иногда
  • 350
  • 37 / 1
Спасибо, +, добавил в закладки
"Жираф - это лошадь, выполненная по всем требованиям заказчика" (с) кто-то из дизайнеров
*

streelok

  • Захожу иногда
  • 331
  • 0 / 6
я использовал вот такую запись

<?php if(showPage(array('Itemid'=>'101'))): $index="_index"; endif;?>


а можно написать к примеру на старницах Itemid 101, 102, 105 использовать $index="_index  а например на какких то других определенных использовать $page="page"  наприсал как пример...если да то подскажите пожалуйста как это правильно записать
*

Fedor Vlasenko

  • Живу я здесь
  • 3845
  • 733 / 7
  • https://fedor-vlasenko.web.app
Код: php-brief
// создаем массив с нужными значениями
$arr = Array(101, 102, 105);
// с помощью Jinput получаем значение Itemid текущей страницы
//$Itemid = JFactory::getApplication()->input->getInt('Itemid', 0);
// а лучше встроенных фильтров php
$Itemid = filter_input(INPUT_GET, 'Itemid', FILTER_VALIDATE_INT);
// проверяем находится значение $Itemid в массиве $arr
if(in_array($Itemid, $arr )):
echo 'Да'; // Мы на этой странице
else:
echo 'Нет'; // Itemid страницы не находится  в массиве $arr
endif;
*

streelok

  • Захожу иногда
  • 331
  • 0 / 6
спасибо большое! но зачем усложнять с различными созданием масивов и разными функциями?

в стврой версии исмользовалось
$Itemid = JRequest::getInt( 'Itemid', 1, 'get' );

а я щас смотрю по вашему коду на замену пришкл код
$Itemid = JFactory::getApplication()->input->getInt('Itemid', 0);

потом просто работать с условиями обычными $Itemid   .... нет же ни какой разницы? это я щас спрашиваю как у длюдей разбирающихся в этом все хорошо а не для того чтобы поумничать)))
*

Fedor Vlasenko

  • Живу я здесь
  • 3845
  • 733 / 7
  • https://fedor-vlasenko.web.app
но зачем усложнять с различными созданием масивов и разными функциями?
можешь и так писать, это личное дело, но величина кода будет увеличиваться, гораздо короче создать массив и в нем перебирать значения
// Используем switch-case
Код: php-brief
switch ($Itemid) {
case 101:
    echo "101 - id меню";
    break;
case 102:
    echo "102 - id меню";
    break;
case 105:
    echo "105 - id меню";
    break;
default:
    echo "остальные меню";
}
*

Kalipso

  • Захожу иногда
  • 89
  • 0 / 1
Подскажите, пожалуйста, как в Joomla 2.5 задать такое условие: в материалах определённой категории (по id) для всех групп, кроме одной (по id) выводить некое сообщение?
*

Fedor Vlasenko

  • Живу я здесь
  • 3845
  • 733 / 7
  • https://fedor-vlasenko.web.app
для всех групп, кроме одной (по id) выводить некое сообщение?
а с не авторизованными, что будем делать?
*

Kalipso

  • Захожу иногда
  • 89
  • 0 / 1
а с не авторизованными, что будем делать?
На сайте есть:
1. неавторизованные
2. авторизованные "родители" (это новая группа)
3. авторизованные не "родители"


Сообщение не должно быть видно только "родителям". Остальным - не "родителям" и всем неавторизованным - должно быть видно сообщение "Чтобы принять участие в обсуждении, становитесь родителями" :). Сообщение должно выводиться в материалах из определённой категории.
« Последнее редактирование: 21.02.2014, 09:58:59 от Kalipso »
*

Fedor Vlasenko

  • Живу я здесь
  • 3845
  • 733 / 7
  • https://fedor-vlasenko.web.app
Решение
Код: php-brief
<?php 
function showPage($x = array()){
    return array_intersect_assoc($x,  $_REQUEST) == $x;
}
//группа пользователей которой не показываем - 8, номер категории материалов19
if(showPage(array('option'=>'com_content', 'view'=>'article', 'catid'=>'19')) &&
!in_array(8, JFactory::getUser()->getAuthorisedGroups())):?>
<span>"Чтобы принять участие в обсуждении, становитесь родителями"</span>
<?php endif;?>
*

Kalipso

  • Захожу иногда
  • 89
  • 0 / 1
Решение...
Отлично, благодарствую!
*

waterfly

  • Захожу иногда
  • 83
  • 0 / 0
Добрый вечер. Подскажите пожалуйста. В шаблоне компонента вывожу модуль таким образом:
Код
<?php $modules =JModuleHelper::getModules('user-review-item'); foreach ($modules as $module){ echo JModuleHelper::renderModule($module);} ?>
Как составить условие для вывода другого модуля если первый оказался пустой?
*

Fedor Vlasenko

  • Живу я здесь
  • 3845
  • 733 / 7
  • https://fedor-vlasenko.web.app
Здесь вы выводите не модуль, а модули в позиции user-review-item
Пожалуйста, приводите код к удобочитаемому виду.
Так лучше
Код: php-brief
$modules = JModuleHelper::getModules('user-review-item');
$html = "";
foreach ($modules as $module) {
    $html .= JModuleHelper::renderModule($module);
}
if ($html == ""):
    echo "Пусто";
else:
    echo $html;
endif;
метод 
echo JFactory::getDocument()->countModules('user-review-item');
выведет вам количество модулей в позиции
в шаблоне можно
$this->countModules('user-review-item');
посмотрите здесь как выводить один модуль
Несколько модулей в одной статье
Примерно как  то
Код: php-brief
$html = "";
$module = JModuleHelper::getModule('mod_banners');
$html =  JModuleHelper::renderModule($module);
if(!$html):
    $module = JModuleHelper::getModule('mod_custom');
    $html =  JModuleHelper::renderModule($module);
endif;
echo $html;
*

koyot777

  • Захожу иногда
  • 136
  • 1 / 2
  • Не щекочи койота..
Всем привет! подскажите как можно в шаблоне сделать ссылку "вход" и "выход" отображающуюся только гостям или зарег пользователям?
для дж1.5 вроде есть ответ а вот на дж2.5 не смог найти. заранее благодарен за помощь.
*

verstalshik

  • Завсегдатай
  • 1754
  • 95 / 1
Главную определяю так, где-то нарыл, работает четко!
Т.е. что такое главная? это та стр, которая назначена как ДЕФАУЛТная!
Правим файл index.php, на примере шаблона протостар:

1 ШАГ
Спойлер
[свернуть]

2 ШАГ
Спойлер
[свернуть]

ВСЁ!
❶ НЕ СПРАВЛЯЕШЬСЯ САМ???  Поможем тут...  ❷ Калькулятор доставки - ЗАКАЖИ!!!...  ❸ Каталог компаний - ЖМИ!!!...  ❹ НОВИЧКИ! ВСЕ сюда! Первая консультация БЕСПЛАТНО!!
*

Fedor Vlasenko

  • Живу я здесь
  • 3845
  • 733 / 7
  • https://fedor-vlasenko.web.app
*

dron

  • Завсегдатай
  • 1581
  • 16 / 10
Друзья, день добрый! прошу помощи. использовал ваш код для джумшопинга:

<?php if(showPage(array('option'=>'com_jshopping')) && !showPage(array('controller'=>'product'))):?>
На всех страницах магазина кроме продуктов
<?php endif;?>

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

Заранее спасибо!
*

Fedor Vlasenko

  • Живу я здесь
  • 3845
  • 733 / 7
  • https://fedor-vlasenko.web.app
Страница продукта так должна определятся
Код: php-brief
<?php if(showPage(array('option'=>'com_jshopping', 'controller'=>'product'))):?>
<div class="left">Страница продукта левый блок</div>
<?php endif; ?>
Может еще эта тема чем то поможет в поиске решения
Ширина модулей в зависимости от количества опубликованных позиций (Решение)
*

oleg_v

  • Осваиваюсь на форуме
  • 15
  • 0 / 0
Здравствуйте подскажите как для определенной категории материалов (например id9) добавить к классу class="articles" класс colums (class="articles colums)

<div class="articles<?php if  ?  { echo ' colums';} ?>">

Спасибо.
*

Fedor Vlasenko

  • Живу я здесь
  • 3845
  • 733 / 7
  • https://fedor-vlasenko.web.app
Примерно так
Код: php-brief
<?
$input = JFactory::getApplication()->input;
$option   = $input->getCmd('option', '');
$catid = $input->getInt('catid', '');
$cls = 'articles';
if($option == 'com_content' && $catid == 9){
$cls .= ' colums';
}
?>
Код: html4strict
<div class="<?=$cls;?>">
*

oleg_v

  • Осваиваюсь на форуме
  • 15
  • 0 / 0
Примерно так
Код: php-brief
<?
$input = JFactory::getApplication()->input;
$option   = $input->getCmd('option', '');
$catid = $input->getInt('catid', '');
$cls = 'articles';
if($option == 'com_content' && $catid == 9){
$cls .= ' colums';
}
?>
Код: html4strict
<div class="<?=$cls;?>">

очень благодарен!
*

midav

  • Давно я тут
  • 926
  • 115 / 1
Код: php
$Itemid = filter_input(INPUT_GET, 'Itemid', FILTER_VALIDATE_INT);
Если использовать в шаблоне, возвращает NULL . Поскольку массив $_GET пустой . А в $_REQUEST переменные Itemid, option, view и т.д. есть . Почему так ?
Ответы на вопросы по CSS . Откройте для себя Firebug
*

Fedor Vlasenko

  • Живу я здесь
  • 3845
  • 733 / 7
  • https://fedor-vlasenko.web.app
в $_REQUEST заносятся данные не только с $_GET а также $_POST
кроме того эти массивы глобальные и может какой то код заносит туда свои значения после в массив
INPUT_GET берет данные из GET запроса
*

midav

  • Давно я тут
  • 926
  • 115 / 1
Это понятно . POST тоже пустой .

Я к тому, что вот эта конструкция, с помощью фильтров php , не срабатывает в Joomla 3 . По крайней мере у меня на тестовом сайте .
Код: php
// с помощью Jinput получаем значение Itemid текущей страницы
//$Itemid = JFactory::getApplication()->input->getInt('Itemid', 0);
// а лучше встроенных фильтров php
$Itemid = filter_input(INPUT_GET, 'Itemid', FILTER_VALIDATE_INT);
Ответы на вопросы по CSS . Откройте для себя Firebug
*

fsv

  • Живу я здесь
  • 2782
  • 411 / 2
Я к тому, что вот эта конструкция, с помощью фильтров php , не срабатывает в Joomla 3 .
Код: php
$Itemid = $_GET['Itemid'] ? $_GET['Itemid'] : '';
if( $Itemid ){
    $Itemid = filter_var($Itemid, FILTER_SANITIZE_NUMBER_INT);
}
Веб-разработка: заказ. Только новая разработка.
*

Fedor Vlasenko

  • Живу я здесь
  • 3845
  • 733 / 7
  • https://fedor-vlasenko.web.app
Код: php-brief
$Itemid = isset($_REQUEST['Itemid'])? $_REQUEST['Itemid']: NULL;
if( $Itemid ){
    $Itemid = filter_var($Itemid, FILTER_SANITIZE_NUMBER_INT);
}
а так
*

midav

  • Давно я тут
  • 926
  • 115 / 1
Код: php
$Itemid = $_GET['Itemid'] ? $_GET['Itemid'] : '';
if( $Itemid ){
    $Itemid = filter_var($Itemid, FILTER_SANITIZE_NUMBER_INT);
}

Смысл этой конструкции ? Она не получит значение переменной, потому  что в $_GET этой переменной нет .
Надо получать значение напрямую из $_REQUEST или с помощью родного класса Joomla JInput .

А пишу я всё это вот по этому поводу :
Код
// с помощью Jinput получаем значение Itemid текущей страницы
//$Itemid = JFactory::getApplication()->input->getInt('Itemid', 0);
// а лучше встроенных фильтров php
$Itemid = filter_input(INPUT_GET, 'Itemid', FILTER_VALIDATE_INT);
Ответы на вопросы по CSS . Откройте для себя Firebug
*

midav

  • Давно я тут
  • 926
  • 115 / 1
Код: php-brief
$Itemid = isset($_REQUEST['Itemid'])? $_REQUEST['Itemid']: NULL;
if( $Itemid ){
    $Itemid = filter_var($Itemid, FILTER_SANITIZE_NUMBER_INT);
}
а так

Так конечно всё будет .  ^-^ Только в чём выгода по сравнению с JInput ?
Ответы на вопросы по CSS . Откройте для себя Firebug
*

Fedor Vlasenko

  • Живу я здесь
  • 3845
  • 733 / 7
  • https://fedor-vlasenko.web.app
скорость само собой. Ты используешь встроенные средства языка. Хочу отметить, что ранее Jinput не обрабатывал должным образом ссылки.
Программистам легче привыкнуть к одним функциям, значит еще переносимость кода под другие cms
*

SolopoV

  • Давно я тут
  • 576
  • 16 / 0
  • зеленею...
Попался кривенький компонент, но что бы код не переписывать, нашел лазейку для нормального функционирования.

Вопрос в следующем:

Имеем .php файл в админке компонента, часть кода в этом файле:

Код
}
return JURI::root().'cache/'.$cacheFile;
}

Мне необходимо вывести строчку по условию:

Если для фронта сайта, то строка неизменна:
Код
return JURI::root().'cache/'.$cacheFile;

Если для админки, то строка другая должна быть:
Код
return JURI::root().'administrator/cache/'.$cacheFile;

Как определить условие вывода для админки и для фронта?

Заранее благодарю за совет, кто знает каким образом это сделать.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Шаблоны Joomlart, Gavick, Yootheme, RocketTheme для Joomla: легально и с обновлениями, no warez

Автор _ib_

Ответов: 168
Просмотров: 207996
Последний ответ 15.04.2023, 18:26:50
от AS1969
Где в Joomla 3.4.3 шаблон материала? Шаблон Yootheme Organic

Автор annushka

Ответов: 13
Просмотров: 5863
Последний ответ 13.09.2022, 11:14:56
от tuztref
Master3 – современный удобный гибкий шаблон для Joomla! 3 на фреймворке UIkit 3

Автор dron

Ответов: 81
Просмотров: 10999
Последний ответ 11.09.2021, 03:12:59
от vasileк
Как убрать tooltip в регистрации в Joomla 3?

Автор KoloS

Ответов: 13
Просмотров: 8622
Последний ответ 24.08.2021, 19:00:51
от coolplaymaster
Сменить текст placeholder в поле поиска Joomla 3.x

Автор Poincare

Ответов: 7
Просмотров: 2282
Последний ответ 09.06.2021, 15:39:26
от Akeksandr