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

enshtein

  • Захожу иногда
  • 77
  • 9 / 0
Пишу расширение для администрирования сайта из Front-End'а - эдакий Dashboard...
Очень хочется добавить возможность редактирования модулей на странице через простой клик по ссылке рядом с модулем - как к примеру это сделано в Drupale 7 (там в режиме администрирования на сайте напротив каждого блока отображается контрол настроек его), тоже самое есть в Bitrix.
Самый банальный вариант создать свой стиль оформления для всех модулей к примеру так:
Код
<?php 
  function modChrome_STYLE( $module, &$params, &$attribs )
  {
     // здесь получить ссылку на редактирования модуля используя $module->id - ID модуля
     // отдать контент модуля
  }
?>
и все бы ничего но хочется универсального решения - а не привязанного к определенному шаблону (через создание своего стиля)

Может кто-нибудь знает как можно отловить вывод модулей на странице? Жалко что в Joomla API нет такого рода событий для реакции из плагинов.
*

enshtein

  • Захожу иногда
  • 77
  • 9 / 0
в голову пришла бредовая идея:
Метод в системном плагине для теста добавляющий в начале контента модуля его ID:
   
Код
function onAfterRender() {
        if ($this->appl->isAdmin()) return;
        $body = JResponse::getBody();
        foreach (JModuleHelper::_load() as $module) {
            $body = str_ireplace($module->content, $module->id . $module->content, $body);
        }
        JResponse::setBody($body);           
    }
жесть конечно полная...
*

karabert

  • Захожу иногда
  • 276
  • 30 / 3
залезть в бд не проще?

пс и зная какие модули и где должны быть с помощью jquery например добавить HTML
« Последнее редактирование: 12.01.2012, 01:22:39 от karabert »
*

karabert

  • Захожу иногда
  • 276
  • 30 / 3
из отладки

Цитировать
SELECT id, title, module, POSITION, content, showtitle, control, params
  FROM jos_modules AS m
  LEFT JOIN jos_modules_menu AS mm
  ON mm.moduleid = m.id
  WHERE m.published = 1
  AND m.access <= 0
  AND m.client_id = 0
  AND ( mm.menuid = 16 OR mm.menuid = 0 )
  ORDER BY POSITION, ordering
*

beliyadm

  • Легенда
  • 9631
  • 1658 / 66
  • Севастополь == Россия
Код: php
jimport( 'joomla.application.module.helper' );
$mod = JModuleHelper::getModule('Название модуля');
print_r($mod);
Читать здесь http://docs.joomla.org/JModuleHelper/getModule
Все истины, которые я хочу вам изложить, — бесстыдная ложь. Записки нетрезвого кодера
Skype: beliyadm_pb
*

enshtein

  • Захожу иногда
  • 77
  • 9 / 0
залезть в бд не проще?
проще, но что мне это даст?
Суть проблемы заключается в поиске на странице этих самых модулей - и поиск в своём решении я произвожу по контенту. А контент модулей в базе есть только для статичных модулей произвольного HTML-содержимого.
пс и зная какие модули и где должны быть с помощью jquery например добавить HTML
ну то что можно знать какие модули есть на странице и выводятся на странице - это все понятно. А как вы их - эти модули найдете - мне к примеру нужно засунуть все модули на странице в тег DIV, добавить вместе с содержимым туда еще и ссылку "Edit module", в которой естественно будет использоваться ID модуля. Потому причем тут jquery я не понял пардон...

Цитировать
jimport( 'joomla.application.module.helper' );
$mod = JModuleHelper::getModule('Название модуля');
print_r($mod);
Читать здесь http://docs.joomla.org/JModuleHelper/getModule
а это к чему вообще? как это мне поможет по вашему?
Я умею получать информацию о модуле, но это совсем не то что требуется, тема о другом... (читать выше =)
*

enshtein

  • Захожу иногда
  • 77
  • 9 / 0
еще раз о то что получилось:
Код
function onAfterRender() {
    $body = JResponse::getBody();
    foreach (JModuleHelper::_load() as $module) {
        $body = str_ireplace($module->content, '<div class="border: 1px dotted red;">' . $module->content . '<a href="http://allergy/administrator/index.php?option=com_modules&client=0&task=edit&cid[]=' . $module->id . '" class="modal" rel="{handler: \'iframe\', size: {x: 1000, y: 600}}">изменить модуль</a>' . '</div>', $body);
        JResponse::setBody($body); 
    }       
}
После рендеринга страницы, а собственно и всех модулей в позициях шаблона - этот метод изменяет тело модулей округляя их в специальный DIV и добавляя ссылку на редактирование модуля. Таким образом пользователь зайдя на страницу видит границы модулей и кликнув по ссылке изменить модуль у него открывается sbox где он не уходя с Front End'а сайта получает возможность отредактировать (настроить) модуль.

Еще раз повторюсь - все это можно было решить с помощью своего стиля в шаблоне (modChrome_***) - но хочется чтобы без каких-либо изменений в шаблоне все это работало.
Все это работает, но уж больно решение корявое, потому и спросил может кто знает как красивее и правильнее проделать тоже самое.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Нужна помощь в исправлении ошибок модуля

Автор megaboy161

Ответов: 16
Просмотров: 389
Последний ответ 20.01.2020, 18:00:44
от sivers
получить ID материала, категории, раздела в шаблоне

Автор e-life

Ответов: 16
Просмотров: 18603
Последний ответ 15.05.2017, 07:36:09
от LadaDed
AJAX для модуля на 1.5

Автор voland

Ответов: 2
Просмотров: 849
Последний ответ 04.03.2016, 12:08:41
от b2z
как через AJAX запрос получить только данные из функции, без HTML кода?

Автор lottis

Ответов: 7
Просмотров: 3047
Последний ответ 26.03.2012, 02:40:54
от lottis
Модуля кнопка с кодом для Joomla 1.5 или Наш баннер,

Автор leo78

Ответов: 12
Просмотров: 7208
Последний ответ 19.12.2011, 00:35:25
от leo78