Новости Joomla

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

Slava77

  • Захожу иногда
  • 85
  • 7 / 0
Здравствуйте!

Посоветуйте простое решение для следующей задачи:
Разрешить/запретить показ модуля на мобильных устройствах (планшеты, смартфоны).

Вариант с определением устройства через медиа-запросы (вида @media (max-width:980px){...}}) и назначением модулю условия display:none;  не подходит т.к. модуль со всем содержимым все ровно загружается и просто не отрисовывается на экране, а мне хотелось бы по ряду причин, чтобы модуль изначально не грузился, если пользователь зашел на сайт с мобильника или с планшета.

Пробовал устанавливать Advanced Module Manager (от RegularLabs) в последней версии есть возможность разрешить показ модуля на разных типах устройств, но данный продукт конфликтует с установленным у меня YJSG Framework (от YouJoomla) (если быть точным тупо обрезает/не отображает настройки для модуля которые предусмотрены в YJSG).  Плюс в Advanced Module Manager какая-то муть с назначением модулям страниц, на которых должен отображаться модуль (отсутствует стандартная Joomla-возможность "На всех страницах кроме указанных" хотя возможно я плохо разобрался) по этим причинам он мне не подошел. Может быть, подскажите какую-либо альтернативу / подобный компонент??

Возможно, есть какое-то легкое решение вообще без установки дополнительных компонентов запретить показ в мобильниках определенных модулей добавив соответствующий php-код шаблон или содержание нужного модуля?

Буду признателен за любую информацию и советы, поэтому вопросу!

 Joomla! 3.6.5
« Последнее редактирование: 15.11.2017, 03:16:39 от Slava77 »
*

djumfan

  • Захожу иногда
  • 243
  • 13 / 0
отсутствует стандартная Joomla-возможность "На всех страницах кроме указанных" хотя возможно я плохо разобрался
Такая возможность есть. Посмотрите внимательнее на настройки, они намного лучше чем в родном менеджере модулей.
*

Slava77

  • Захожу иногда
  • 85
  • 7 / 0
Такая возможность есть. Посмотрите внимательнее на настройки, они намного лучше чем в родном менеджере модулей.
Спасибо за информацию, но в любом случае этот компонент обрезает/не отображает настройки для модуля которые предусмотрены в установленном у меня YJSG-Framework,
а альтернативу подобному компоненту не подскажите ??
*

djumfan

  • Захожу иногда
  • 243
  • 13 / 0
И вам спасибо, я думал настройка по дивайсам это в про версии и только что у себя повыключал некоторые модули от мобильных устройств. Проверил - работает.

Я альтернативы не знаю. Наверное её просто нет, т.к. нет смысла для разработчиков писать менеджер модулей когда есть Advanced Module Manager.
*

Slava77

  • Захожу иногда
  • 85
  • 7 / 0
И вам спасибо, я думал настройка по дивайсам это в про версии и только что у себя повыключал некоторые модули от мобильных устройств. Проверил - работает.
Я альтернативы не знаю. Наверное её просто нет, т.к. нет смысла для разработчиков писать менеджер модулей когда есть Advanced Module Manager.
Пользуясь случаем спрошу (раз уж вы у себя проверили  ^-^) он их реально отключает (изначально не загружает) или назначает им класс display:none; на мобильных разрешениях экрана?
*

Slava77

  • Захожу иногда
  • 85
  • 7 / 0
Может быть кому то пригодится: Advanced Module Manager, если в настройках указать, чтобы модуль не отображался на мобильниках не прячет стилями отображение модулей (display:none;), а действительно блокирует загрузку этих модулей. Так как проверка на эмуляторах мобильных устройств не дала результата (модуль который не должен быть загружен - все ровно был виден, а на реальном смартфоне нет), то проверил в связке Смартфон (Android) + USB + ПК (инструменты разработчика - Chrome DevTools) Тут в общих чертах как настроить, если понадобится: https://developers.google.com/web/tools/chrome-devtools/remote-debugging/

Итог: модули у которых указано (в Advanced Module Manager) чтобы не грузились на мобильных устройствах - физически не загружаются.
*

Olg

  • Завсегдатай
  • 1170
  • 88 / 2
Код
jimport('joomla.application.web.webclient'); // load webclient library
 $client = new JWebClient(); 
А дальше обычным if
Код
if(!$client->__get('mobile') and (здесь ещё какие-то условия)):
...здесь то, что выводится не на мобильных устройствах
или наоборот
if($client->__get('mobile') and (здесь ещё какие-то условия)):
... здесь то, что выводится на мобильных устройствах
*

Slava77

  • Захожу иногда
  • 85
  • 7 / 0
Код
jimport('joomla.application.web.webclient'); // load webclient library
 $client = new JWebClient(); 
А дальше обычным if
Код
if(!$client->__get('mobile') and (здесь ещё какие-то условия)):
...здесь то, что выводится не на мобильных устройствах
или наоборот
if($client->__get('mobile') and (здесь ещё какие-то условия)):
... здесь то, что выводится на мобильных устройствах
А можете поподробнее дать информацию как этим кодом пользоваться? У меня с php - все сложно ))
Этот код добавляется в pnp файл модуля или в основной index.php ?? Нужно ли дополнительные библиотеки подключать на вроде вот этой http://mobiledetect.net/ или все будет работать за счет штатных возможностей Joomla ?
*

lexxbry

  • Живу я здесь
  • 2387
  • 67 / 8
а CSS суффикс hidden-sm hidden-xs не прокатит?
SEO-оптимизация,продвижение
Создание и сопровождение сайтов на Joomla
Миграция
*

Olg

  • Завсегдатай
  • 1170
  • 88 / 2
Всё это добро обычно пишу в index.php шаблона.
Первый кусок (подключение библиотеки) -- в начало:
Код
<?php
defined('_JEXEC') or die;
 jimport('joomla.application.web.webclient'); // load webclient library
 $client = new JWebClient(); //
...
А другие куски -- по вашей задаче. For example:
Код
<?php
defined('_JEXEC') or die;
 jimport('joomla.application.web.webclient'); // load webclient library
 $client = new JWebClient(); //
$bgMenuImagePath = путь_к_вашему_шаблону.'/images/bg/'.$menu_alias.'_bg.jpg';
$bgMenuStyle =
'html {'.'background: url('.$bgMenuImagePath.') no-repeat center center fixed;'
. '-webkit-background-size: cover;'
. '-moz-background-size: cover;'
. '-o-background-size: cover;'
. 'background-size: cover;'.'}';
if(!$client->__get('mobile'))
{
$doc->addStyleDeclaration( $bgMenuStyle );
}
добавит для "не-мобильных" устройств в head страницы CSS
Код
<style>html{background:url(путь_к_вашему_шаблону/images/bg/main_bg.jpg) no-repeat center center fixed;-webkit-background-size:cover;-moz-background-size:cover;-o-background-size:cover;background-size:cover}</style>
а помещённый внутрь тега <body> кусок
Код
<?php
if(!$client->__get('mobile')):
 ?>
<jdoc:include type="modules" name="left" style="none" />
<?php  endif;?>
выведет модули в позиции left только на десктопах ("не-мобильных" устройствах).
*

Mitriy

  • Захожу иногда
  • 86
  • 0 / 0
Может быть кому то пригодится: Advanced Module Manager, если в настройках указать, чтобы модуль не отображался на мобильниках не прячет стилями отображение модулей (display:none;), а действительно блокирует загрузку этих модулей. Так как проверка на эмуляторах мобильных устройств не дала результата (модуль который не должен быть загружен - все ровно был виден, а на реальном смартфоне нет), то проверил в связке Смартфон (Android) + USB + ПК (инструменты разработчика - Chrome DevTools) Тут в общих чертах как настроить, если понадобится: https://developers.google.com/web/tools/chrome-devtools/remote-debugging/

Итог: модули у которых указано (в Advanced Module Manager) чтобы не грузились на мобильных устройствах - физически не загружаются.
А у меня почему то показывает. Ставлю наоборот - скрывать на деcктопах - скрывает на компе и на смартфоне. Что за лажа, не пойму
« Последнее редактирование: 21.11.2017, 16:09:16 от Mitriy »
*

Slava77

  • Захожу иногда
  • 85
  • 7 / 0
А у меня почему то показывает. Ставлю наоборот - скрывать на деcктопах - скрывает на компе и на смартфоне. Что за лажа, не пойму
Там принцип такой: те виды устройств какие выбраны на тех и будет показан модуль, если вы выбрали Desktop то будет показан на ПК и не будет показан на планшетах и смартфонах.
Если вы хотите скрыть на ПК, то выберите в списке Tablet и Мобильный, а Desktop наоборот не выбирайте..
*

Mitriy

  • Захожу иногда
  • 86
  • 0 / 0
Там принцип такой: те виды устройств какие выбраны на тех и будет показан модуль, если вы выбрали Desktop то будет показан на ПК и не будет показан на планшетах и смартфонах.
Если вы хотите скрыть на ПК, то выберите в списке Tablet и Мобильный, а Desktop наоборот не выбирайте..
Это понятно. Дело оказалось в кеше. Отключил - все заработало. Вывод такой - при включенном кешировании не работает. Смысл такой - открыли страницу на десктопе, она закешировалась в файл (при включенном плагине - Кеш), при открытии странице на смартфоне страница не формируется заново, а берется уже из кеша, а там настройки для Десктопа
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться