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

dragus-ildar

  • Осваиваюсь на форуме
  • 23
  • 0 / 0
Почти всегда хочется убрать эту стандартную навигацию:
<< В начало <Предыдущая  1  2  3  4  Следующая> В конец >>

я сделал себе так:


И так, меняем в файлах:
... administrator\components\com_virtuemart\classes\pageNavigation.class.php находим это
Код
    $html = '<ul class="pagination">';

    if ($this_page > 1) {

      $page = ($this_page - 2) * $this->limit;

      if( $link != '') {

        $html .= "\n<li><a href=\"".vmRoute($link.'&limit='.$this->limit.'&limitstart=0')."\" class=\"pagenav\" title=\"".$VM_LANG->_('PN_START')."\">&laquo;&laquo; ".$VM_LANG->_('PN_START')."</a></li>";

        $html .= "\n<li><a href=\"".vmRoute($link.'&limit='.$this->limit.'&limitstart='.$page)."\" class=\"pagenav\" title=\"".$VM_LANG->_('PN_PREVIOUS')."\">&laquo; ".$VM_LANG->_('PN_PREVIOUS')."</a></li>";

      } else {

        $html .= "\n<li><a href=\"#beg\" class=\"pagenav\" title=\"".$VM_LANG->_('PN_START')."\" onclick=\"javascript: document.adminForm.limitstart.value=0; document.adminForm.submit();return false;\">&laquo;&laquo; ".$VM_LANG->_('PN_START')."</a></li>";

        $html .= "\n<li><a href=\"#prev\" class=\"pagenav\" title=\"".$VM_LANG->_('PN_PREVIOUS')."\" onclick=\"javascript: document.adminForm.limitstart.value=$page; document.adminForm.submit();return false;\">&laquo; ".$VM_LANG->_('PN_PREVIOUS')."</a></li>";

      }

    } else {

      $html .= "\n<li><span class=\"pagenav\">&laquo;&laquo; ".$VM_LANG->_('PN_START')."</span></li>";

      $html .= "\n<li><span class=\"pagenav\">&laquo; ".$VM_LANG->_('PN_PREVIOUS')."</span></li>";

    }



    for ($i=$start_loop; $i <= $stop_loop; $i++) {

      $page = ($i - 1) * $this->limit;

      if ($i == $this_page) {

        $html .= "\n<li><span class=\"pagenav\"> $i </span></li>";

      } else {

        if( $link != '') {

          $html .= "\n<li><a href=\"".vmRoute($link.'&limit='.$this->limit.'&limitstart='.$page)."\" class=\"pagenav\"><strong>$i</strong></a></li>";

        } else {

          $html .= "\n<li><a href=\"#$i\" class=\"pagenav\" onclick=\"javascript: document.adminForm.limitstart.value=$page; document.adminForm.submit();return false;\"><strong>$i</strong></a></li>";

        }

      }

    }



    if ($this_page < $total_pages) {

      $page = $this_page * $this->limit;

      $end_page = ($total_pages-1) * $this->limit;

      if( $link != '') {

        $html .= "\n<li><a href=\"".vmRoute($link.'&limit='.$this->limit.'&limitstart='.$page)."\" class=\"pagenav\" title=\"".$VM_LANG->_('PN_NEXT')."\"> ".$VM_LANG->_('PN_NEXT')." &raquo;</a></li>";

        $html .= "\n<li><a href=\"".vmRoute($link.'&limit='.$this->limit.'&limitstart='.$end_page)."\" class=\"pagenav\" title=\"".$VM_LANG->_('PN_END')."\"> ".$VM_LANG->_('PN_END')." &raquo;&raquo;</a></li>";

      } else {

        $html .= "\n<li><a href=\"#next\" class=\"pagenav\" title=\"".$VM_LANG->_('PN_NEXT')."\" onclick=\"javascript: document.adminForm.limitstart.value=$page; document.adminForm.submit();return false;\"> ".$VM_LANG->_('PN_NEXT')." &raquo;</a></li>";

        $html .= "\n<li><a href=\"#end\" class=\"pagenav\" title=\"".$VM_LANG->_('PN_END')."\" onclick=\"javascript: document.adminForm.limitstart.value=$end_page; document.adminForm.submit();return false;\"> ".$VM_LANG->_('PN_END')." &raquo;&raquo;</a></li>";

      }

    } else {

      $html .= "\n<li><span class=\"pagenav\">".$VM_LANG->_('PN_NEXT')." &raquo;</span></li>";

      $html .= "\n<li><span class=\"pagenav\">".$VM_LANG->_('PN_END')." &raquo;&raquo;</span></li>";

    }

    $html .= "\n</ul>";

меняем на это:

Код
	$html = '<ul class="pagination">';
    if ($this_page > 1) {
      $page = ($this_page - 2) * $this->limit;
      if( $link != '') {
       
//$html .= "\n<li><a href=\"".vmRoute($link.'&limit='.$this->limit.'&limitstart=0')."\" class=\"pagenav\" title=\"".$VM_LANG->_('PN_START')."\">&laquo;&laquo; ".$VM_LANG->_('PN_START')."</a></li>";
       
$html .= "\n<li class=\"page_prev\"><a href=\"".vmRoute($link.'&limit='.$this->limit.'&limitstart='.$page)."\" title=\"".$VM_LANG->_('PN_PREVIOUS')."\"><img border=\"0\" width=\"19\" height=\"19\" alt=\"".$VM_LANG->_('PN_PREVIOUS')."\" title=\"\" src=\"images/pagin_left.png\"></a></li>";

      } else {
        //$html .= "\n<li><a href=\"#beg\" class=\"pagenav\" title=\"".$VM_LANG->_('PN_START')."\" onclick=\"javascript: document.adminForm.limitstart.value=0; document.adminForm.submit();return false;\">&laquo;&laquo; ".$VM_LANG->_('PN_START')."</a></li>";
        $html .= "\n<li class=\"pagenav\"><a href=\"#prev\" title=\"".$VM_LANG->_('PN_PREVIOUS')."\" onclick=\"javascript: document.adminForm.limitstart.value=$page; document.adminForm.submit();return false;\">&laquo; ".$VM_LANG->_('PN_PREVIOUS')."</a></li>";
      }
    } else {
      //$html .= "\n<li><span class=\"pagenav\">&laquo;&laquo; ".$VM_LANG->_('PN_START')."</span></li>";
      $html .= "";
      //$html .= "\n<li><span class=\"page_prev\" title=\"".$VM_LANG->_('PN_PREVIOUS')."\"><img border=\"0\" width=\"19\" height=\"19\" alt=\"".$VM_LANG->_('PN_PREVIOUS')."\" title=\"\" src=\"images/pagin_left.png\"></span></li>";

    }

    for ($i=$start_loop; $i <= $stop_loop; $i++) {
      $page = ($i - 1) * $this->limit;
      if ($i == $this_page) {
        $html .= "\n<li class=\"pagenav-ative\"><span> $i </span></li>";
//$html .= "\n<li class=\"pagenav-ative\"><span class=\"pagenav\"> $i <img border=\"0\" width=\"19\" height=\"19\" alt=\"\" title=\"\" src=\"images/pagin_left.png\"> </span></li>";
      } else {
        if( $link != '') {
          $html .= "\n<li class=\"pagenav\"><a href=\"".vmRoute($link.'&limit='.$this->limit.'&limitstart='.$page)."\">$i</a></li>";
        } else {
          $html .= "\n<li class=\"pagenav\"><a href=\"#$i\" onclick=\"javascript: document.adminForm.limitstart.value=$page; document.adminForm.submit();return false;\">$i</a></li>";
        }
      }
    }

    if ($this_page < $total_pages) {
      $page = $this_page * $this->limit;
      $end_page = ($total_pages-1) * $this->limit;
      if( $link != '') {
        $html .= "\n<li class=\"page_next\"><a href=\"".vmRoute($link.'&limit='.$this->limit.'&limitstart='.$page)."\" title=\"".$VM_LANG->_('PN_NEXT')."\"><img border=\"0\" width=\"19\" height=\"19\" alt=\"".$VM_LANG->_('PN_NEXT')."\" title=\"\" src=\"images/pagin_right.png\"></a></li>";
       
//$html .= "\n<li><a href=\"".vmRoute($link.'&limit='.$this->limit.'&limitstart='.$end_page)."\" class=\"pagenav\" title=\"".$VM_LANG->_('PN_END')."\"> ".$VM_LANG->_('PN_END')." &raquo;&raquo;</a></li>";
      } else {
        $html .= "\n<li class=\"pagenav\"><a href=\"#next\" title=\"".$VM_LANG->_('PN_NEXT')."\" onclick=\"javascript: document.adminForm.limitstart.value=$page; document.adminForm.submit();return false;\"> ".$VM_LANG->_('PN_NEXT')." &raquo;</a></li>";
        //$html .= "\n<li><a href=\"#end\" class=\"pagenav\" title=\"".$VM_LANG->_('PN_END')."\" onclick=\"javascript: document.adminForm.limitstart.value=$end_page; document.adminForm.submit();return false;\"> ".$VM_LANG->_('PN_END')." &raquo;&raquo;</a></li>";
      }
    } else {
      $html .= "";
  //$html .= "\n<li><span class=\"page_next\" title=\"".$VM_LANG->_('PN_NEXT')."\"><img border=\"0\" width=\"19\" height=\"19\" alt=\"".$VM_LANG->_('PN_NEXT')."\" title=\"\" src=\"images/pagin_right.png\"></span></li>";
 
      //$html .= "\n<li><span class=\"pagenav\">".$VM_LANG->_('PN_END')." &raquo;&raquo;</span></li>";
    }
    $html .= "\n</ul>";

В принципе все, не забудьте только закинуть картинки в
images/pagin_right.png
images/pagin_left.png

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

Постраничная навигация в модуле Mod_Virtuemart_Universal

Автор nazgul0071

Ответов: 0
Просмотров: 1393
Последний ответ 19.12.2012, 00:45:54
от nazgul0071
Навигация страниц с товарами в категории

Автор nightbodom

Ответов: 8
Просмотров: 2133
Последний ответ 04.04.2012, 03:45:43
от nightbodom
Навигация категория ->подкатегория->подкатегория

Автор oppo

Ответов: 8
Просмотров: 2672
Последний ответ 04.11.2010, 13:43:35
от skyscraper
удобная навигация

Автор MaxFarSeer

Ответов: 2
Просмотров: 1771
Последний ответ 14.09.2010, 12:33:21
от MaxFarSeer
навигация по магазину с высокой шапкой

Автор schel4ok

Ответов: 6
Просмотров: 1933
Последний ответ 19.07.2010, 09:08:52
от schel4ok