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

kapitansen

  • Захожу иногда
  • 51
  • 0 / 0
Оптимизация MySQL запросов
« : 28.08.2013, 19:33:23 »
Доброго времени суток! Взял на обслуживание сайт на Joomla 2.5 c несколькими тысячами статей. Хостер заваливает письмами о превышении нагрузки SQL. Одно из них под катом.

Как понять, что именно нагружает базу? SQL запросы до этого не изучал.

Сообщение от хостера:

Спойлер
[свернуть]
*

voland

  • Легенда
  • 11028
  • 588 / 112
  • Эта строка съедает место на вашем мониторе
*

voland

  • Легенда
  • 11028
  • 588 / 112
  • Эта строка съедает место на вашем мониторе
Re: Оптимизация MySQL запросов
« Ответ #2 : 28.08.2013, 19:35:58 »
PS. А это вы очень погорячились..
несколькими тысячами статей.
*

kapitansen

  • Захожу иногда
  • 51
  • 0 / 0
Re: Оптимизация MySQL запросов
« Ответ #3 : 28.08.2013, 19:40:33 »
Всё так плохо?
А если закешировать все нафиг, включая запросы к SQL?

А переезд на К2 может помочь?
*

voland

  • Легенда
  • 11028
  • 588 / 112
  • Эта строка съедает место на вашем мониторе
*

kapitansen

  • Захожу иногда
  • 51
  • 0 / 0
Re: Оптимизация MySQL запросов
« Ответ #5 : 02.09.2013, 10:53:09 »
Включил gzip сжатие страниц, кеширование(плагин кеширования был отключен почему-то, включил) выставил 60 минут, убрал 10 тысяч редиректов и выключил плагин редиректов, сделав одну страницу 404. Удалил из базы данные, оставшиеся от Joomla 1.5.
После этого сайт вешает базу каждые 5 минут.  :o
Хотя в логах хостера медленные запросы, которые раньше были причиной, исчезли.
WTF?
*

wishlight

  • Гуру
  • 5051
  • 314 / 1
  • От 300 руб быстрый хостинг. Сервера.
Re: Оптимизация MySQL запросов
« Ответ #6 : 02.09.2013, 11:27:22 »
Наверно стоит задуматься о более мощном хостинге.
*

kapitansen

  • Захожу иногда
  • 51
  • 0 / 0
Re: Оптимизация MySQL запросов
« Ответ #7 : 02.09.2013, 11:34:14 »
тоже так думал. заказчик хвалит хостинг "Джино", на котором у него премиум аккаунт. Я с джинами не работал, про их мощность не знаю.
*

wishlight

  • Гуру
  • 5051
  • 314 / 1
  • От 300 руб быстрый хостинг. Сервера.
Re: Оптимизация MySQL запросов
« Ответ #8 : 02.09.2013, 11:57:02 »
Интересно сколько это добро стоит в месяц. Если хвалит, то почему падает?
*

kapitansen

  • Захожу иногда
  • 51
  • 0 / 0
Re: Оптимизация MySQL запросов
« Ответ #9 : 02.09.2013, 12:18:14 »
8000 статей, 10000 посещений в сутки. Хватает ли для такого возможностей хостинга и Joomla - трудно сказать. Жесткий лимит CPU у него - 30%, времени запросов - 150 с.
*

wishlight

  • Гуру
  • 5051
  • 314 / 1
  • От 300 руб быстрый хостинг. Сервера.
Re: Оптимизация MySQL запросов
« Ответ #10 : 02.09.2013, 13:45:59 »
Думаю, конструкторы контента тут не помогут. Прямой путь на vps, которого хватит.
*

kapitansen

  • Захожу иногда
  • 51
  • 0 / 0
Re: Оптимизация MySQL запросов
« Ответ #11 : 06.09.2013, 20:10:01 »
Уговорил заказчика переезжать на vds. Даже согласны на выделенный сервер (в ближайшем будущем планируют ещё три высоконагруженных проекта.)
Большая просьба к знающим и опытным: подскажите, какие параметры железа выбрать под указанные выше нагрузки?
И вторая маленькая просьба: какие компании посоветуете, чтобы грамотная русская техподдержка была?
*

wishlight

  • Гуру
  • 5051
  • 314 / 1
  • От 300 руб быстрый хостинг. Сервера.
Re: Оптимизация MySQL запросов
« Ответ #12 : 06.09.2013, 20:50:51 »
А на какую цену вы рассчитываете?
*

voland

  • Легенда
  • 11028
  • 588 / 112
  • Эта строка съедает место на вашем мониторе
Re: Оптимизация MySQL запросов
« Ответ #13 : 06.09.2013, 20:57:10 »
В подписи.
ТП Земля или  выше.
*

wishlight

  • Гуру
  • 5051
  • 314 / 1
  • От 300 руб быстрый хостинг. Сервера.
Re: Оптимизация MySQL запросов
« Ответ #14 : 06.09.2013, 21:08:46 »
Ну если так подходить к делу, то у меня в подписи две последние ссылки. На последнем точно тормозить не будет и не нужно нанимать настройщика. Сами неплохо делают, только попросить надо + сеть доставки контента к заказу.
*

flyingspook

  • Живу я здесь
  • 3590
  • 247 / 9
*

kapitansen

  • Захожу иногда
  • 51
  • 0 / 0
Re: Оптимизация MySQL запросов
« Ответ #16 : 07.09.2013, 12:09:21 »
референтных ссылок накидали )) ну я так и рассчитывал. Сумма до 3000 в месяц. Присматриваемся к fornex.com 2 Ггц 2 Гб RAM. Должно заработать, как считаете?
wishlight, как на fornex.com с техподдержкой? она русская и добрая? И что именно у них входит в базовое администрирование?
Спасибо.
*

wishlight

  • Гуру
  • 5051
  • 314 / 1
  • От 300 руб быстрый хостинг. Сервера.
Re: Оптимизация MySQL запросов
« Ответ #17 : 07.09.2013, 12:13:32 »
fornex - поддержка русская. Бесплатное базовое администрирование. Про доброту не знаю. Хотя хостпро лучше определенно.
*

voland

  • Легенда
  • 11028
  • 588 / 112
  • Эта строка съедает место на вашем мониторе
Re: Оптимизация MySQL запросов
« Ответ #18 : 07.09.2013, 12:30:57 »
В любом случае лучше нанять админа - поставить munin, настроить размер временных таблиц, переопределить tmpfs в оперативку - на этом можно в десятки раз ускорить в данном случае.
*

kapitansen

  • Захожу иногда
  • 51
  • 0 / 0
Re: Оптимизация MySQL запросов
« Ответ #19 : 09.09.2013, 16:11:50 »
Выбираем между http://fastvps.ru/ и https://fornex.com/. Первые дешевле, вторые как-то с виду серьезней. И техподдержка форнекса отвечает в течении нескольких минут. Что посоветуете?
*

wishlight

  • Гуру
  • 5051
  • 314 / 1
  • От 300 руб быстрый хостинг. Сервера.
Re: Оптимизация MySQL запросов
« Ответ #20 : 09.09.2013, 16:24:07 »
fornex для меня. fastvps показались грубоватыми в общении.
*

kapitansen

  • Захожу иногда
  • 51
  • 0 / 0
Re: Оптимизация MySQL запросов
« Ответ #21 : 10.09.2013, 16:48:22 »
Заказали сервер с настройкой на fornex. В это время старый хостер заблокировал аккаунт и прислал письмо следующего содержания:

Спойлер
[свернуть]

Переезд на vps ТОЧНО? решит проблему с загрузкой, или всё-таки тут есть какой-то косяк?
*

capricorn

  • Завсегдатай
  • 1949
  • 118 / 3
Re: Оптимизация MySQL запросов
« Ответ #22 : 10.09.2013, 16:56:47 »
Этот сайт создавался изначально на J2.5 или была миграция с предыдущих версий?
*

kapitansen

  • Захожу иногда
  • 51
  • 0 / 0
Re: Оптимизация MySQL запросов
« Ответ #23 : 10.09.2013, 16:57:23 »
была миграция с полторашки, с виду довольно кривая
*

capricorn

  • Завсегдатай
  • 1949
  • 118 / 3
Re: Оптимизация MySQL запросов
« Ответ #24 : 10.09.2013, 17:26:38 »
Проверьте таблицу #_assets. Там не должно быть более одной записи с parent_id и level c 0. Также есть и др. условия. Возможно ваш случай. Для чтения http://docs.joomla.org/Fixing_the_assets_table. Если действительно повреждена, то восстановите ее. Инструкции по ссылке.
*

kapitansen

  • Захожу иногда
  • 51
  • 0 / 0
Re: Оптимизация MySQL запросов
« Ответ #25 : 10.09.2013, 17:32:09 »
спасибо, посмотрю
*

kapitansen

  • Захожу иногда
  • 51
  • 0 / 0
Re: Оптимизация MySQL запросов
« Ответ #26 : 23.09.2013, 09:44:07 »
Посмотрел инструкцию, в таблице #_assets не было ничего криминального, но я повелся на пункт "If you have any articles or categories not in the asset table then you have a broken asset table." Поскольку статей на сайте более 8000, и в корзине я нашёл какие-то старые и неудаляемые, принял решение перелопатить таблицу по-полной. В итоге обновил структуру категорий, разбил статьи так, чтобы в одной категории не было больше 200 штук, заменил для всех статей алиасы на номер id, поправил ссылки на сайте и включил кеширование на 300 минут (сайт обновляется раз в неделю, можно и больше выставить).
Как только закончил переносить статьи, нагрузка процессора упала с 98-100% до 60-80% и стабильно, без пиков, держится на этом уровне. Когда никто не шарится в админке (у меня там под одним аккаунтом сидят топ-менеджер. ген.директор и просто директор), процессора жрет и того меньше - 30-60%. В общем, пока даже не пригодились хаки Joomla на отключение количества хитов для статьи и проверку на даты с точностью до секунды.

НО! Теперь сервер расходует много памяти. До оптимизации MySQL - скачками 0,8-1 Гб, после - 1,3-1,5 Гб, причем держится почти на одном уровне, независимо от времени суток и посетителей. Вверх не скачет, но напрягает, потому что непонятно. Это нормально или нет?
Вот картинка:

*

capricorn

  • Завсегдатай
  • 1949
  • 118 / 3
Re: Оптимизация MySQL запросов
« Ответ #27 : 23.09.2013, 20:44:37 »
Уточните, вы уже на VPS? Если да, вручную очистите папку cache и исправьте скриптом таблицу assets (большой сайт), скрипт по ссылке:
http://forum.joomla.org/viewtopic.php?p=2741024#p2741024 (бэкап сайта перед этим сделайте).
« Последнее редактирование: 23.09.2013, 21:01:41 от capricorn »
*

kapitansen

  • Захожу иногда
  • 51
  • 0 / 0
Re: Оптимизация MySQL запросов
« Ответ #28 : 24.09.2013, 11:55:42 »
Да, я уже на VPS. Папку почищу, скрипт запускать из корня сайта? никаких переменных в нем менять не нужно?
*

capricorn

  • Завсегдатай
  • 1949
  • 118 / 3
Re: Оптимизация MySQL запросов
« Ответ #29 : 24.09.2013, 13:16:29 »
Можно и из корня. Не знаю, как у вас настроен php -поэтому лучше назначьте ему владельца и группу apache. при необходимости добавьте в нем только php после <?.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Оптимизация сайта

Автор joni

Ответов: 0
Просмотров: 2079
Последний ответ 22.07.2023, 17:10:11
от joni
Превышено допустимое количество запросов

Автор Serhio

Ответов: 6
Просмотров: 2235
Последний ответ 28.02.2017, 23:41:33
от insaider_kr
Оптимизация поддоменов

Автор edem-caffe

Ответов: 7
Просмотров: 1092
Последний ответ 14.12.2015, 15:50:43
от CaHeK_pk
Зависает сайт и много запросов к БД

Автор Azizkz

Ответов: 2
Просмотров: 2018
Последний ответ 16.10.2015, 12:33:20
от Azizkz
MySQL, HTML

Автор valesp

Ответов: 4
Просмотров: 1303
Последний ответ 18.08.2015, 16:46:53
от SeBun