Новости Joomla

👩‍💻 События плагинов и порядок их срабатывания при работе с пользовательскими полями Joomla и использовании FieldsHelper.

👩‍💻 События плагинов и порядок их срабатывания при работе с пользовательскими полями Joomla и использовании FieldsHelper.

В процессе работы с Joomla бывает необходимо работать с пользовательским интерфейсом более тонко, чем обычно. Все формы Joomla состоят из стандартных полей, содержанием, стилем отображения, состоянием (включено/выключено, доступно для редактирования или нет и т.д.) можно управлять с помощью плагинов. Да и для нестандартных проектов хорошей практикой является создание одного системного или нескольких плагинов групп "под проект", в которых храниться весь "нестандарт".

В этой статье описаны все триггеры, которые вызываются через Event Dispatcher из administrator/components/com_fields/src/Helper/FieldsHelper.php, с привязкой к жизненному циклу (порядку этапов работы запроса), аргументам, изменяемым данным и дальнейшему распространению по Joomla. Это поможет вам работать с Joomla свободнее и не опасаясь при этом потерять изменения при очередном обновлении движка.

Подходы, описанные в статье, полезны в тех случаях, когда вы работаете с данными в com_fields - механизме создания и редактирования пользовательских полей ядра Joomla и при использовании FieldsHelper. Многие сторонние компоненты не используют эту возможность, поэтому данная статья будет полезна лишь частично.

🏆 Открыто голосование за Joomla в премии CMS Critic People’s Choice Awards 2025

🏆 Открыто голосование за Joomla в  премии CMS Critic People’s Choice Awards 2025

🗓 Голосование продлится до 27 февраля 2026 года.

👩‍💻 Проголосовать! 👩‍💻

Номинации, в которых можно проголосовать за Joomla:
⭐️ Best Free CMS
⭐️ Best Open Source CMS
⭐️ Best Enterprise CMS

Также в номинации Best e-Commerce Solution участвуют компоненты интернет-магазинов для Joomla:
⭐️ HikaShop
⭐️ Virtuemart

В номинации Best Website Builder оказались:
⭐️ YooTheme
⭐️ SP Page Builder

Что такое CMS Critic Awards?
С 2012 года премия CMS Critic Awards занимает особое место в сообществе систем управления контентом (CMS). Это единственный в своем роде сайт, который составляет рейтинг системы управления контентом и связанных с ними решений на рынке — от малого до крупного и подчеркивает их инновации и услуги.

Каждый год награда CMS Critic Awards присуждается одному победителю в различных отраслевых категориях, таких как: «Лучшая облачная CMS», «Лучший DXP», «Лучшая Headless CMS и других. Затем результаты оглашаются через СМИ вместе с выбором редакции CMS Critic.
В этом году премия вернулась к своим традициям и только TOP-5 движков по количеству номинаций попали в 2-й этап - голосование.

@joomlafeed

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

Ragnos

  • Захожу иногда
  • 253
  • 0 / 0
Переместить тег
« : 19.03.2015, 13:20:19 »
Привет, подскажите как можно перенести тег title в коде страницы в самый верх, я так понимаю это нужно делать тут libraries/joomla/document/html/renderer/head.php

и вроде как вот это отвечает за title:

Код
// Don't add empty generators
$generator = $document->getGenerator();
if ($generator)
{
$buffer .= $tab . '' . $lnEnd;
}

$buffer .= $tab . '<title>' . htmlspecialchars($document->getTitle(), ENT_COMPAT, 'UTF-8'). '</title>' . $lnEnd;


только не пойму куда там нужно поставить, выше там столько не понятного
*

SeBun

  • BanMaster
  • 4030
  • 259 / 5
  • @SeBun48
Re: Переместить тег
« Ответ #1 : 19.03.2015, 14:19:17 »
Если вы хотите изменить расположение <title> в группе метатегов, то да, это тот самый файл. Здесь $buffer - переменная, которая содержит все строки метатегов. Знак ".=" означает добавление строки к уже имеющимся данным. Смотрите, какие строки заносятся в эту переменную перед этим куском кода и переносите его в нужное вам место.
Оказываю услуги по Joomla | Миграция/Обновление | Сопровождение | IT-аутсорсинг | Недорогие домены и хостинг
*

Ragnos

  • Захожу иногда
  • 253
  • 0 / 0
Re: Переместить тег
« Ответ #2 : 19.03.2015, 18:59:42 »
Код
{
/**
* Renders the document head and returns the results as a string
*
* @param   string  $head     (unused)
* @param   array   $params   Associative array of values
* @param   string  $content  The script
*
* @return  string  The output of the script
*
* @since   11.1
*
* @note    Unused arguments are retained to preserve backward compatibility.
*/
public function render($head, $params = array(), $content = null)
{
ob_start();
echo $this->fetchHead($this->_doc);
$buffer = ob_get_contents();
ob_end_clean();

return $buffer;
}

/**
* Generates the head HTML and return the results as a string
*
* @param   JDocument  &$document  The document for which the head will be created
*
* @return  string  The head HTML
*
* @since   11.1
*/
public function fetchHead(&$document)
{
// Trigger the onBeforeCompileHead event (skip for installation, since it causes an error)
$app = JFactory::getApplication();
$app->triggerEvent('onBeforeCompileHead');
// Get line endings
$lnEnd = $document->_getLineEnd();
$tab = $document->_getTab();
$tagEnd = ' />';
$buffer = '';

// Generate base tag (need to happen first)
$base = $document->getBase();
if (!empty($base))
{
$buffer .= $tab . '<base href="' . $document->getBase(). '" />' . $lnEnd;
}

// Generate META tags (needs to happen as early as possible in the head)
foreach ($document->_metaTags as $type => $tag)
{
foreach ($tag as $name => $content)
{
if ($type == 'http-equiv')
{
$content .= '; charset=' . $document->getCharset();
$buffer .= $tab . '<meta http-equiv="' . $name . '" content="' . htmlspecialchars($content). '" />' . $lnEnd;
}
elseif ($type == 'standard' && !empty($content))
{
$buffer .= $tab . '<meta name="' . $name . '" content="' . htmlspecialchars($content). '" />' . $lnEnd;
}
}
}

// Don't add empty descriptions
$documentDescription = $document->getDescription();
if ($documentDescription)
{
$buffer .= $tab . '<meta name="description" content="' . htmlspecialchars($documentDescription). '" />' . $lnEnd;
}

вот что идет перед кодом тайтла

Цитировать
Смотрите, какие строки заносятся в эту переменную перед этим куском кода и переносите его в нужное вам место.

вот например вверху было $buffer .= $tab . '<base href="' . $document->getBase(). '" />' . $lnEnd;

и в какое место исходя из этого переносить код, или я чего то не понял ?

*

SeBun

  • BanMaster
  • 4030
  • 259 / 5
  • @SeBun48
Re: Переместить тег
« Ответ #3 : 20.03.2015, 13:06:14 »
А вы ради интереса можете поставить между строк
Код
var_dump($buffer);
и увидите, что содержится в этой переменной в текущем месте кода.

Вот к примеру у вас метод fetchHead, в нем переменная $buffer объявляется с пустым значением. Далее начинает отрабатывать код, который загружает в переменную данные. Попробуйте перенести ваш код, поставив его перед
Код
// Generate base tag (need to happen first)
написал наугад, так что экспериментируйте.
« Последнее редактирование: 20.03.2015, 13:49:26 от sebun »
Оказываю услуги по Joomla | Миграция/Обновление | Сопровождение | IT-аутсорсинг | Недорогие домены и хостинг
*

Ragnos

  • Захожу иногда
  • 253
  • 0 / 0
Re: Переместить тег
« Ответ #4 : 21.03.2015, 17:08:37 »
спасибо, помогло)
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

[Решено] Как переместить описание категории?

Автор tamerlan55

Ответов: 25
Просмотров: 3277
Последний ответ 11.02.2014, 20:58:22
от tamerlan55
Путь не в пределах значения переменной open_basedir Внимание! Не удалось переместить файл!

Автор Einheit

Ответов: 2
Просмотров: 1715
Последний ответ 14.03.2013, 23:11:55
от Форт
Как переместить это в другую позицию?

Автор BykovAlx

Ответов: 1
Просмотров: 1306
Последний ответ 22.01.2013, 23:19:20
от Lincck