Новости 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 для атрибута addfieldprefix
namespace 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 #разработка

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

olesyaisp

  • Новичок
  • 5
  • 0 / 0
Ребят помогите найти ошибку.  Началось все с удаления ошибок при проверке в валидаторе..  где то изменили код в шаблоне..  в Chrome началось черте что. Как описать даже незнаю - не загружается страница до конца -- вернули все на место из резервной..  стало еще хуже . Кто может помочь исправить. отзовитесь  сайт -- ritual-uvao.ru
*

arma

  • Завсегдатай
  • 1753
  • 81 / 3
Да, веселенький сайт. Что-то ошибки не наблюдаю. Почистите у себя кэш в браузере
*

kik84

  • Завсегдатай
  • 1350
  • 64 / 4
да, что-то со стилями неправильно. как может быть такое, что вернули бэкап и баги стали еще хуже?
попробуйте написать хостеру, чтобы дал бэкап, например, за несколько дней до вмешательств в код.
*

olesyaisp

  • Новичок
  • 5
  • 0 / 0
да, что-то со стилями неправильно. как может быть такое, что вернули бэкап и баги стали еще хуже?
попробуйте написать хостеру, чтобы дал бэкап, например, за несколько дней до вмешательств в код.
бекап через ftp  ---  хостер только 2 последних дня..  а мы не сразу заметили.( какие нибудь мысли где искать?

style.css

/**
 * @author  ( Bobrik  )
 * @package Joomla
 * @copyright Copyright (C) 2012 http://site-sbs.ru. All rights reserved.
 */
@font-face {
font-family: 'MP';
    src: url('fonts/myriadprocond.eot');
    src: url('fonts/myriadprocond.eot?#iefix') format('embedded-opentype'),
         url('fonts/myriadprocond.woff') format('woff'),
         url('fonts/myriadprocond.ttf') format('truetype'),
         url('fonts/myriadprocond.svg#MyriadProCondRegular') format('svg');
    font-weight: normal;
    font-style: normal;
}

@font-face {
font-family: MPR; /* Имя шрифта */
src: url(fonts/MyriadPro-Regular.otf); /* Путь к файлу со шрифтом */
}
 @font-face {
 font-family: MP; /* Имя шрифта */
 src: url(fonts/MyriadPro-Cond.otf); /* Путь к файлу со шрифтом */
}
 @font-face {
 font-family: MPS; /* Имя шрифта */
 src: url(fonts/MyriadPro-Semibold.otf); /* Путь к файлу со шрифтом */
}

h2 {
  font-family:"MP", sans-serif;
  font-size:25px;
  color:#666;
  text-align:left;
  padding:5px 0;
}


#sideLeft .moduletableserviceslist h3 {

background:url('images/side-navigation-bg.jpg') no-repeat;
color: #FFFFFF;
font-family: "MP",  sans-serif;
font-size: 25px;
height: 45px;
margin: 20px 0px 10px;
padding: 10px 0px 0px 20px;
width: 187px;
 
}

#sideLeft .menu-serviceslist a{
border-bottom: 1px solid #F0F0F0;
color: #433C3C;
display: inline-block;
font-family: "MP",  sans-serif;;
font-size:20px;
font-weight: 500;
line-height: 33px;
margin: 0px 0px 10px 20px;
text-decoration: none;
width: 160px;
}

#sideLeft  ul li {
list-style-type: none;
}


h3 {

  font-family:"MP", sans-serif;
  font-size:20px;
  color:#666666;
  text-align:left;
  padding:5px 0;
 
}

p {
  font-family:'MP';
  font-size:16px;
  color:#666;
 /* line-height: 18px;*/
  margin:0px 0;
}

/*HEADER*/
.korzina_top {
display: inline-block;
float: right;
margin-left:240px;
font-family: 'MP';
height: 100px;
background: url('images/cart.png') no-repeat;
/*margin-top:-103px;*/
margin: 5px 10px;
 }

.phone {
display: inline-block;
float: right;
font-family: 'MP';
height: 100px;

 }

.korzina_top  {
/*background: url('images/cart.png') no-repeat;*/
}

.korzina_top h3
{

font-size:17px;
font-weight:500;
}


#logo img{
margin:0 0 0 -20px;}
#slider img{border-radius:10px;}
#phone img{margin:0 20px 0 0;
}
#phone p{font-family:"MP", sans-serif;
  font-size:20px;color:#333;}
.korzina_top {
padding-left: 110px;

}
#jshop_module_cart span{font-family:'MP';
  font-size:18px;color:#333;}
#jshop_module_cart a{text-transform: uppercase;text-decoration:none;font-family:'MP', Geneva,Verdana, sans-serif;font-size:12px;padding:0 0 0 65px;}
span.cifra{color:red !important;}
.jshop_quantity_products .cifra{font-size:20px;}

 .nivoSlider, .nivoSlider a.nivo-imageLink {
    border-radius: 10px 10px 10px 10px;
}
.nivoSlider .s0 {
    border-bottom-left-radius: 10px;
    border-top-left-radius: 10px;
}
.nivoSlider .s14, .nivoSlider .pol {
    border-bottom-right-radius: 10px;
    border-top-right-radius: 10px;
}
.nivoSlider .b00 {
    border-top-left-radius: 10px;
}
.nivoSlider .b07 {
    border-top-right-radius: 10px;
}
.nivoSlider .b30 {
    border-bottom-left-radius: 10px;
}
.nivoSlider .b37 {
    border-bottom-right-radius: 10px;
}
.nivoSlider {
    box-shadow: 2px 2px 3px rgba(0, 0, 0, 0.5);
}
 

/*
  LEVEL ONE
*/
ul.menu-dropdown                         { position: relative; list-style:none;z-index:111111;margin:0 0 0 30px;}
ul.menu-dropdown li                      { font-weight: bold; float: left; zoom: 1; padding:11px 0 11px 0;}
ul.menu-dropdown a:hover                { color: #000; }
ul.menu-dropdown a:active                { color: #ffa500; }
ul.menu-dropdown li a                    { display: block; padding: 4px 8px; border-right: 1px inset #fff;
                     color: #fff;text-decoration:none;font-family:"MP", sans-serif;
  font-size:14px; }
ul.menu-dropdown li:last-child a         { border-right: none; } /* Doesn't work in IE */
ul.menu-dropdown li.hover,
ul.menu-dropdown li:hover                {
background-image: linear-gradient(bottom, rgb(0,0,0) 17%, rgb(68,68,68) 59%);
background-image: -o-linear-gradient(bottom, rgb(0,0,0) 17%, rgb(68,68,68) 59%);
background-image: -moz-linear-gradient(bottom, rgb(0,0,0) 17%, rgb(68,68,68) 59%);
background-image: -webkit-linear-gradient(bottom, rgb(0,0,0) 17%, rgb(68,68,68) 59%);
background-image: -ms-linear-gradient(bottom, rgb(0,0,0) 17%, rgb(68,68,68) 59%);
background-image: -webkit-gradient(
  linear,
  left bottom,
  left top,
  color-stop(0.17, rgb(0,0,0)),
  color-stop(0.59, rgb(68,68,68))
); 
 
 
  position: relative;border-left:0;border-right:0; }
ul.menu-dropdown li.hover a              { color: #fff; }


/*
  LEVEL TWO
*/
ul.menu-dropdown ul             { width: 220px; visibility: hidden; position: absolute; top: 100%; left: 0; list-style:none;background:url('images/subnavigation-bg.png') repeat; margin:1px 0 0 0; border-radius:0 10px 10px 10px;box-shadow:0 0 3px #333;padding:10px 0;}
ul.menu-dropdown ul li           { font-weight: normal; color: #fff;
                     float: none; padding:5px 0 5px 10px;}
                   
                                    /* IE 6 & 7 Needs Inline Block */
ul.menu-dropdown ul li a          { border-right: none; width: 100%; display: inline-block;font-family:"MP", sans-serif;
  font-size:14px; }

/*
  LEVEL THREE
*/
ul.menu-dropdown ul ul           { left: 100%; top: 0; }
ul.menu-dropdown li:hover > ul       { visibility: visible; }


/*LEFT*/
#sideLeft .moduletable h3{
font-family:"MP", sans-serif;
font-size:18px; 
width:187px;
height:45px;
margin:20px 0 10px 0;
padding:10px 0 0 20px;
color:#fff;       
background:url('images/side-navigation-bg.jpg') no-repeat;}
#sideLeft .moduletable ul{
list-style:none;
margin:0 0 0 20px;}
#sideLeft .moduletable a{
  font-family:"MP",  sans-serif;
  font-size:20px;
text-decoration:none;
color:#333;}
 /*#sideLeft .moduletable a:hover{
 color: #F23535;}
 #sideLeft .menu-serviceslist a:hover{
  color: #F23535;} */
 #sideLeft a:hover{
  color: #F23535;} 
#sideLeft .moduletable li{
  width:150px;
  margin:0 0 10px 0;
border-bottom:1px solid #eee;}
/*CONTENT*/
.tbl{width:800px;}
.tbl td{text-align:center;}
.tbl a{
  font-family:"MP",  sans-serif;
  font-size:18px;
text-decoration:none;
color:#333;}


/*FOOTER*/


.allnav ul{
  float:left;
list-style:none;
padding:10px 0 0 0;}
.allnav a, .allnav2 a{
text-decoration:none;
font-family:"MP"
  font-size:16pt;
font-weight:500;
color:#949494;}



/*
#foot1,
#foot2,
#foot3,
#foot4{
  width:1030px;
  margin:0 0 0 30px;
float:left;}*/

#foot1{
padding:0 30px;
}
#foot1 .custom
{
width:1030px;
}

#foot1 .footer_div
{
width:200px;
float: left;
}
#foot1 .footer_cen
{
width:200px;
float: left;

}

#foot1 .footer_div1
{
margin-top:12px;
background:url('images/fon_foot.png') no-repeat;
width:500px;
float: left;
}


#foot1 p,#foot2 p {
  font-family:"MP",  sans-serif;
  font-size:16px;
  color:#666;
   margin:5px 0;
}
#foot1 p span a {
text-decoration:none;
  color:#666;
}
#foot1 img,#foot2 img{
margin:0 20px 0 0;
vertical-align: middle;
}
#foot1 span{
padding-bottom: 5px;
display:inline-block;
vertical-align:middle;
}
#copyright{
  margin-left:5px;
  padding:0 20px;
}
#copyright p{font-family:"MP", sans-serif;
  font-size:16px;
  color:#666;}



/*--------------joomla-nav----------------*/
.topmenu{

padding-bottom: 0px;
z-index: 5;position: relative; 
background:url('images/navigation.png') no-repeat;
/*margin-left: 103px;
margin-top: 10px;*/
width: 1024px;
 margin:0px auto 0px;
}

.topmenu .container{
height:57px;
width:1024px;
border: none;
}
.topmenu .menujoomla-nav{background-color: #151413;
margin: 0;padding: 0;overflow: visible;}
.topmenu .menujoomla-nav li a {position:relative;color: #fffcfc; font-family: Arial Narrow, Helvetica, sans-serif;font-size: 18px;font-weight: normal;padding: 10px 21px;margin: 0;}

.topmenu .menujoomla-nav li.focus a,
.topmenu .menujoomla-nav li.hover a,
.topmenu .menujoomla-nav li:focus a,
.topmenu .menujoomla-nav li:hover a,
.topmenu .menujoomla-nav li.hover a,
.topmenu .menujoomla-nav li.active a,
.topmenu .menujoomla-nav li:active a,
.selected a{
/*background: url(../../images/menu_bg.png) 100% 100% repeat-x;*/
color: #fff;

}

.topmenu .menujoomla-nav li {
background:url('images/right.png') 0% no-repeat;
position:relative;
margin: 0 -1px 0 0;

}
.item101{background:none !important;}
.topmenu .menujoomla-nav ul{
position:absolute; /*background-color: #151413;*/top:49px;padding:8px 0; margin:-1px 0 0;display:none; width:100%;
 
border-radius: 0 0 7px 7px; 

    background: -webkit-linear-gradient(top, rgba(242, 9, 5, 0.9), rgba(195, 8, 3, 0.9)); /* Chrome 10+, Safari 5.1+ */
    background: -moz-linear-gradient(top, rgba(242, 9, 5, 0.9), rgba(195, 8, 3, 0.9)); /* Firefox 3.6+ */
    background: -o-linear-gradient(top, rgba(242, 9, 5, 0.9), rgba(195, 8, 3, 0.9)); /* Opera 11.10+ */
    background: -ms-linear-gradient(top, rgba(242, 9, 5, 0.9), rgba(195, 8, 3, 0.9)); /* IE10 */
    background: linear-gradient(top, rgba(242, 9, 5, 0.9), rgba(195, 8, 3, 0.9)); /* CSS3 */




}




.topmenu .menujoomla-nav li:hover ul{display:block;

}
.topmenu .menujoomla-nav ul li{margin: 0px 0;display:block; background:none;width: 100%; }
.topmenu .menujoomla-nav ul li:hover {/*background: url('images/menu1.png') repeat-y;*/


}
 .menujoomla-nav li.item-101:hover li a,
 .menujoomla-nav li.item-101.active li a{

background:none;}
.topmenu .menujoomla-nav ul li a span{margin-left:10px;}
.topmenu .menujoomla-nav ul li a{

margin: 0;
padding:  0;
font-size: 16px;
width: 100%;
background:none;
}
.topmenu .menujoomla-nav ul li a:focus,.topmenu .joomla-nav ul li a:hover{/*background: url(../../images/menu2_bg.png) 100% 100% repeat-x;*/}



.menujoomla-nav {
  background-color:#c3d9ff;
 /* border-top:1px solid #b3c9e4;*/
  /*border-bottom:1px solid #b3c9ef;*/
   /* fixing IE 6 */
  margin:0 0 1.5em 0;
  min-height:auto;
  overflow:auto;
  padding:0.67em 0 0.67em 0;
}
.menujoomla-nav li {

  float:left;
  line-height:1.5;
  list-style-type:none;
  /*margin:0 0.5em 0 0.5em;*/
  padding:0;
}

.menujoomla-nav li.item-101:hover li:hover a,
.menujoomla-nav li.item-101.active ul li:hover a,

.menujoomla-nav li:hover a, .menujoomla-nav li:hover li:hover a,
.menujoomla-nav  li a:hover,.menujoomla-nav li:hover li a:hover,
.menujoomla-nav li.active a
 {
/*border-left: 1px solid red;*/
position: relative;
z-index: 10;
background: url('images/menu1.png') 50% 0 no-repeat;
 /* margin-left:-1px;*/
}

.menujoomla-nav li.item-101:hover a,
.menujoomla-nav  li.item-101 a:hover,
 .menujoomla-nav li.item-101.active a
 {
border:0;
background: url('images/menu1.png') no-repeat;
}

.menujoomla-nav  ul li a:hover {
/*background: url('images/menu2.png')  repeat-x; */
}


.menujoomla-nav li a {
  font-family:"MP",  sans-serif;
  color:#222;
  cursor:pointer;
  display:block;
  float:left;
  font-weight:bold;
  padding:0 .33em 0 .33em;
}
.menujoomla-nav li a.selected {
  color:#555;
  cursor:default;
}
.menujoomla-nav li a
 {
  text-decoration:none;
}
 .joomla-nav li a:focus, .joomla-nav li a:hover {

  text-decoration:none;
}
.menujoomla-nav li a:focus, .joomla-nav li a:hover {

  color:#555;
  outline:none;
}
.menujoomla-nav li.label {
  font-weight:normal;
  line-height:1.5;
  margin-right:1em;
  padding:.15em .33em .15em .33em;
}


#sideLeft  .jshop_menu_level_0,#sideLeft  .jshop_menu_level_0_a {
border-bottom: 1px solid #F0F0F0;
border-right: 0;
line-height: 33px;
font-family: 'Myriad Pro';
font-weight: 500;
color: #433C3C;
font-size: 13px;
width: 100%;
text-decoration: none;
display: block;
margin:0 0 10px 0;
}
#sideLeft .mod_cat{
margin:0 20px;
}

.allnav2 .jshop_menu_level_0,.allnav2 .jshop_menu_level_0_a {
border: 0;
line-height: 1;
font-family: 'Myriad Pro';
font-weight: 500;
color: #433C3C;
font-size: 16pt;
text-decoration: none;
display: block;
width: 100%;
margin: 0 0px 5px 0px;
}
.allnav2 .mod_cat{
padding-top:10px;

/*----------slider----------------*/
.nivoSlider, .nivoSlider a.nivo-imageLink{
border-radius:10px;
-moz-border-radius:10px;
}
.nivoSlider .s0{
border-top-left-radius:10px;
 -moz-border-radius-topleft:10px;
 -webkit-border-top-left-radius:10px;
border-bottom-left-radius:10px;
 -moz-border-radius-bottomleft:10px;
 -webkit-border-bottom-left-radius:10px;
}
.nivoSlider .s14,.nivoSlider .pol{
border-top-right-radius:10px;
 -moz-border-radius-topright:10px;
 -webkit-border-top-right-radius:10px;
border-bottom-right-radius:10px;
 -moz-border-radius-bottomright:10px;
 -webkit-border-bottom-right-radius:10px;
}
.nivoSlider .b00{
border-top-left-radius:10px;
 -moz-border-radius-topleft:10px;
 -webkit-border-top-left-radius:10px;
}
.nivoSlider .b07{
border-top-right-radius:10px;
 -moz-border-radius-topright:10px;
 -webkit-border-top-right-radius:10px;}
.nivoSlider .b30{
border-bottom-left-radius:10px;
 -moz-border-radius-bottomleft:10px;
 -webkit-border-bottom-left-radius:10px;
}
.nivoSlider .b37{
border-bottom-right-radius:10px;
 -moz-border-radius-bottomright:10px;
 -webkit-border-bottom-right-radius:10px;
}
.nivoSlider { -moz-box-shadow: 2px 2px 3px rgba(0,0,0,0.5);
    -webkit-box-shadow: 2px 2px 3px rgba(0,0,0,0.5);
    box-shadow: 2px 2px 3px rgba(0,0,0,0.5);}
#slider .nivo-controlNav{
margin-top:215px;
}
#slider .nivoSlider{
margin:0 !important;left:0 !important;
}

#clickToCallBox h3 {
line-height: 24px !important;
}
#clickToCallBox #jshop_module_cart a {
padding:0 !important;
}
« Последнее редактирование: 24.02.2014, 18:47:19 от olesyaisp »
*

kik84

  • Завсегдатай
  • 1350
  • 64 / 4
как не заметили? у меня сайт вот так вот отображается
*

kik84

  • Завсегдатай
  • 1350
  • 64 / 4
стоит уменьшить масштаб, например, или мышкой по сайту пройтись и восстанавливается, а что за валидатор?

есть исходники шаблона? PHP файлы?
*

olesyaisp

  • Новичок
  • 5
  • 0 / 0
стоит уменьшить масштаб, например, или мышкой по сайту пройтись и восстанавливается, а что за валидатор?

есть исходники шаблона? PHP файлы?
PHP файл есть (база данных)
шаблон очень переделывался - можно сказать рукописный
сайт на Joomla --  какая то ошибка черт где-то не могу понять где
нашли бекап от 22 числа  в связи с этим у меня вопрос -- файлы перезаливать только или базу тоже обязательно?
*

kik84

  • Завсегдатай
  • 1350
  • 64 / 4
если менялись только файлы на сервере, то можно БД не трогать
*

olesyaisp

  • Новичок
  • 5
  • 0 / 0
если менялись только файлы на сервере, то можно БД не трогать

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

Автоматическое сжатие фото при загрузке на сайт

Автор Amerikana

Ответов: 13
Просмотров: 4535
Последний ответ 30.06.2022, 11:52:23
от Nikita2705
Мультиязычность. При включении плагина "система - фильтр языков" сайт падает

Автор yuraok

Ответов: 10
Просмотров: 6251
Последний ответ 25.06.2022, 14:23:49
от ecolora
Сайт на Joomla 2.5.28 долго грузится - 1-2 минуты

Автор DanPel

Ответов: 5
Просмотров: 2152
Последний ответ 22.01.2020, 11:15:34
от SeBun
Ошибка загрузки скрипта

Автор shane

Ответов: 0
Просмотров: 1363
Последний ответ 17.09.2019, 01:35:43
от shane
Неправильно открывается сайт

Автор totalcolor

Ответов: 4
Просмотров: 1471
Последний ответ 20.04.2019, 12:54:20
от draff