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

asmuz

  • Захожу иногда
  • 60
  • 5 / 0
  • www.AsmuZ.ru
Друзья! Нужна помощь... Возможно тема обсуждалась, но я не нашел. Суть вопроса такова, я написал небольшой модуль для админки Joomla 3 серии, он просто выводит иконки со ссылками на некоторые страницы. Я хочу, чтобы после инсталляции этого модуля, он АВТОМАТИЧЕСКИ был опубликован в позиции cpanel админки.

Ковырял инсталляторы, которые это умеют делать, но по аналогии запустить не получилось  >:(

Помогите разобраться  !

вот от чего я отталкиваюсь:

Код
   <subinstall>    
<extension type="module" folder="system" dir="modules/admin/mod_poweradmin" name="mod_poweradmin" client="admin" publish="1" position="icon" title="JSN PowerAdmin Quick Icons" ordering="0" lock="0" />
    </subinstall>

Это прописано в XML инсталлятора.
Как видно, тут и модуль автоматически включаются после установки
« Последнее редактирование: 21.07.2014, 22:08:12 от b2z »
*

zomby6888

  • Завсегдатай
  • 1473
  • 171 / 3
А через установочный скрипт разве нельзя модуль опубликовать?
интернет-блог: http://websiteprog.ru
*

asmuz

  • Захожу иногда
  • 60
  • 5 / 0
  • www.AsmuZ.ru
А через установочный скрипт разве нельзя модуль опубликовать?
Может быть и можно, но как? Можете подсказать?
*

zomby6888

  • Завсегдатай
  • 1473
  • 171 / 3
ну в XML файле прописываете
Код: xml
	<scriptfile>install_script.php</scriptfile>

Ну а там примерно такое содержимое:
Код: php
...
class YourComponentNameInstallerScript
{
     ...
    //Метод, который исполняется после install/update/uninstall.
    public function postflight($type, $parent)
    {
       ...// здесь запрос в бд на публикацию модуля
    }
    ...
}
интернет-блог: http://websiteprog.ru
*

asmuz

  • Захожу иногда
  • 60
  • 5 / 0
  • www.AsmuZ.ru
Сделал вот так, но после установки белый экран... Что делаю не так?
И не пойму как еще задать позицию для модуля?

Код
<?php
defined('_JEXEC') or die('Restricted access');

class Mod_CobalticonsInstallerScript
{
public function postflight($type, $parent)
{
parent::postflight($type, $parent);
$db = JFactory::getDbo();
$query = $db->getQuery(true);
$query->update('#__modules');
$query->set('published = 1');
$query->where("module = 'mod_cobalticons'");
$db->setQuery($query);
$db->execute();
}
}
Скопировал и переделал этот кусок кода с другого инсталлятора
*

asmuz

  • Захожу иногда
  • 60
  • 5 / 0
  • www.AsmuZ.ru
Убрал parent::postflight($type, $parent); все заработало!
*

zomby6888

  • Завсегдатай
  • 1473
  • 171 / 3
ага позиция там же прописывается по идее:
$query->set('position = yourposition');
интернет-блог: http://websiteprog.ru
*

asmuz

  • Захожу иногда
  • 60
  • 5 / 0
  • www.AsmuZ.ru
И вот вроде бы все отлично, ан нет...

В принципе скрипт отрабатывает на ура, модуль публикуется в нужную позицию, но не появляется... Вот что отображается в менеджере модулей админки после установки:



Захожу в модуль, никаких настроек привязки к пунктам меню нету, т.к. это модуль админки. Но после сохранения значение меняется на "все" и модуль отображается

В базе данных ничего при этом не изменилось... Куда копать? Где может быть это значение?
« Последнее редактирование: 21.07.2014, 20:24:21 от asmuz »
*

b2z

  • Глобальный модератор
  • 7290
  • 778 / 0
  • Разраблю понемногу
Как я понимаю, необходимо сделать вставку в таблицу _modules_menu, при этому menuid должно быть 0.
*

asmuz

  • Захожу иногда
  • 60
  • 5 / 0
  • www.AsmuZ.ru
Как я понимаю, необходимо сделать вставку в таблицу _modules_menu, при этому menuid должно быть 0.
Да, это так... Но как это сделать, ведь модуль создается с порядковым ID, а как его узнать при установке?
Может подскажете как модифицировать этот код?

Код
<?php
defined('_JEXEC') or die('Restricted access');

class Mod_CobalticonsInstallerScript
{
public function postflight($type, $parent)
{
$db = JFactory::getDbo();
$query = $db->getQuery(true);
$query->update('#__modules');
$query->set('published = 1');
                $query->set('position = "cpanel"');
$query->where("module = 'mod_cobalticons'");
$db->setQuery($query);
$db->execute();
}
}
« Последнее редактирование: 21.07.2014, 20:55:03 от asmuz »
*

b2z

  • Глобальный модератор
  • 7290
  • 778 / 0
  • Разраблю понемногу
Сделайте SELECT и найдите id ;)

Код: php
$query->select('id')
    ->from('#__modules')
    ->where('module = ' . $db->quote('mod_cobalticons'));

$moduleId = $db->setQuery($query)
    ->loadResult();
*

zomby6888

  • Завсегдатай
  • 1473
  • 171 / 3
все правильно только туда надо инсерт похоже сделать  в _modules_menu всмысле. Кстатии полезная фишка, выложи потом код чтобы копипастить)
« Последнее редактирование: 21.07.2014, 21:11:11 от zomby6888 »
интернет-блог: http://websiteprog.ru
*

asmuz

  • Захожу иногда
  • 60
  • 5 / 0
  • www.AsmuZ.ru
Дмитрий, понимаю что выгляжу полным нубом (так оно и есть), но не могли бы Вы привести полностью готовый код... Я конечно очень-очень старался, но у меня ничего не получилось. В принципе я понимаю как это работает, но вот синтаксис... Я только начинаю путь PHP девелопера, так что у меня все впереди...
*

b2z

  • Глобальный модератор
  • 7290
  • 778 / 0
  • Разраблю понемногу
Добавьте к тому, что у Вас есть.

Код: php
$query->clear();

$query->select('id')
    ->from($db->quoteName('#__modules'))
    ->where('module = ' . $db->quote('mod_cobalticons'));
 
$moduleId = $db->setQuery($query)
    ->loadResult();

$query->clear();

$query->insert($db->quoteName('#__modules_menu'))
    ->columns('moduleid', 'menuid')
    ->values($moduleId, 0);
 
$db->setQuery($query)
    ->execute();
*

asmuz

  • Захожу иногда
  • 60
  • 5 / 0
  • www.AsmuZ.ru
Дмитрий спасибо ОГРОМНОЕ!  :D :D :D
Все заработало!
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Вставка кода вызова модуля в тело шаблона другого модуля

Автор Dorfman

Ответов: 15
Просмотров: 1744
Последний ответ 19.11.2018, 21:45:54
от beliyadm
Проблема с модулем после переноса с локалки на хостинг

Автор master-smeta

Ответов: 8
Просмотров: 2236
Последний ответ 15.11.2018, 16:34:46
от master-smeta
Нужна помощь в доработке модуля под Joomla 3

Автор kik84

Ответов: 5
Просмотров: 2273
Последний ответ 30.01.2018, 22:40:30
от Елeна
Меню схлопывается после перезагрузки страницы

Автор onelawyer

Ответов: 10
Просмотров: 1241
Последний ответ 11.10.2017, 14:50:48
от effrit
Модификация модуля lastet_news вывод времени перед заголовком

Автор Morphiss

Ответов: 9
Просмотров: 1969
Последний ответ 19.04.2016, 12:41:55
от spsyper