Новости Joomla

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

theflame

  • Осваиваюсь на форуме
  • 37
  • 1 / 0
Есть модуль контактной формы. Хочу в него добавить обратный отсчёт времени. Для этого хочу использовать дату завершения публикации в самом модуле. Т. е. эта дата будет одновременно и концом публикации модуля и крайним значением счётчика.

Вариант print $params->get('publish_down') ничего не даёт.
Я так понимаю, что по такой схеме можно дёрнуть только параметры, которые задаются в самом модуле.

Помогите, пожалуйста.
Спасибо.
*

NewUsers

  • Живу я здесь
  • 2307
  • 215 / 0
  • +375 (25) 627-16-99 (WhatsApp, Telegram)
Создай новый системный плагин с функцией
Код: php
function onPrepareModuleList(&$modules)
{
$app = JFactory::getApplication();
if($app->isAdmin()){ return; }

$app = JFactory::getApplication();
$Itemid = $app->input->getInt('Itemid', 0);
$groups = implode(',', JFactory::getUser()->getAuthorisedViewLevels());
$lang = JFactory::getLanguage()->getTag();
$clientId = (int) $app->getClientId();

$cacheId = $groups . $clientId . $Itemid;

$db = JFactory::getDbo();

$query = $db->getQuery(true)
->select('m.id, m.title, m.module, m.position, m.content, m.showtitle, m.params, m.publish_down, mm.menuid')
->from('#__modules AS m')
->join('LEFT', '#__modules_menu AS mm ON mm.moduleid = m.id')
->where('m.published = 1')
->join('LEFT', '#__extensions AS e ON e.element = m.module AND e.client_id = m.client_id')
->where('e.enabled = 1');

$date = JFactory::getDate();
$now = $date->toSql();
$nullDate = $db->getNullDate();
$query->where('(m.publish_up = ' . $db->quote($nullDate). ' OR m.publish_up <= ' . $db->quote($now). ')')
->where('(m.publish_down = ' . $db->quote($nullDate). ' OR m.publish_down >= ' . $db->quote($now). ')')
->where('m.access IN (' . $groups . ')')
->where('m.client_id = ' . $clientId)
->where('(mm.menuid = ' . $Itemid . ' OR mm.menuid <= 0)');

if ($app->isClient('site') && $app->getLanguageFilter())
{
$query->where('m.language IN (' . $db->quote($lang). ',' . $db->quote('*'). ')');
$cacheId .= $lang . '*';
}

$query->order('m.position, m.ordering');
$db->setQuery($query);

try
{
$cache = JFactory::getCache('com_modules', 'callback');
$modules = $cache->get(array($db, 'loadObjectList'), array(), md5($cacheId), false);

}
catch (RuntimeException $e)
{
JLog::add(JText::sprintf('JLIB_APPLICATION_ERROR_MODULE_LOAD', $e->getMessage()), JLog::WARNING, 'jerror');
return array();
}
}
Занимаюсь создание расширений для Joomla 3.10.x и 4.2.x | Доработка и настройка сайтов. Занимаюсь создание Интернет магазинов с нуля на собственном компоненте + оптимизация загрузки страницы (после предоставляю техподдержку).
Работа с DOM деревом на PHP
*

theflame

  • Осваиваюсь на форуме
  • 37
  • 1 / 0
Создай новый системный плагин с функцией

Блин, спасибо за ответ, но я тупо не понимаю, что мне нужно сделать. Как сделать этот плагин и как потом всё равно в модулё дёрнуть нужную переменную? И неужели только так можно достичь эту цель? Нет другого способа прямо из модуля дёрнуть нужную переменную через ООП? Должны же быть классы и доступ к ним через модуль. Или в джумле не так?
*

NewUsers

  • Живу я здесь
  • 2307
  • 215 / 0
  • +375 (25) 627-16-99 (WhatsApp, Telegram)
Блин, спасибо за ответ, но я тупо не понимаю, что мне нужно сделать. Как сделать этот плагин и как потом всё равно в модулё дёрнуть нужную переменную? И неужели только так можно достичь эту цель? Нет другого способа прямо из модуля дёрнуть нужную переменную через ООП? Должны же быть классы и доступ к ним через модуль. Или в джумле не так?

Это конечно же можно изменить прямо в файлах Joomla, но придется править после каждого обновления...
так что надо создать системный плагин (он будет вложением)

Что бы использовать publish_down в модуле надо написать
Код: php
<?php echo $module->publish_down; ?>
Занимаюсь создание расширений для Joomla 3.10.x и 4.2.x | Доработка и настройка сайтов. Занимаюсь создание Интернет магазинов с нуля на собственном компоненте + оптимизация загрузки страницы (после предоставляю техподдержку).
Работа с DOM деревом на PHP
*

theflame

  • Осваиваюсь на форуме
  • 37
  • 1 / 0
Это конечно же можно изменить прямо в файлах Joomla, но придется править после каждого обновления...
так что надо создать системный плагин (он будет вложением)

Что бы использовать publish_down в модуле надо написать
Код: php
<?php echo $module->publish_down; ?>


Я правильно понимаю, что $module->publish_down без вашего плагина не сработает? Просто, я до этого интуитивно и сейчас пробовал, результата не было. В каких ещё случаях этот плагин полезен? Я просто параноидально отношусь ко всему, что не относится к ядру, не сделано мной или не понято мной. Не добавит ли этот плагин уязвимость моему сайту?

По поводу обновлений модуля, с одной стороны, понимаю вас. Но я учел это. Взял в xml-файле плагина вырезал ссылку и часть по поводу обновления. Там достаточно простой модуль. Вряд ли мне нужно будет сильно что-то обновлять. Потом с дополнительным плагином тоже не факт, что после обновления ядра сам плагин не нужно будет обновлять.

Поэтому всё-таки хотелось бы найти решение простого вывода той информации в нужном мне месте модуля. Я даже готов перекопать тот модуль под себя. Он по лицензии GPL2 и вообще в 1 файл, всё просто. По сути в конце выйдет полностью мой модуль, который я уже и так во многом поменял. Кстати, может проблема в том, что у этого модуля нет ни файла helper.php, ни файла шаблона /html/default/php.


П.С. У меня джумла 3.8.0 и РНР7. Пока всё работало, включая jcomments и JoomShopping с рядом его дополнений. Может будут какие-то мысли ещё, чтоб это заработало?
« Последнее редактирование: 05.10.2017, 15:52:02 от theflame »
*

NewUsers

  • Живу я здесь
  • 2307
  • 215 / 0
  • +375 (25) 627-16-99 (WhatsApp, Telegram)
Я правильно понимаю, что $module->publish_down без вашего плагина не сработает?

Совершенно верно!

В каких ещё случаях этот плагин полезен?
У меня на сайте используются несколько шаблонов, и мне приходится использовать эту функцию, т. к. в SQL запрос добавляю условие на вывод позиций которые относятся именно в выбранному шаблону...


Не добавит ли этот плагин уязвимость моему сайту?
Пример функции можно посмотреть в файле helper.php (JPATH_LIBRARIES/cms/module) метод getModuleList().

Я имею ввиду не про обновление модуля или плагина, а про саму систему Joomla, пример функции находится в файлах Joomla, и при обновлении они будут заменены стандартными, и все правки пойдут коту под хвост....

Все что находится в переменной $module указывается в SQL запросе
Код: php
<?php $query->select('m.id, m.title, m.module, m.position, m.content, m.showtitle, m.params, mm.menuid')?>
я просто добавил в эту строку m.publish_down из-за этого можно вывести
Код: php
<?php echo $module->publish_down; ?>

П.С. У меня джумла 3.8.0 и РНР7. Пока всё работало, включая jcomments и JoomShopping с рядом его дополнений. Может будут какие-то мысли ещё, чтоб это заработало?
Если включен плагин то выводятся ошибки???? Какие? Можно скин...
Занимаюсь создание расширений для Joomla 3.10.x и 4.2.x | Доработка и настройка сайтов. Занимаюсь создание Интернет магазинов с нуля на собственном компоненте + оптимизация загрузки страницы (после предоставляю техподдержку).
Работа с DOM деревом на PHP
*

theflame

  • Осваиваюсь на форуме
  • 37
  • 1 / 0
echo $module->publish_down;

В общем, СПАСИБО.
Поборол в себе все страхи), всё сделал, как было написано. Всё работает и без каких-либо ошибок.

Спасибо.

П.С. Я правильно понимаю, если мне нужно будет ещё какую-то переменную модуля получить таким образом, то мне нужно будет в этом вашем плагине в этой строке <?php $query->select('m.id, m.title, m.module, m.position, m.content, m.showtitle, m.params, mm.menuid')?> добавить ещё, например, m.publish_up, чтобы вывести переменную $module->publish_up ? И всё, и больше ничего не надо, правильно? Круто )
*

NewUsers

  • Живу я здесь
  • 2307
  • 215 / 0
  • +375 (25) 627-16-99 (WhatsApp, Telegram)
В общем, СПАСИБО.
Поборол в себе все страхи), всё сделал, как было написано. Всё работает и без каких-либо ошибок.

Спасибо.

П.С. Я правильно понимаю, если мне нужно будет ещё какую-то переменную модуля получить таким образом, то мне нужно будет в этом вашем плагине в этой строке <?php $query->select('m.id, m.title, m.module, m.position, m.content, m.showtitle, m.params, mm.menuid')?> добавить ещё, например, m.publish_up, чтобы вывести переменную $module->publish_up ? И всё, и больше ничего не надо, правильно? Круто )

Да
Занимаюсь создание расширений для Joomla 3.10.x и 4.2.x | Доработка и настройка сайтов. Занимаюсь создание Интернет магазинов с нуля на собственном компоненте + оптимизация загрузки страницы (после предоставляю техподдержку).
Работа с DOM деревом на PHP
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Как правильно записать дату создания записи в БД?

Автор ImPuLsE

Ответов: 13
Просмотров: 2780
Последний ответ 11.09.2019, 22:58:57
от sev07
вывести данные из модуля с формой Subform form field type

Автор Glog

Ответов: 19
Просмотров: 1714
Последний ответ 22.06.2017, 13:32:07
от Glog
Зависимость модуля от компонента и страницы

Автор Тренд

Ответов: 34
Просмотров: 2455
Последний ответ 16.06.2017, 19:48:39
от dmitry_stas
Вывести вместо id название

Автор web3.0

Ответов: 7
Просмотров: 959
Последний ответ 25.04.2017, 14:28:52
от web3.0
Ошибка при создании модуля

Автор White_Tiger

Ответов: 7
Просмотров: 1786
Последний ответ 01.02.2016, 14:33:46
от robert