Новости Joomla

WT YOOtheme Yandex Map v.1.2.0. Плагин для Joomla

👩‍💻 WT YOOtheme Yandex Map v.1.2.0. Плагин для Joomla.Плагин добавляет элемент Яндекс Карт для конструктора страниц YOOtheme в Joomla. Гибкие настройки отображения маркеров, всплывающих окон и их содержимого, кластеризация маркеров.👩‍💻 v.1.2.0. Что нового?- Исправление отображения иконок и всплывающих окон маркеров. - Теперь на мобильных устройствах перетаскивание карты работает только с помощью двух пальцев- Новые элементы управления картой:- - Открыть карту в полноэкранном режиме- - Линейка и планиметр- - Определить моё местоположение- - Управление поворотом и наклоном карты- - Поиск по карте- Новые режимы центрирования карты:- - Режим Координаты. Используются значения полей Широта и Долгота- - Режим На крайнем маркере. Используются координаты крайнего установленного на карте маркера- - Режим Вмещать все маркеры. Карта позиционируется и масштабируется для отображения всех установленных маркеров на карте- Теперь расположение элементов управления картой можно настроить- Добавлена возможность выбрать цвет маркера- Карта перемещается к маркеру при открытии всплывающего окна- Добавлена возможность скрыть всплывающее окно- Настраиваемая позиция всплывающего окна относительно маркера. Допустимые значения - сверху, слева и справа от маркера- Улучшено указание координат с помощью мини-карты в настройках маркера. Теперь в окне настроек элемента карты при перетаскивании маркера карта следует за ним- Добавлены параметры смещения по осям X и Y для иконок маркеров и кластерови другое.Системные требования.Минимальная версия Joomla - 4.2, PHP - 8.0.Версия расширения 1.2.0 протестирована на Joomla 6.0-beta3.👩‍💻 Релиз выпущен усердиями участника нашего сообщества Андрея Смирникова (@tg_andrey).Страница расширенияGitHub расширения@joomlafeed#joomla #расширения #яндекс #yootheme #yandex #яндекскарты

Модификация WT JShopping products anywhere - Uikit макетИтак, дано: музыкальный журнал, в котором...

Модификация WT JShopping products anywhere - Uikit макетИтак, дано: музыкальный журнал, в котором...

Модификация WT JShopping products anywhere - Uikit макетИтак, дано: музыкальный журнал, в котором представлены новости, интервью, рецензии и есть небольшой магазин на JoomShopping. Возникла необходимость внутри Joomla статей вставлять упоминание релиза и кнопочку «добавить в корзину». Я взял плагин WT JShopping products anywhere Сергея Толкачева (@webtolkru). Плагин отображает название товара и ссылку. При помощи напильника, ИИ и навыков вёрстки появился Uikit макет для шаблонов на базе Yootheme Pro.Учитываается мобильная версия - телефоны и ipad.Кнопка добавления в корзину работает по Ajax и появляется всплывающее окно (Notification Bar от Uikit) с информацией.Пока это базовый вариант, требующий доведения до лоска, однако он уже работает и его можно применять на проектах.Взять макет можно здесь.А плагин вставки товаров в материалы можно забрать здесь.Приветствуется доведение до ума и оформление в виде PR.

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

cartgen

  • Захожу иногда
  • 54
  • 8 / 2
1) Добавить столбец в базу SQL через PHP myADMin

ALTER TABLE `jos_users` ADD `registerIp` VARCHAR( 15 ) NOT NULL AFTER `gid` ;


*****************************************************************************
2)libraries/joomla/database/table/user.php

/**
    * The login name
    *
    * @var string
    */
   var $username      = null;



// -- Добавить код -->
   var $registerIp      = null;
//-- ************ -->



...

*****************************************************************************
3)Добавление скрытого поля в регистрацию

components/com_user/views/register/tmpl/default.php


...
<form action="<?php echo JRoute::_( 'index.php?option=com_user' ); ?>" method="post" id="josForm" name="josForm" class="form-validate">

<?php if ( $this->params->def( 'show_page_title', 1 ) ) : ?>
<div class="componentheading<?php echo $this->escape($this->params->get('pageclass_sfx')); ?>"><?php echo $this->escape($this->params->get('page_title')); ?></div>
<?php endif; ?>

<table cellpadding="0" cellspacing="0" border="0" width="100%" class="contentpane">
<tr>
   <td width="30%" height="40">
      <label id="namemsg" for="name">
         <?php echo JText::_( 'Name' ); ?>:
      </label>
   </td>
     <td>
       <input type="text" name="name" id="name" size="40" value="<?php echo $this->escape($this->user->get( 'name' ));?>" class="inputbox required" maxlength="50" /> *
     </td>
</tr>





<!-- Добавить код -->
           <input type="hidden" name="registerIp" id="registerIp" size="40" value="<?PHP  print($_SERVER['REMOTE_ADDR']); ?>" class="inputbox required" maxlength="15" />
<!-- ************ -->




<tr>
...


*****************************************************************************
4)Админка, добавление столбца RegisterIp

administrator/components/com_users/views/users/tmpl/default.php



<?php defined('_JEXEC') or die('Restricted access'); ?>

<?php  JHTML::_('behavior.tooltip');  ?>

<?php
   JToolBarHelper::title( JText::_( 'User Manager' ), 'user.png' );
   JToolBarHelper::custom( 'logout', 'cancel.png', 'cancel_f2.png', 'Logout' );
   JToolBarHelper::deleteList();
   JToolBarHelper::editListX();
   JToolBarHelper::addNewX();
   JToolBarHelper::help( 'screen.users' );
?>

<form action="index.php?option=com_users" method="post" name="adminForm">
   <table>
      <tr>
         <td width="100%">
            <?php echo JText::_( 'Filter' ); ?>:
            <input type="text" name="search" id="search" value="<?php echo htmlspecialchars($this->lists['search']);?>" class="text_area" onchange="document.adminForm.submit();" />
            <button onclick="this.form.submit();"><?php echo JText::_( 'Go' ); ?></button>
            <button onclick="document.getElementById('search').value='';this.form.getElementById('filter_type').value='0';this.form.getElementById('filter_logged').value='0';this.form.submit();"><?php echo JText::_( 'Reset' ); ?></button>
         </td>
         <td nowrap="nowrap">
            <?php echo $this->lists['type'];?>
            <?php echo $this->lists['logged'];?>
         </td>
      </tr>
   </table>

   <table class="adminlist" cellpadding="1">
      <thead>
         <tr>
            <th width="2%" class="title">
               <?php echo JText::_( 'NUM' ); ?>
            </th>
            <th width="3%" class="title">
               <input type="checkbox" name="toggle" value="" onclick="checkAll(<?php echo count($this->items); ?>);" />
            </th>
            <th class="title">
               <?php echo JHTML::_('grid.sort',   'Name', 'a.name', @$this->lists['order_Dir'], @$this->lists['order'] ); ?>
            </th>
               
            <th width="15%" class="title" >
               <?php echo JHTML::_('grid.sort',   'Username', 'a.username', @$this->lists['order_Dir'], @$this->lists['order'] ); ?>
            </th>
            <th width="5%" class="title" nowrap="nowrap">
               <?php echo JText::_( 'Logged In' ); ?>
            </th>
            <th width="5%" class="title" nowrap="nowrap">
               <?php echo JHTML::_('grid.sort',   'Enabled', 'a.block', @$this->lists['order_Dir'], @$this->lists['order'] ); ?>
            </th>
            <th width="15%" class="title">
               <?php echo JHTML::_('grid.sort',   'Group', 'groupname', @$this->lists['order_Dir'], @$this->lists['order'] ); ?>
            </th>
            <th width="15%" class="title">
               <?php echo JHTML::_('grid.sort',   'E-Mail', 'a.email', @$this->lists['order_Dir'], @$this->lists['order'] ); ?>
            </th>
            <th width="10%" class="title">
               <?php echo JHTML::_('grid.sort',   'Last Visit', 'a.lastvisitDate', @$this->lists['order_Dir'], @$this->lists['order'] ); ?>
            </th>
            








<!-- Добавить код -->            
      <th width="11%" class="title" >
         <?php echo JHTML::_('grid.sort',   'RegisterIp', 'a.registerIp', @$this->lists['order_Dir'], @$this->lists['order'] ); ?>
      </th>
<!-- ************ -->            







            
            <th width="1%" class="title" nowrap="nowrap">
               <?php echo JHTML::_('grid.sort',   'ID', 'a.id', @$this->lists['order_Dir'], @$this->lists['order'] ); ?>
            </th>
         </tr>
      </thead>
      <tfoot>
         <tr>
            <td colspan="10">
               <?php echo $this->pagination->getListFooter(); ?>
            </td>
         </tr>
      </tfoot>
      <tbody>
      <?php
         $k = 0;
         for ($i=0, $n=count( $this->items ); $i < $n; $i++)
         {
            $row    =& $this->items[$i];

            $img    = $row->block ? 'publish_x.png' : 'tick.png';
            $task    = $row->block ? 'unblock' : 'block';
            $alt    = $row->block ? JText::_( 'Enabled' ) : JText::_( 'Blocked' );
            $link    = 'index.php?option=com_users&amp;view=user&amp;task=edit&amp;cid[]='. $row->id. '';

            if ($row->lastvisitDate == "0000-00-00 00:00:00") {
               $lvisit = JText::_( 'Never' );
            } else {
               $lvisit   = JHTML::_('date', $row->lastvisitDate, '%Y-%m-%d %H:%M:%S');
            }
         ?>
         <tr class="<?php echo "row$k"; ?>">
            <td>
               <?php echo $i+1+$this->pagination->limitstart;?>
            </td>
            <td>
               <?php echo JHTML::_('grid.id', $i, $row->id ); ?>
            </td>
            <td>
               <a href="<?php echo $link; ?>">
                  <?php echo $row->name; ?></a>
            </td>
            <td>
               <?php echo $row->username; ?>
            </td>
            <td align="center">
               <?php echo $row->loggedin ? '<img src="images/tick.png" width="16" height="16" border="0" alt="" />': ''; ?>
            </td>
            <td align="center">
               <a href="javascript:void(0);" onclick="return listItemTask('cb<?php echo $i;?>','<?php echo $task;?>')">
                  <img src="images/<?php echo $img;?>" width="16" height="16" border="0" alt="<?php echo $alt; ?>" /></a>
            </td>
            <td>
               <?php echo JText::_( $row->groupname ); ?>
            </td>
            <td>
               <a href="mailto:<?php echo $row->email; ?>">
                  <?php echo $row->email; ?></a>
            </td>
            <td nowrap="nowrap">
               <?php echo $lvisit; ?>
            </td>
            
            
            



<!-- Добавить код -->
         <td>
         <?php echo $row->registerIp; ?>
         </td>
<!-- ************ -->            
            



            
            
            <td>
               <?php echo $row->id; ?>
            </td>
         </tr>
         <?php
            $k = 1 - $k;
            }
         ?>
      </tbody>
   </table>

   <input type="hidden" name="option" value="com_users" />
   <input type="hidden" name="task" value="" />
   <input type="hidden" name="boxchecked" value="0" />
   <input type="hidden" name="filter_order" value="<?php echo $this->lists['order']; ?>" />
   <input type="hidden" name="filter_order_Dir" value="<?php echo $this->lists['order_Dir']; ?>" />
   <?php echo JHTML::_( 'form.token' ); ?>
</form>

*********************************************************************
5)Чтоб пользователи не меняли IP сами

components/com_user/controller.php



// we don't want users to edit certain fields so we will unset them
      unset($post['gid']);
      unset($post['block']);
      unset($post['usertype']);
      unset($post['registerDate']);
      unset($post['activation']);


// -- Добавить код -->
      unset($post['registerIp']);
// -- ************ -->



*************************************************************************************************************
*************************************************************************************************************
*************************************************************************************************************

Блокировка регистрации по IP если нужно

\libraries\joomla\database\table\use.php


...

      // check for existing username
      $query = 'SELECT id'
      . ' FROM #__users '
      . ' WHERE username = ' . $this->_db->Quote($this->username)
      . ' AND id != '. (int) $this->id;
      ;
      $this->_db->setQuery( $query );
      $xid = intval( $this->_db->loadResult() );
      if ($xid && $xid != intval( $this->id )) {
         $this->setError(  JText::_('WARNREG_INUSE'));
         return false;
      }
      
      
//-- Добавить код -->      
      //проверка если такой Ip
      $query = 'SELECT id'
      . ' FROM #__users '
      . ' WHERE registerIp = ' . $this->_db->Quote($this->registerIp)
      . ' AND id != '. (int) $this->id;
      ;
      $this->_db->setQuery( $query );
      $xid = intval( $this->_db->loadResult() );
      if ($xid && $xid != intval( $this->id )) {
         $this->setError(  JText::_('WARNREG_REGISTERIP'));
         return false;
      }
// -- ************ -->      
      
      

      // check for existing email

...

*****************************************************************************************
Добовляем оповещение

\language\ru-RU\ru-RU.ini

WARNREG_REGISTERIP=Этот IP адрес уже используется другим пользователем.

\language\en-GB\en-GB.ini

WARNREG_REGISTERIP=This IP address is used by another user.


 :laugh:
« Последнее редактирование: 28.12.2011, 00:50:12 от cartgen »
*

Taatshi

  • Гуру
  • 5258
  • 481 / 2
  • Верстаем и кодим. Обращайтесь ;)
То есть, если, к примеру, на сайте захотим зарегистрироваться я и моя дочь, то одна из нас идет лесом... Смысл? К тому же если не стоит проверка по IP на каждое действие - что мешает мне зарегистрировать второй аккаунт с компьютера друга? Или через прокси?

Извините, но никаких плюсов, одни минусы.
ВЕРСТКА, САЙТЫ ПОД КЛЮЧ, УДАЛЕНИЕ ВИРУСОВ, МИГРАЦИЯ НА JOOMLA 3, ОБНОВЛЕНИЕ  |  ОТЗЫВЫ 
Связь: telegram - Taatshi, почта - Taatshi на яндексе, Skype - Taatshi
*

cartgen

  • Захожу иногда
  • 54
  • 8 / 2
Taatshi,   Основная цель, была записать IP в базу и потом посмотреть IP пользователя в админке.  При случае забанить по IP, соответствующими компонентами. Понятно, что защита никакая (динамические адреса, анонимайзеры и.т.д), но хоть что-то.

Блокировку с одинаковыми IP при регистрации можно вообще убрать.

Для чего блокировка ? У меня на сайте, файло-обменник. И система баллов ( Даешь файл +1, качаешь -1) При регистрации дается бонус +1 балл.
Что мешает людям, ничего не давая, просто регистрироваться повторно?

Оповещение, что есть такой IP можно убрать. Пользователь останется в форме регистрации и не поймет почему не регистрируется.
Кароче защита примитивная. Но больше не знаю, что придумать.
« Последнее редактирование: 27.12.2011, 19:21:32 от cartgen »
*

SDKiller

  • Живу я здесь
  • 2705
  • 329 / 5
  • ...ergo sum
1. Зачем писать IP в форму и передавать в запросе, если он и так доступен через JSession?

2. Зачем делать так много хаков если вообще можно обойтись без них?
*

cartgen

  • Захожу иногда
  • 54
  • 8 / 2
1. Зачем писать IP в форму и передавать в запросе, если он и так доступен через JSession?

Ну не умею я им пользоваться. Как вытащить IP? Покажи пример, если не трудно.

2. Зачем делать так много хаков если вообще можно обойтись без них?

А как без них?
*

SDKiller

  • Живу я здесь
  • 2705
  • 329 / 5
  • ...ergo sum
... доступен через JSession

Ну это я погорячился, каюсь, в базе такого нет, плагинчик у меня один стоит, поэтому и доступен )))

Но сути это не меняет - зачем получать IP в форме, пересылать его в запросе да ещё морочить себе голову, как бы юзеры не подменили?

А тем более потрошить файлы ядра.

Делать всё без хаков плагином на onBeforeStoreUser
Там и IP получаем, можно традиционным методом, можно через класс JRequest - тогда переменные будут дополнительно отфильтрованы.

Код
$server = JRequest::get('server');
$ip = $server['REMOTE_ADDR'];

Чтобы не мучить стандартную таблицу можно создать отдельную и обращаться к ней из плагина.

И сохранять в неё IP на событие onAfterStoreUser если регистрация одобрена и пользователь сохранён.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Не отображаются сообщения при регистрации и входе

Автор hogik

Ответов: 0
Просмотров: 1396
Последний ответ 02.04.2016, 13:33:53
от hogik
Как вевысти форму регистрации на главную?

Автор vinegred

Ответов: 25
Просмотров: 11282
Последний ответ 22.03.2016, 16:04:20
от Festival
Не даёт удалить пользователя

Автор Teplophizik

Ответов: 2
Просмотров: 1835
Последний ответ 21.10.2015, 08:26:15
от Teplophizik
Не приходит ссылка с активацией пользователя в mod_login, но сама почта приходит

Автор pinkfloyd

Ответов: 3
Просмотров: 3958
Последний ответ 12.12.2014, 20:45:05
от Sanita
Приветственное сообщение пользователям после успешной регистрации

Автор Metztli

Ответов: 3
Просмотров: 2631
Последний ответ 04.08.2013, 18:28:49
от Metztli