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

asmuz

  • Осваиваюсь на форуме
  • 62
  • 5
  • 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

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

asmuz

  • Осваиваюсь на форуме
  • 62
  • 5
  • www.AsmuZ.ru
А через установочный скрипт разве нельзя модуль опубликовать?
Может быть и можно, но как? Можете подсказать?
СОЗДАВАЙ. ВПЕЧАТЛЯЙ! СОВЕРШЕНСТВУЙ!!!
*

zomby6888

  • Живу я здесь
  • 1484
  • 167
ну в XML файле прописываете
Код: xml
	<scriptfile>install_script.php</scriptfile>

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

asmuz

  • Осваиваюсь на форуме
  • 62
  • 5
  • 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

  • Осваиваюсь на форуме
  • 62
  • 5
  • www.AsmuZ.ru
Убрал parent::postflight($type, $parent); все заработало!
СОЗДАВАЙ. ВПЕЧАТЛЯЙ! СОВЕРШЕНСТВУЙ!!!
*

zomby6888

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

asmuz

  • Осваиваюсь на форуме
  • 62
  • 5
  • www.AsmuZ.ru
И вот вроде бы все отлично, ан нет...

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



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

В базе данных ничего при этом не изменилось... Куда копать? Где может быть это значение?
« Последнее редактирование: 21.07.2014, 20:24:21 от asmuz »
СОЗДАВАЙ. ВПЕЧАТЛЯЙ! СОВЕРШЕНСТВУЙ!!!
*

b2z

  • Support Team
  • 7460
  • 742
  • Разраблю понемногу
*

asmuz

  • Осваиваюсь на форуме
  • 62
  • 5
  • 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

  • Support Team
  • 7460
  • 742
  • Разраблю понемногу
Сделайте SELECT и найдите id ;)

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

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

zomby6888

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

asmuz

  • Осваиваюсь на форуме
  • 62
  • 5
  • www.AsmuZ.ru
Дмитрий, понимаю что выгляжу полным нубом (так оно и есть), но не могли бы Вы привести полностью готовый код... Я конечно очень-очень старался, но у меня ничего не получилось. В принципе я понимаю как это работает, но вот синтаксис... Я только начинаю путь PHP девелопера, так что у меня все впереди...
СОЗДАВАЙ. ВПЕЧАТЛЯЙ! СОВЕРШЕНСТВУЙ!!!
*

b2z

  • Support Team
  • 7460
  • 742
  • Разраблю понемногу
Добавьте к тому, что у Вас есть.

Код: 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

  • Осваиваюсь на форуме
  • 62
  • 5
  • www.AsmuZ.ru
Дмитрий спасибо ОГРОМНОЕ!  :D :D :D
Все заработало!
СОЗДАВАЙ. ВПЕЧАТЛЯЙ! СОВЕРШЕНСТВУЙ!!!
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Модификация модуля lastet_news вывод времени перед заголовком

Автор Morphiss

Ответов: 9
Просмотров: 880
Последний ответ 19.04.2016, 12:41:55
от spsyper
Нужна помощь в доработке модуля под Joomla 3

Автор kik84

Ответов: 4
Просмотров: 819
Последний ответ 06.03.2016, 21:08:58
от Елeна
Редирект сразу после авторизации на различные урлы

Автор AlekVolsk

Ответов: 5
Просмотров: 617
Последний ответ 01.03.2015, 00:55:30
от Aleks.Denezh
Создание платного модуля

Автор fiter

Ответов: 7
Просмотров: 691
Последний ответ 04.08.2014, 18:27:05
от neo85r
[Решено] Как вывести строки из бд - удовлетворяющие требование SQL запроса!

Автор artemka

Ответов: 11
Просмотров: 763
Последний ответ 21.07.2014, 20:58:07
от artemka