Новости Joomla

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

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

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

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

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

Читать статью на Хабре.

@joomlafeed

🏆 Открыто голосование за 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 Гость просматривают эту тему.
  • 2 Ответов
  • 4279 Просмотров
*

topos

  • Захожу иногда
  • 78
  • 10 / 0
Добрый день, в VirtueMart на странице товара тип параметра "Разделительная линия" имеет такой же вид как и все остальные параметры. Хотелось бы его выделить. В базе данных в таблице vm_product_type_parameter , parameter_type у разделительной линии "B".
В   product_type.tpl.php указываю

Код
<?php if ($product_type_params["parameter_type"]=='B') { ?>
<td  style="display: inline-block;width: 40%;" class="va_fly_hr"><?php echo $product_type_params["parameter_label"].$product_type_param[$i]["parameter_type"]; ?>
<?php } else{ ?>
<td  style="display: inline-block;width: 40%;"><?php echo $product_type_params["parameter_label"].$product_type_param[$i]["parameter_type"];
     
if ( !empty($product_type_params["tooltip"] ) ) { ?>
    &nbsp;<?php echo $product_type_params["tooltip"];
}
?>
<?php } ?>

Формируется все это добро как я понял в ps_product_type.php функцией list_product_type

Код
function list_product_type($product_id) {
global $VM_LANG;
$tpl = vmTemplate::getInstance();
if (!$this->product_in_product_type($product_id)) {
return "";
}
// $dbag = product_types;
$dbag = new ps_DB;
// $dba = Attributes of product_type param, holds product_id and values assign to each param;
$dba = new ps_DB;
// $dbp = Parameters of product_type, holds definitions of each parameter, but not value ;
$dbp = new ps_DB;
$html ="";
$q  = "SELECT * FROM #__{vm}_product_product_type_xref ";
$q .= "LEFT JOIN #__{vm}_product_type USING (product_type_id) ";
$q .= "WHERE product_id='$product_id' AND product_type_publish='Y' ";
$q .= "ORDER BY product_type_list_order";
$dbag->query( $q );
$q  = "SELECT * FROM #__{vm}_product_type_parameter ";
$q .= "WHERE product_type_id='$product_id'";
$pt = 0; //product_type counter;
while ($dbag->next_record()) { // Show all Product Type
if ($dbag->f("product_type_flypage")) {
$flypage_file = VM_THEMEPATH."templates/".$dbag->f("product_type_flypage").".php";
if (file_exists($flypage_file)) {
$html .= include($flypage_file);
continue;
}
}
$product_types[$pt]["product_type_name"] = $dbag->f("product_type_name");
// SELECT parameter value of product
$q2  = "SELECT * FROM #__{vm}_product_type_".$dbag->f("product_type_id");
$q2 .= " WHERE product_id='$product_id'";
$dbp->query($q2);
// SELECT parameter of Product Type
$dba->query($q.$dbag->f("product_type_id")." ORDER BY parameter_list_order");
$i=0; // parameter counter;
while ($dba->next_record()) {
$product_type_param[$i]["parameter_label"] = $dba->f("parameter_label");
$parameter_description = $dba->f("parameter_description");
$product_type_param[$i]["parameter_description"] = $parameter_description;
if (!empty($parameter_description)) {
$product_type_param[$i]["tooltip"] = vmToolTip($parameter_description, $VM_LANG->_('PHPSHOP_PRODUCT_TYPE_PARAMETER_FORM_DESCRIPTION'));
}
$product_type_param[$i]["parameter_value"] = $dbp->f($dba->f("parameter_name"));
$product_type_param[$i]["parameter_unit"] = $dba->f("parameter_unit");
$i++;
}
$product_types[$pt]["product_type_count_params"] = $i;
$product_types[$pt]["parameters"] = $product_type_param;
$pt++;
}

$tpl->set( 'product_types', $product_types );
$html .= $tpl->fetch( 'common/product_type.tpl.php' ) ;
return $html;
}
}

Что и как прописать  в функции чтобы передался тип параметра в product_type.tpl.php?
*

flyingspook

  • Moderator
  • 3590
  • 247 / 9
после строк
Цитировать
            $product_type_param[$i]["parameter_value"] = $dbp->f($dba->f("parameter_name"));
            $product_type_param[$i]["parameter_unit"] = $dba->f("parameter_unit");
вставить
Цитировать
$product_type_param[$i]["parameter_type"] = $dba->f("parameter_type");
*

sinus

  • Осваиваюсь на форуме
  • 24
  • 0 / 0
Не могу понять, куда это вставить ?
Код
<?php if ($product_type_params["parameter_type"]=='B') { ?>
<td  style="display: inline-block;width: 40%;" class="va_fly_hr"><?php echo $product_type_params["parameter_label"].$product_type_param[$i]["parameter_type"]; ?>
<?php } else{ ?>
<td  style="display: inline-block;width: 40%;"><?php echo $product_type_params["parameter_label"].$product_type_param[$i]["parameter_type"];
     
if ( !empty($product_type_params["tooltip"] ) ) { ?>
    &nbsp;<?php echo $product_type_params["tooltip"];
}
?>
<?php } ?>

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