Новости Joomla

Свои типы полей в Joomla.Это большая тема, о которой можно говорить очень много

Свои типы полей в Joomla.Это большая тема, о которой можно говорить очень много

👩‍💻 Свои типы полей в Joomla.Это большая тема, о которой можно говорить очень много. Самое главное, что возможности применения ограничиваются только вашей больной фантазией. Вы строите интерфейс своего модуля или плагина и вам нужно подтянуть данные из сторонней системы (список чего-нибудь по какому-нибудь API), чтобы сохранить выбранный id в Joomla. Или сделать какую-то проверку и в зависимости от неё показать то или иное сообщение пользователю. Для этого подойдут свои пользовательские типы полей. Интерфейс Joomla по большей части описан в XML-файлах. У каждого из них свои параметры. Некоторые не описаны в документации (manual.joomla.org), поэтому самым любопытным будет полезно заглянуть в собственно файлы фреймворка по пути

libraries/src/Form/FormField.php, а так же в
libraries/src/Form/Fields. У каждого класса поля перечислены его специфические свойства, которые можно описывать в XML. А в своём типе поля вы можете устанавливать эти значения программно. В моём модуле WT Quick links под капотом происходят изменения. Теперь для работы (в админке) ему нужен вспомогательный плагин. А в самом модуле нам бы проверить, а не выключен ли он? В Joomla есть тип поля Note - заметка. Его можно использовать для вывода примечаний.

<field type="note"     name="your_note_for_user"     label="Заголовок примечания"     title="Альтернативный способ для заголовка"     description="Текст примечания"     class="col-12 alert alert-info"     heading="h1"     close="true"/>
heading - указывать уровень заголовка.
close - позволяет закрыть это примечание. В классе поля
libraries/src/Form/Field/NoteField.php описана логика вывода. И в принципе оно нам подходит для нашей задачи. Но оно будет выводить сообщение всегда, а нам нужно только тогда, когда плагин отключён.Поэтому берём и создаём свой класс поля, который мы унаследуем от
NoteField. Это значит, что у нас в руках будет весь инструментарий стандартного поля
Note + то, что мы сами добавим. В XML-манифест добавляем наше поле
<field type="systempluginstatus"      name="systempluginstatus"     addfieldprefix="Joomla\Module\Wtquicklinks\Site\Fields"/>
-
type - имя файла и класса,-
addfieldprefix - указываем namespace к нашему классу, может быть любой нам нужный-
name - нельзя полю без имени...Это означает, что Joomla будет использовать класс поля из файла
modules/mod_wt_quick_links/src/Fields/SystempluginstatusField.php.А в классе поля будет написано следующее:
<?php// namespace для атрибута addfieldprefixnamespace Joomla\Module\Wtquicklinks\Site\Fields;// нельзя напрямую обращаться к этому файлуdefined('_JEXEC') or die;// подключаем родительский класс для переопределенияuse Joomla\CMS\Form\Field\NoteField;use Joomla\CMS\Language\Text;use Joomla\CMS\Plugin\PluginHelper;// имя класса и имя файла точь-в-точьclass SystempluginstatusField extends NoteField{     protected $type = 'Systempluginstatus';     protected function getLabel()          {               // если плагин не включён               if(PluginHelper::isEnabled('system','wtquicklinks')) {                    // меняем свойства родительского класса                    $this->class = 'alert alert-danger w-100';                    $this->element['label'] = '⚠️ А-а-а-а!';                    $this->element['description'] = 'Плагин не включён!!';                    // и просто рендерим его с нашими свойствами                    return parent::getLabel();               }          // А иначе всё хорошо, скрываем поле из виду.          $this->parentclass = 'd-none';          return '';     }}
Просто и удобно. И людям приятно, что о них позаботились и рассказали почему что-то не работает.@webtolkru#joomla #php #webdev #разработка

Обновлена информация в Плане развития Joomla

👩‍💻 Обновлена информация в Плане развития Joomla.Здесь собрана информация о датах релизов, описаны принципы версионирования, указаны ответственные за релизы, а так же даты окончания поддержки релизов. Опираясь на эту информацию вы можете планировать развитие ваших интернет-проектов.👩‍💻 Что нового?⛔️ Joomla 4.Дата окончания исправления ошибок безопасности в версии 4.x - 14 октября 2025г. ⚠️ После этой даты Joomla 4 прекратит получать какие-либо обновления, в том числе безопасности - вообще. Рекомендуем обновить ваши сайты до актуальной Joomla 5.✅ Joomla 5.- Дата окончания исправления ошибок в версии 5.x - 13 октября 2026г.- Дата окончания исправления ошибок безопасности в версии 5.x - 12 октября 2027 года.- Текущая актуальная (на момент написания заметки) версия - 5.3.1.- Опубликовано расписание выхода релизов Joomla 5.4. Стабильный релиз ожидается 14 октября 2025 года.✅ Joomla 6.- Дата окончания исправления ошибок в версии 6.x - 17 октября 2028г.- Дата окончания исправления ошибок безопасности в версии 6.x - 16 октября 2029г.- Опубликовано расписание выхода релизов Joomla 6.0. Стабильный релиз ожидается 14 октября 2025 года.- Для разработчиков уже доступна Joomla 6.0.0-alpha1.✅ Joomla! Framework.Обновлена информация о Joomla! Framework - полноценном PHP-фреймворке для разработки. Он в версиях 1.х и 2.х был самостоятельным параллельным проектом, однако начиная с версии Joomla 4.0 стал её основой. Добавлена информация о Joomla! Framework 3.x, который вышел 6 октября 2023 года. Его можно использовать в тех случаях, когда вам в проекте не нужна CMS Joomla целиком.Подробнее на сайте Joomla-сообщества Joomlaportal.ru#joomla #community

Компания JetBrains рассказала о своей поддержке Joomla

Компания JetBrains рассказала о своей поддержке Joomla

JetBrains - один из мировых лидеров в разработке программного обеспечения для разработчиков. Её программные продукты - это IDE - профессиональные среды разработки, которые отличаются от простого блокнота/редактора с плагинами набором всевозможных инструментов для разработчиков, глубоким анализом кодовой базы, подсказками по ней и по языку программирования, отладкой ошибок и многим-многим другим. Одним из самых известных продуктов компании является IDE PHP Storm, который можно назвать отраслевым стандартом PHP-разработчика.

В статье How PhpStorm Helps Maintain PHP Open-Source Projects: Interviews and Real-World Examples в блоге компании описываются Open Source проекты, которым JetBrains оказывает поддержку (это могут быть бесплатные лицензии для разработчиков для некоммерческих проектов).

В список попали:

  • PHPUnit - фреймворк для unit-тестирования в PHP
  • Doctrine DBAL - библиотека для PHP, которая предоставляет лёгкий и гибкий слой для коммуникации с базой данных. Она поддерживает различные базы данных через единый и согласованный API.
  • CodeIgniter — популярный MVC-фреймворк для разработки на PHP
  • Joomla! - наша любимая CMS.

Эти названия (кроме "Joomla") чаще всего не слышат вебмастера и разработчики обычных сайтов и интернет-магазинов. Но эти названия хорошо знакомы PHP-разработчикам, которые создают сложные и высоконагруженные проекты и микросервисы. То, что Joomla оказалась в одном ряду с такими программными инструментами - делает ей честь.

🙏 За ссылку спасибо участнику нашего сообщества Ринату Кажетову (@rkazhet).

Подпишитесь на @joomlafeed

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

Valent777

  • Новичок
  • 2
  • 0 / 0
Здравствуйте! Есть магазин на JoomShopping. Подскажите, пожалуйста, как вывести в карточке товара все категории, к которым он принадлежит. И также я не могу найти массив куда JoomShopping заносит все ID этих категорий.

Правки делаю в файле: product_default.php

код - <?php echo $this->category_id ?> выводит только ID текущей категории.

Заранее благодарю!
*

kit2m2

  • Живу я здесь
  • 3345
  • 273 / 0
  • Беру сайты на полное сопровождение
Есть готовый плагин, который выводит все категории товара не только в карточке товара, но и списке товаров. Стоит 2000р. Писать в личку или Скайп.

Спойлер
[свернуть]
« Последнее редактирование: 07.04.2022, 21:01:08 от kit2m2 »
Расширения для JoomShopping | Ссылка на Телеграм-канал | Сайты и магазины под ключ: Дизайн, Верстка, Программирование (расширения на заказ), СЕО-оптимизация, Сопровождение, Перенос на Joomla 4+ (5+) и JoomShopping 5+
*

kit2m2

  • Живу я здесь
  • 3345
  • 273 / 0
  • Беру сайты на полное сопровождение
Если не устраивает готовое решение, то в product_default.php нет информации о всех категориях товара, только о текущей (об одной категории).
В зависимости через какую категорию зашли в товар, та и будет показываться. Вернее только её ID.

Поэтому только запрашивать информацию о всех категориях из базы данных... А потом уже ее выводить в нужном месте шаблона - product_default.php.
Расширения для JoomShopping | Ссылка на Телеграм-канал | Сайты и магазины под ключ: Дизайн, Верстка, Программирование (расширения на заказ), СЕО-оптимизация, Сопровождение, Перенос на Joomla 4+ (5+) и JoomShopping 5+
*

Valent777

  • Новичок
  • 2
  • 0 / 0
Благодарю за варианты! Действительно, в коде этого файла я ничего подобного не нашел в принципе. Но я хочу вызвать искомый массив в этом файле и потом уже работать с ним.
Ну и готовое решение, если его брать, мне все равно нужно будет нужно лишь для того, чтобы увидеть что и откуда вызывается )
*

kit2m2

  • Живу я здесь
  • 3345
  • 273 / 0
  • Беру сайты на полное сопровождение
Но я хочу вызвать искомый массив в этом файле и потом уже работать с ним.
То есть готовое расширение не устраивает?

Тогда это:
... только запрашивать информацию о всех категориях из базы данных... А потом уже ее выводить в нужном месте шаблона - product_default.php.
Расширения для JoomShopping | Ссылка на Телеграм-канал | Сайты и магазины под ключ: Дизайн, Верстка, Программирование (расширения на заказ), СЕО-оптимизация, Сопровождение, Перенос на Joomla 4+ (5+) и JoomShopping 5+
*

kit2m2

  • Живу я здесь
  • 3345
  • 273 / 0
  • Беру сайты на полное сопровождение
Ну и готовое решение, если его брать, мне все равно нужно будет нужно лишь для того, чтобы увидеть что и откуда вызывается )
Готовое расширение, на то и готовое, что поставил, настроил и получил результат, который хотел...  и в код не нужно лезть. Ну может еще стили-css подправил под себя...

А если нужно не только вывести список названий категорий, но еще нужен дополнительный функционал, то свой плагин могу всегда доработать если нужно.
Расширения для JoomShopping | Ссылка на Телеграм-канал | Сайты и магазины под ключ: Дизайн, Верстка, Программирование (расширения на заказ), СЕО-оптимизация, Сопровождение, Перенос на Joomla 4+ (5+) и JoomShopping 5+
*

kit2m2

  • Живу я здесь
  • 3345
  • 273 / 0
  • Беру сайты на полное сопровождение
Доработал свой плагин - «Все категории товара»
Спойлер
[свернуть]
Расширения для JoomShopping | Ссылка на Телеграм-канал | Сайты и магазины под ключ: Дизайн, Верстка, Программирование (расширения на заказ), СЕО-оптимизация, Сопровождение, Перенос на Joomla 4+ (5+) и JoomShopping 5+
*

kit2m2

  • Живу я здесь
  • 3345
  • 273 / 0
  • Беру сайты на полное сопровождение
Еще доработал свой плагин - «Все категории товара»... Добавил дополнительный функционал
Спойлер
[свернуть]
Расширения для JoomShopping | Ссылка на Телеграм-канал | Сайты и магазины под ключ: Дизайн, Верстка, Программирование (расширения на заказ), СЕО-оптимизация, Сопровождение, Перенос на Joomla 4+ (5+) и JoomShopping 5+
*

ВикторПро

  • Новичок
  • 1
  • 0 / 0
*

newalex

  • Захожу иногда
  • 94
  • 5 / 0
Почитал о плагине. Но мне это не подходит. Но есть вопрос как получить название категории в скроллер товаров .
При этом запрос типа
Код
$pcat=$this->product->product_categories;
не проходит. Т.к. в модуле нет объекта this.
*

kit2m2

  • Живу я здесь
  • 3345
  • 273 / 0
  • Беру сайты на полное сопровождение
При этом запрос типа
Код
$pcat=$this->product->product_categories;
не проходит. Т.к. в модуле нет объекта this.
Это не запрос а присвоение! Знак "=" - Это присвоение значения, в данном случае переменной $pcat присвоено значение $this->product->product_categories
Но есть вопрос как получить название категории в скроллер товаров
Встречный вопрос: Зачем в контроллере товаров получать название категории? В контроллере товаров есть ID категории этого достаточно. По ID можно получить название.
Расширения для JoomShopping | Ссылка на Телеграм-канал | Сайты и магазины под ключ: Дизайн, Верстка, Программирование (расширения на заказ), СЕО-оптимизация, Сопровождение, Перенос на Joomla 4+ (5+) и JoomShopping 5+
*

newalex

  • Захожу иногда
  • 94
  • 5 / 0
Вот код как выводиться в слайдере данные для товаров:
Код
<?php
// no direct access
defined('_JEXEC') or die('Restricted access');

$doc = JFactory::getDocument();
$doc->addScript('modules/mod_vina_carousel_jshopping/assets/js/owl.carousel.js', 'text/javascript');
$doc->addStyleSheet('modules/mod_vina_carousel_jshopping/assets/css/owl.carousel.css');
$doc->addStyleSheet('modules/mod_vina_carousel_jshopping/assets/css/owl.theme.css');
?>
<style type="text/css">
#vina-carousel-jshopping<?php echo $module->id; ?> {
width: <?php echo $moduleWidth; ?>;
height: <?php echo $moduleHeight; ?>;
margin: <?php echo $moduleMargin; ?>;
padding: <?php echo $modulePadding; ?>;
<?php echo ($bgImage != '')? "background: url({$bgImage}) repeat scroll 0 0;" : ''; ?>
<?php echo ($isBgColor)? "background-color: {$bgColor};" : '';?>
overflow: hidden;
}
#vina-carousel-jshopping<?php echo $module->id; ?> .item {
<?php echo ($isItemBgColor)? "background-color: {$itemBgColor};" : ""; ?>;
color: <?php echo $itemTextColor; ?>;
padding: <?php echo $itemPadding; ?>;
margin: <?php echo $itemMargin; ?>;
}
#vina-carousel-jshopping<?php echo $module->id; ?> .item a {
color: <?php echo $itemLinkColor; ?>;
}
</style>
<div id="vina-carousel-jshopping<?php echo $module->id; ?>" class="vina-carousel-jshopping owl-carousel">
<?php
foreach($items as $key => $item) :
$pid    = $item->product_id;
$cid    = $item->category_id;
$image = ($item->product_name_image)? $item->product_name_image : $noimage;
$image = $jshopConfig->image_product_live_path . '/' . $image;
$image = ($resizeImage)? $timthumb . "&src=" . $image : $image;
$title = $item->name;
$intro = $item->short_description;
$price = formatprice($item->product_price);
$oprice = formatprice($item->product_old_price);
$link  = $item->product_link;
$buy    = JRoute::_("index.php?option=com_jshopping&controller=cart&task=add&category_id=$cid&product_id=$pid");
$label = $item->_label_image;
$rate  = $item->average_rating;
$count = $item->reviews_count;
?>
<div class="item">
<!-- Image Block -->
<?php if($showImage) : ?>
<div class="image-block">
<a href="<?php echo $link; ?>" title="<?php echo $title; ?>">
<img src="<?php echo $image; ?>" alt="<?php echo $title; ?>" title="<?php echo $title; ?>" />
<?php if($showLabel && $item->label_id): ?>
<div class="plabel">
<?php if($label): ?>
<img src="<?php print $label; ?>" alt="<?php print htmlspecialchars($item->_label_name); ?>" />
<?php else : ?>
<span class="label-name"><?php print $item->_label_name;?></span>
<?php endif; ?>
</div>
<?php endif; ?>
</a>
</div>
<?php endif; ?>

<!-- Text Block -->
<?php if($showTitle || $showIntro || $showPrice) : ?>
<div class="text-block">
<!-- Title Block -->
<?php if($showTitle) :?>
<h3 class="title">
<a href="<?php echo $link; ?>" title="<?php echo $title; ?>"><?php echo $title; ?></a>
</h3>
<?php endif; ?>

<?php if($showRateReview): ?>
<div class="info">
<span class="pull-left"><?php print showMarkStar($rate); ?></span>
<span class="pull-right"><?php print sprintf(_JSHOP_X_COMENTAR, $count);?></span>
</div>
<?php endif; ?>

<!-- Intro text Block -->
<?php if($showIntro && !empty($intro)) : ?>
<div class="introtext"><?php echo $intro; ?></div>
<?php endif; ?>

<!-- Price/add to cart Block -->
<?php if($showPrice) : ?>
<div class="price-block">
<strong><?php echo JTEXT::_('Price'); ?>:</strong> <span><?php if($item->product_old_price > 0): ?><i><?php echo $oprice; ?></i> <?php endif; ?><?php echo $price; ?></span>

<a class="addtocart pull-right" href="<?php echo $buy; ?>" title="<?php echo $title; ?>">
<?php echo JText::_('VINA_ADD2CART'); ?>
</a>
</div>
<?php endif; ?>
</div>
<?php endif; ?>
</div>
<?php endforeach; ?>
</div>
<script type="text/javascript">
jQuery(document).ready(function($) {
$("#vina-carousel-jshopping<?php echo $module->id; ?>").owlCarousel({
items : <?php echo $itemsVisible; ?>,
        itemsDesktop : <?php echo $itemsDesktop; ?>,
        itemsDesktopSmall : <?php echo $itemsDesktopSmall; ?>,
        itemsTablet : <?php echo $itemsTablet; ?>,
        itemsTabletSmall : <?php echo $itemsTabletSmall; ?>,
        itemsMobile : <?php echo $itemsMobile; ?>,
        singleItem : <?php echo ($singleItem)? 'true' : 'false'; ?>,
        itemsScaleUp : <?php echo ($itemsScaleUp)? 'true' : 'false'; ?>,

        slideSpeed : <?php echo $slideSpeed; ?>,
        paginationSpeed : <?php echo $paginationSpeed; ?>,
        rewindSpeed : <?php echo $rewindSpeed; ?>,

        autoPlay : <?php echo ($autoPlay)? 'true' : 'false'; ?>,
        stopOnHover : <?php echo ($stopOnHover)? 'true' : 'false'; ?>,

        navigation : <?php echo ($navigation)? 'true' : 'false'; ?>,
        rewindNav : <?php echo ($rewindNav)? 'true' : 'false'; ?>,
        scrollPerPage : <?php echo ($scrollPerPage)? 'true' : 'false'; ?>,

        pagination : <?php echo ($pagination)? 'true' : 'false'; ?>,
        paginationNumbers : <?php echo ($paginationNumbers)? 'true' : 'false'; ?>,

        responsive : <?php echo ($responsive)? 'true' : 'false'; ?>,
        autoHeight : <?php echo ($autoHeight)? 'true' : 'false'; ?>,
        mouseDrag : <?php echo ($mouseDrag)? 'true' : 'false'; ?>,
        touchDrag : <?php echo ($touchDrag)? 'true' : 'false'; ?>,
});
});
</script>
Не могу понять как вывести еще и имя или даже имена категориий к которым принадлежит конкретный товар. Хотя ID категории есть.  Есть ли у вас идея? Это модуль от mod_vina_carousel_jshopping. Могу прислать и сам модуль.
*

kit2m2

  • Живу я здесь
  • 3345
  • 273 / 0
  • Беру сайты на полное сопровождение
Не могу понять как вывести еще и имя или даже имена категорий к которым принадлежит конкретный товар. Хотя ID категории есть.
Если есть ID категории товара, то название нужно получать запросом в базу данных. Чтобы получить ID всех категорий товара, нужно также делать запрос в базу, модуле скорее всего только одна категория (первая).
Это модуль от mod_vina_carousel_jshopping. Могу прислать и сам модуль.
Модуль присылать не нужно, он платный, вот разработчик - https://vinagecko.com/joomla-modules/item/100-product-carousel-for-jshopping

Если хотите сделать заказ на доработку модуля, пишите в скайп.
Расширения для JoomShopping | Ссылка на Телеграм-канал | Сайты и магазины под ключ: Дизайн, Верстка, Программирование (расширения на заказ), СЕО-оптимизация, Сопровождение, Перенос на Joomla 4+ (5+) и JoomShopping 5+
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Конфликт js шаблонов JoomShaper helix3 J5 с JoomShopping 5

Автор heartlink

Ответов: 5
Просмотров: 705
Последний ответ 08.05.2025, 18:35:51
от victorantoniak
[Решено] Сбросить счётчик ID товаров JoomShopping

Автор goga_pgasovav

Ответов: 3
Просмотров: 774
Последний ответ 13.02.2025, 00:11:20
от goga_pgasovav
WT On fly image handler изображения товара JoomShopping в webp на лету

Автор sergeytolkachyov

Ответов: 13
Просмотров: 3487
Последний ответ 29.01.2025, 20:38:38
от sergeytolkachyov
JShopping 5: отображение всех подкатегорий

Автор Napst3r

Ответов: 2
Просмотров: 646
Последний ответ 10.01.2025, 14:54:21
от Napst3r
Плагин обновления цен и остатков товаров JoomShopping из CSV

Автор sergeytolkachyov

Ответов: 0
Просмотров: 1012
Последний ответ 24.12.2024, 14:50:42
от sergeytolkachyov