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

text

  • Захожу иногда
  • 93
  • 0 / 0
Имеется
в ps_product.php
путь administrator\components\com_virtuemart\classes
функция "function image_tag", которая отвечает за размеры мини-картинок, т.е измененных полноразмерных картинок.

В админке имеется "Требуемая ширина мини-изображения" (все работает, мини-картинки нужны)
Ищу опцию "Требуемая ширина Большого-изображения".

 Т.е. допустим, имеется картинка 1200(ш) х 800(в).
Если ширина больше 700, то 1200 -> 700,
если ширина меньше 700, то ширину полноразмерной картинки не изменяем.

В файле flypage.php установил
<img src="/components/com_virtuemart/shop_image/product/{full_image}" alt="{product_name}" title="{product_name}" style="max-width:700px;">
хотя картинка и уменшается до 700,
но ширина таблицы (MainBody) остается 1200. Т.е. таблице передается ширина большой картинки.
Хотя в интернет-коде стоит "style="max-width:700px;"
 

ВОПРОС
Подскажите, пожалуйста, какие условия нужно изменить в этой функции (или код в другом файле), чтобы ресайзить размеры самих больших картинок.
Т.е. чтобы были возможности для регулирования ширины мини-изображения и ширины большого-изображения.

 

/**
    * Returns the img tag for the given product image
    *
    * @param string $image The name of the imahe OR the full URL to the image
    * @param string $args Additional attributes for the img tag
    * @param int $resize
    * (1 = resize the image by using height and width attributes,
    * 0 = do not resize the image)
    * @param string $path_appendix The path to be appended to IMAGEURL / IMAGEPATH
    * @return The HTML code of the img tag
    */
   function image_tag($image, $args="", $resize=1, $path_appendix="product") {
      global $mosConfig_live_site;

      $border="";
      if( !strpos( $args, "border=" ))
      $border="border=\"0\"";

      if ($image != "") {
         // URL
         if( substr( $image, 0, 4) == "http" )
         $url = $image;

         // local image file
         else {
            if(PSHOP_IMG_RESIZE_ENABLE == '1' && $resize==1)
            $url = $mosConfig_live_site."/components/com_virtuemart/show_image_in_imgtag.php?filename=".urlencode($image)."&newxsize=".PSHOP_IMG_WIDTH."&newysize=".PSHOP_IMG_HEIGHT."&fileout=";
            else
            $url = IMAGEURL.$path_appendix."/".$image;
         }
      }
      else {
         $url = IMAGEURL.NO_IMAGE;
      }
      $html_height_width = "";
      $height_greater = false;
      if( file_exists(IMAGEPATH.$path_appendix."/".$image)) {
         $arr = @getimagesize( IMAGEPATH.$path_appendix."/".$image );
         $html_height_width = $arr[3];
         $height_greater = $arr[0] < $arr[1];
         if( (PSHOP_IMG_WIDTH < $arr[0] || PSHOP_IMG_HEIGHT < $arr[1]) && $resize != 0 ) {
            if( $height_greater )
            $html_height_width = " height=\"".PSHOP_IMG_HEIGHT."\"";
            else
            $html_height_width = " width=\"".PSHOP_IMG_WIDTH."\"";
         }
      }
      if((PSHOP_IMG_RESIZE_ENABLE != '1') && ($resize==1) ) {
         if( $height_greater )
         $html_height_width = " height=\"".PSHOP_IMG_HEIGHT."\"";
         else
         $html_height_width = " width=\"".PSHOP_IMG_WIDTH."\"";
      }

      return "<img src=\"$url\" $html_height_width $args $border />";

   }



« Последнее редактирование: 11.06.2011, 01:29:42 от text »
*

text

  • Захожу иногда
  • 93
  • 0 / 0
Re: Auto_Resize "product_full_image" J1.0.12 LE V1.0
« Ответ #1 : 11.06.2011, 15:37:59 »
<img src="/components/com_virtuemart/shop_image/product/{full_image}" alt="{product_name}"
        
width="
<?php
 if PSHOP_IMG_WIDTH > 700 {
PSHOP_IMG_WIDTH = 700 // если ширина оригинала больше 700, тогда ширина равна 700рх
else //иначе
{
PSHOP_IMG_WIDTH = PSHOP_IMG_WIDTH // оставляем ширину оригинала изображения
}
        
 ?>

" title="{product_name}" style="max-width:700px;">

Подскажите, пожалуйста, как правильно сформулировать условие.
*

text

  • Захожу иногда
  • 93
  • 0 / 0
Re: Auto_Resize "product_full_image" J1.0.12 LE V1.0
« Ответ #2 : 11.06.2011, 15:43:50 »
  <img src="/components/com_virtuemart/shop_image/product/{full_image}" alt="{product_name}"
       
        width="
        <?php
        if .PSHOP_IMG_WIDTH. > 700 {
        .PSHOP_IMG_WIDTH. = 700
        }
        else
        {
        .PSHOP_IMG_WIDTH. = .PSHOP_IMG_WIDTH.
        }
       
        ?>
        " title="{product_name}" style="max-width:700px;">

Так тоже не работает.
Картинка больше не выводится.

Ищу решение дальше.
*

text

  • Захожу иногда
  • 93
  • 0 / 0
Re: Auto_Resize "product_full_image" J1.0.12 LE V1.0
« Ответ #3 : 11.06.2011, 15:48:53 »
          <img src="/components/com_virtuemart/shop_image/product/{full_image}" alt="{product_name}"
       
        width="
        <?php
        if (PSHOP_IMG_WIDTH > '700' )
        PSHOP_IMG_WIDTH = '700';
         
        else
        {
        PSHOP_IMG_WIDTH == PSHOP_IMG_WIDTH ;
        }
       
        ?>
        " title="{product_name}" style="max-width:700px;">

Так тоже на работает.
Картинки не видно.
*

text

  • Захожу иногда
  • 93
  • 0 / 0
Re: Auto_Resize "product_full_image" J1.0.12 LE V1.0
« Ответ #4 : 11.06.2011, 16:20:35 »
Нет надо искать не во флайпейдже.

<img src="/components/com_virtuemart/shop_image/product/{full_image}" alt="{product_name}" width="400" title="{product_name}" style="max-width:700px;">   - Пока оставил так. Все большие фото одной ширины 400рх

--------------------

Ищу решение в файле ps_product.php

/**
    * Returns the img tag for the given product image
    *
    * @param string $image The name of the imahe OR the full URL to the image
    * @param string $args Additional attributes for the img tag
    * @param int $resize
    * (1 = resize the image by using height and width attributes,
    * 0 = do not resize the image)
    * @param string $path_appendix The path to be appended to IMAGEURL / IMAGEPATH
    * @return The HTML code of the img tag
    */
   function image_tag($image, $args="", $resize=1, $path_appendix="product") {
      global $mosConfig_live_site;

      $border="";
      if( !strpos( $args, "border=" ))
      $border="border=\"0\"";

      if ($image != "") {
         // URL
         if( substr( $image, 0, 4) == "http" )
         $url = $image;

         // local image file
         else {
            if(PSHOP_IMG_RESIZE_ENABLE == '1' && $resize==1)
            $url = $mosConfig_live_site."/components/com_virtuemart/show_image_in_imgtag.php?filename=".urlencode($image)."&newxsize=".PSHOP_IMG_WIDTH."&newysize=".PSHOP_IMG_HEIGHT."&fileout=";
            else
            $url = IMAGEURL.$path_appendix."/".$image;
         }
      }
      else {
         $url = IMAGEURL.NO_IMAGE;
      }
      $html_height_width = "";
      $height_greater = false;
      if( file_exists(IMAGEPATH.$path_appendix."/".$image)) {
         $arr = @getimagesize( IMAGEPATH.$path_appendix."/".$image );
         $html_height_width = $arr[3];
         $height_greater = $arr[0] < $arr[1];
         if( (PSHOP_IMG_WIDTH < $arr[0] || PSHOP_IMG_HEIGHT < $arr[1]) && $resize != 0 ) {
            if( $height_greater )
            $html_height_width = " height=\"".PSHOP_IMG_HEIGHT."\"";
            else
            $html_height_width = " width=\"".PSHOP_IMG_WIDTH."\"";
         }
      }
      if((PSHOP_IMG_RESIZE_ENABLE != '1') && ($resize==1) ) {
         if( $height_greater )
         $html_height_width = " height=\"".PSHOP_IMG_HEIGHT."\"";
         else
         $html_height_width = " width=\"".PSHOP_IMG_WIDTH."\"";
      }

      return "<img src=\"$url\" $html_height_width $args $border />";

   }
--------------------
ВОПРОС

Куда можно вставить этот (или другой) код в ps_product.php для регулирования ширины оригинала большого изображения:
---------------------
        <?php
        $width_full = $image->file_image_width;
        
        if {
        ($width_full > '700' ) {
        $width_full = '700';
         }
        else
        {
        $width_full == $width_full ;
        }
        }
        ?>
---------------------------

Ищу решение дальше. Буду рад советам
« Последнее редактирование: 11.06.2011, 16:31:38 от text »
*

text

  • Захожу иногда
  • 93
  • 0 / 0
Re: Auto_Resize "product_full_image" J1.0.12 LE V1.0
« Ответ #5 : 12.06.2011, 16:52:00 »
Буду рад рекомендациям...

ВОПРОС

Куда можно вставить этот (или другой) код в ps_product.php для регулирования ширины оригинала большого изображения:
---------------------
        <?php
        $width_full = $image->file_image_width;
       
        if {
        ($width_full > '700' ) {
        $width_full = '700';
         }
        else
        {
        $width_full == $width_full ;
        }
        }
        ?>
---------------------------

*

text

  • Захожу иногда
  • 93
  • 0 / 0
Re: Auto_Resize "product_full_image" J1.0.12 LE V1.0
« Ответ #6 : 13.06.2011, 20:14:53 »
Актуально....

ВОПРОС

Куда можно вставить этот (или другой) код в ps_product.php для регулирования ширины оригинала большого изображения:
---------------------
        <?php
        $width_full = $image->file_image_width;
        
        if {
        ($width_full > '700' ) {
        $width_full = '700';
         }
        else
        {
        $width_full == $width_full ;
        }
        }
        ?>
---------------------------


« Последнее редактирование: 15.06.2011, 23:58:14 от text »
*

text

  • Захожу иногда
  • 93
  • 0 / 0
Re: Auto_Resize "product_full_image" J1.0.12 LE V1.0
« Ответ #7 : 15.06.2011, 23:59:41 »
Актуально...
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Неправильное отображение product_full_image в browse.php

Автор ifx

Ответов: 6
Просмотров: 1939
Последний ответ 02.08.2012, 20:13:51
от Efanych