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

Crackyn

  • Новичок
  • 4
  • 0 / 0
Помогите сделать такую штуку как увеличение изображения при наведении курсора вот пример:
http://www.alibaba.com/product-detail/2014-Wholesale-assorted-floating-charms-for_1665116655.html?tracelog=hp_gs_pic2

Только данная функция должна работать в тизер выводе каталога.
Нашел плагин "magiczoom"
 www.magictoolbox.com/magiczoom/modules/joomla/ пытался его прикрутить не получаеться.

Нашел пример кода http://codepen.io/anon/pen/uFikx
пытался и его прикрутить часть в файле: my_site\media\zoo\applications\product\templates\my_templates\renderer\item\teaser.php

Код
<?php if ($this->checkPosition('media')) : ?>
<div class="pos-media <?php echo 'media-'.$view->params->get('template.items_media_alignment'); ?>">
<div class="magnify"><div class="large"></div>
<?php echo $this->renderPosition('media'); ?>
</div>
</div>
<?php endif; ?>

CSS и js добавил как полагается в index.php

Появилась ошибка в JS
 
Код
Uncaught TypeError: Property '$' of object [object Object] is not a function hover.js:1 (anonymous function)

А вот класс к изображению не знаю как назначить:
Код
<img class="small" src="http://thecodeplayer.com/uploads/media/iphone.jpg" width="200"/>

</div>



Может кто то знает способ как сделать данную функцию
*

Grigory S.

  • Давно я тут
  • 658
  • 70 / 0
  • (с)
Код: php
jQuery(document).ready(function(){
                 jQuery('div.magnify').find('img').addClass('small');
});
Не задав правильный вопрос, невозможно получить правильный ответ.
Для "спасибок" существует кнопочка "+".
*

Crackyn

  • Новичок
  • 4
  • 0 / 0
Спасибо класс добавлен но теперь другая проблема




Первую строчку поменял на
Код
jQuery(document).ready(function(){

ошибка вылезла в этой строчке
Код
$(".large").css("background","url('" + $(".small").attr("src") + "') no-repeat");

Привожу весь код

Код
jQuery(document).ready(function(){

var native_width = 0;
var native_height = 0;
  $(".large").css("background","url('" + $(".small").attr("src") + "') no-repeat");

//Now the mousemove function
$(".magnify").mousemove(function(e){
//When the user hovers on the image, the script will first calculate
//the native dimensions if they don't exist. Only after the native dimensions
//are available, the script will show the zoomed version.
if(!native_width && !native_height)
{
//This will create a new image object with the same image as that in .small
//We cannot directly get the dimensions from .small because of the
//width specified to 200px in the HTML. To get the actual dimensions we have
//created this image object.
var image_object = new Image();
image_object.src = $(".small").attr("src");

//This code is wrapped in the .load function which is important.
//width and height of the object would return 0 if accessed before
//the image gets loaded.
native_width = image_object.width;
native_height = image_object.height;
}
else
{
//x/y coordinates of the mouse
//This is the position of .magnify with respect to the document.
var magnify_offset = $(this).offset();
//We will deduct the positions of .magnify from the mouse positions with
//respect to the document to get the mouse positions with respect to the
//container(.magnify)
var mx = e.pageX - magnify_offset.left;
var my = e.pageY - magnify_offset.top;

//Finally the code to fade out the glass if the mouse is outside the container
if(mx < $(this).width() && my < $(this).height() && mx > 0 && my > 0)
{
$(".large").fadeIn(100);
}
else
{
$(".large").fadeOut(100);
}
if($(".large").is(":visible"))
{
//The background position of .large will be changed according to the position
//of the mouse over the .small image. So we will get the ratio of the pixel
//under the mouse pointer with respect to the image and use that to position the
//large image inside the magnifying glass
var rx = Math.round(mx/$(".small").width()*native_width - $(".large").width()/2)*-1;
var ry = Math.round(my/$(".small").height()*native_height - $(".large").height()/2)*-1;
var bgp = rx + "px " + ry + "px";

//Time to move the magnifying glass with the mouse
var px = mx - $(".large").width()/2;
var py = my - $(".large").height()/2;
//Now the glass moves with the mouse
//The logic is to deduct half of the glass's width and height from the
//mouse coordinates to place it with its center at the mouse coordinates

//If you hover on the image now, you should see the magnifying glass in action
$(".large").css({left: px, top: py, backgroundPosition: bgp});
}
}
})
})


Что исправить.
*

Grigory S.

  • Давно я тут
  • 658
  • 70 / 0
  • (с)
Попробуйте весь код заменить на
Код: php
$(document).ready(function(){
    $('.magnify').find('img').addClass('small');
var native_width = 0;
var native_height = 0;
    $('.large').css('background','url('' + $('.small').attr('src') + '') no-repeat');
$('.magnify').mousemove(function(e){
if(!native_width && !native_height){
var image_object = new Image();
image_object.src = $('.small').attr('src');
native_width = image_object.width;
native_height = image_object.height;
}
else{
var magnify_offset = $(this).offset();
var mx = e.pageX - magnify_offset.left;
var my = e.pageY - magnify_offset.top;
if(mx < $(this).width() && my < $(this).height() && mx > 0 && my > 0){
$('.large').fadeIn(100);
}
else{
$('.large').fadeOut(100);
}
if($('.large').is(':visible')){
var rx = Math.round(mx/$('.small').width()*native_width - $('.large').width()/2)*-1;
var ry = Math.round(my/$('.small').height()*native_height - $('.large').height()/2)*-1;
var bgp = rx + 'px ' + ry + 'px';
var px = mx - $('.large').width()/2;
var py = my - $('.large').height()/2;
$('.large').css({left: px, top: py, backgroundPosition: bgp});
}
}
});
});
Не задав правильный вопрос, невозможно получить правильный ответ.
Для "спасибок" существует кнопочка "+".
*

Crackyn

  • Новичок
  • 4
  • 0 / 0
То же самое в этом месте:

Код
$('.large').css('background','url('' + $('.small').attr('src') + '') no-repeat');

Uncaught SyntaxError: Unexpected string
*

Siber

  • Захожу иногда
  • 150
  • 9 / 0
$('.large').css('background','url("" + $(".small").attr("src") + "") no-repeat');
*

Grigory S.

  • Давно я тут
  • 658
  • 70 / 0
  • (с)
Упс, вот :)
Код: php
jQuery(document).ready(function(){
        jQuery('.magnify').find('img').addClass('small');
var native_width = 0;
var native_height = 0;
jQuery(".large").css("background","url('" + jQuery(".small").attr("src") + "') no-repeat");
jQuery(".magnify").mousemove(function(e){
if(!native_width && !native_height){
var image_object = new Image();
image_object.src = jQuery(".small").attr("src");
native_width = image_object.width;
native_height = image_object.height;
}
else{
var magnify_offset = jQuery(this).offset();
var mx = e.pageX - magnify_offset.left;
var my = e.pageY - magnify_offset.top;
if(mx < jQuery(this).width() && my < jQuery(this).height() && mx > 0 && my > 0){
jQuery(".large").fadeIn(100);
}
else{
jQuery(".large").fadeOut(100);
}
if(jQuery(".large").is(":visible")){
var rx = Math.round(mx/jQuery(".small").width()*native_width - jQuery(".large").width()/2)*-1;
var ry = Math.round(my/jQuery(".small").height()*native_height - jQuery(".large").height()/2)*-1;
var bgp = rx + "px " + ry + "px";
var px = mx - jQuery(".large").width()/2;
var py = my - jQuery(".large").height()/2;
jQuery(".large").css({left: px, top: py, backgroundPosition: bgp});
}
}
});
});
Не задав правильный вопрос, невозможно получить правильный ответ.
Для "спасибок" существует кнопочка "+".
*

Crackyn

  • Новичок
  • 4
  • 0 / 0
Работает, спасибо, буду еще дорабатывать нюансы.
*

eliseev_s

  • Новичок
  • 1
  • 0 / 0
Может, откапываю старую тему, но у меня задача: как реализовать экранную лупу для нескольких (произвольное количество, от 1 до где-то 10) изображений в каталоге zoo, шаблоне full?

UPD: Всё, разобрался сам. Пришлось перекроить шаблон вывода галереи zoo и втиснуть в него бесплатный elevate zoom (http://www.elevateweb.co.uk/image-zoom/examples)
« Последнее редактирование: 19.10.2015, 05:23:04 от eliseev_s »
*

istraweb

  • Осваиваюсь на форуме
  • 16
  • 0 / 2
Может, откапываю старую тему, но у меня задача: как реализовать экранную лупу для нескольких (произвольное количество, от 1 до где-то 10) изображений в каталоге zoo, шаблоне full?

UPD: Всё, разобрался сам. Пришлось перекроить шаблон вывода галереи zoo и втиснуть в него бесплатный elevate zoom (http://www.elevateweb.co.uk/image-zoom/examples)
Привет! Не подскажите, как вы реализовали для full?
*

istraweb

  • Осваиваюсь на форуме
  • 16
  • 0 / 2
http://www.jacklmoore.com/zoom/
Мне бы инструкцию реализации в Zoo, а то мало разбираюсь в коде, буду признательно благодарен!
« Последнее редактирование: 10.05.2017, 14:12:39 от istraweb »
*

AlekVolsk

  • Гуру
  • 6913
  • 416 / 4
это просто скрипт, подключаете на фронте css/js, для выводимого изображения присваиваете класс, например .zoomImg и дописываете скрипт:
Код: javascript
jQuery(document).ready(function($)
{
  $('img.zoomImg').zoom({magnify:1});
});
о параметрах функции zoom() читайте на сайте разработчика скрипта
*

AlekVolsk

  • Гуру
  • 6913
  • 416 / 4
человеку дал наводку. а мне минус в ответ: "не дал четкого ответа на вопрос"
да с какого перепугу вам кто-то должен вообще давать четкие ответы? я четких ответов вообще никогда не даю: вам указали направление - идите ножками сами, на своих плечах вас никто не понесет, слабо почитать доки к скрипту? нефиг вообще тогда лезть в разработку, не для средних умов тема-то...
*

arma

  • Завсегдатай
  • 1753
  • 81 / 3
Этих доморощенных студий со школьниками пруд пруди развелось. Научились картинки менять в шаблонах и тексты переписывать и то не всегда ("помогите убрать надпись с сайта" - типичный вопрос) и вот уже: "Да у нас лучшая web-студия, да любой сайт для вас..."  Так ещё и не довольны, что не откусили, в рот не положили и не разжевали за них. Бесит. istraweb, постыдились бы.
 
*

Taatshi

  • Гуру
  • 5258
  • 481 / 2
  • Верстаем и кодим. Обращайтесь ;)
Эт штоль вот эта студия? http://istrawebdesign.ru Истра веб дизайн? Не умеют скрипы прикручивать?))) Очередная школота.

Оставлю пост для поиска - вдруг кто уровнем студии заинтересуется...  ^-^
ВЕРСТКА, САЙТЫ ПОД КЛЮЧ, УДАЛЕНИЕ ВИРУСОВ, МИГРАЦИЯ НА JOOMLA 3, ОБНОВЛЕНИЕ  |  ОТЗЫВЫ 
Связь: telegram - Taatshi, почта - Taatshi на яндексе, Skype - Taatshi
*

umbabaraumba

  • Живу я здесь
  • 2415
  • 153 / 1
  • если помог можете поставить +
Эт штоль вот эта студия? http://istrawebdesign.ru Истра веб дизайн? Не умеют скрипы прикручивать?))) Очередная школота.

Оставлю пост для поиска - вдруг кто уровнем студии заинтересуется...  ^-^
Смешной адрес у этой "студии" в контактах
Московская область, Истринский район, п.Глебовский, микр ПФ, вл.9
 ;D
Errare humanum est
Ubuntu по-русски
Пишу не сложные модули и компоненты, не дорого но не срочно
*

Pintea

  • Новичок
  • 5
  • 0 / 0
Эт штоль вот эта студия? http://istrawebdesign.ru Истра веб дизайн? Не умеют скрипы прикручивать?))) Очередная школота.

Оставлю пост для поиска - вдруг кто уровнем студии заинтересуется...  ^-^
*POPCORN* Разве не благодаря таким пользователям ваш сайт стал одним из лучших в помощи управлении сайтом? Так, как они разбирают по крупицам проблемы в коде и вносят свою лепту в новаторство joomlЫ.
*

istraweb

  • Осваиваюсь на форуме
  • 16
  • 0 / 2
 ;D Cмешные люди, за минус в стату закидали помидорами. Кто еще из нас адекват. Я попросил помощи, если у вас нет толкового ответа, то не нужно чатить кусками фраз и строить из себя супер мега программиста.

пы.сы. Я не буду скрывать что я ас в коде. Если бы был знатоком не сидел бы тут изучая новое по джумле.
« Последнее редактирование: 09.09.2017, 12:20:58 от istraweb »
*

stendapuss

  • Давно я тут
  • 945
  • 20 / 0
  • Valera Stankevich
Я + поставил AlekVolsk, чтоб минус компенсировать.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

В новом шаблоне не адаптируется изображение

Автор Ebelous

Ответов: 4
Просмотров: 2175
Последний ответ 13.02.2024, 17:01:12
от Vastriet
Как при наведении изменить сразу два класса CSS?

Автор Kanfur

Ответов: 3
Просмотров: 1633
Последний ответ 03.11.2020, 16:53:43
от Nikolay89
Пауза при наведении на слайдер

Автор Stasweb

Ответов: 12
Просмотров: 1811
Последний ответ 11.12.2019, 10:34:00
от sivers
Выделение строки таблицы при наведении

Автор March Cat

Ответов: 6
Просмотров: 2873
Последний ответ 27.10.2018, 18:27:16
от effrit
Как улучшить качество своего курсора? Коряво получается почему-то

Автор cantsave

Ответов: 5
Просмотров: 1842
Последний ответ 12.10.2018, 09:06:26
от dynamit