Прошу не пинать ногами, я простой учитель истории, урвавший пару дней на каникулах для создания школьного сайта. Поставил Джумлу на бесплатном хостинге, стал навешивать примочки. Беда началась с того, что шаблон форума Kunena местами плохо сочетался с моим шаблоном сайта (напр., см. картинку: футер форума явно торчит, как 5-я нога). Кое-что удалось подхачить через CSS, но у некоторых элементов просто нет своего стиля (неясно вообще, откуда они берутся и как к ним подступиться). И вот я придумал гениальную вещь: когда Джумла уже вставила компонент "Форум" на страницу общего шаблона, но она ещё не отображена, надо изменить некоторые части текста HTML. Например, добавить в нужном месте стиль текста, задать div'у свойство display:none и т.п. Как я понял в итоге, надо написать плагин, который перед окончательной выдачей страницы будет вылавливать из неё некоторые строки HTML-текста и изменять их. (Какие строки отлавливать - я вроде бы могу заранее определить, в браузере через "Исходный код страницы" или с помощью DevTools). Вот что у меня получилось: Код (PHP): <?php defined( '_JEXEC' ) or die( 'Restricted access' ); jimport( 'joomla.plugin.plugin' ); class plgContentStringsubstitute extends JPlugin { function plgContentStringsubstitute( &$subject, $params ) { parent::__construct( $subject, $params ); } public function onBeforeDisplayContent( &$row, &$params, $page=0 ) { global $mainframe; $row->text = str_replace('"><a href="/forum/credits', '; font-color:#FAFAFA; font-size: .6em"><a href="/forum/credits', $row->text); return ''; } } Имеется в виду, что с помощью str_replace находим одну строку Код (html): "><a href="/forum/credits и меняем на Код (html): ; font-color:#FAFAFA; font-size: .6em"><a href="/forum/credits , (так что к стилю данного DIV'а добавляется бледность и малый размер шрифта). Я загрузил и опубликовал этот плагин - Joomla! 2.5, PHP 5.2.14 - должно бы работать?.. но изменений на сайте не видно. Пробовал onPrepareContent вместо onBeforeDisplayContent - не очень разбираюсь в этом - та же фигня! Очевидно, я что-то упускаю. Прошу прощения за нубовость, но всё же надеюсь на помощь уважаемого сообщества. Заранее благодарю!
Не нужно это... Нужно найти все-таки где кунена формирует данный файл и добавить стили. Приходите ко мне на поддержку, если хотите. Образовательные сайты, школы, УПК - 200 рублей в месяц. Размещение на хостинге, оплата домена, поддержка сайта включены в эту стоимость. Будет желание - пишите в личку.
Хм,как бы разработчики Joomla уже предусмотрели переопределение вывода показа компонента,через создание и описание вывода в шаблоне сайта.Не знаю точно,ак с Kuhena,но обычно создал папку html в шаблоне,потом папку для компонента,типа /template/my_template/html/com_kuhena/views/default.php CSS для своего нового описания размещаешь там в же,в общей папке стилей шаблона.
лучше сделать как посоветовал DKraev а если не получается так, то пробовать как советует draff если и так уж не получается, тогда надо делать плагин системным и делать все изменения после формирования страницы, это событие onAfterRender и работать там уже надо не с каким то отдельным контентом, а с буфером вывода, класс JDocument, функции getBuffer и setBuffer тогда ты уже будешь искать во всей сформированной странице но всё же лучше найти где лежит шаблон КУНЕНЫ и исправить в нём
Спасибо, DKraev, draff, woojin! DKraev, пока я надеюсь, что поддержки хватит на общественных началах. Если удастся привлечь старшеклассников, им будет очень полезно участвовать в настоящем взрослом деле. А пока проблема в том, чтобы потихоньку разобраться и допилить красивый, с богатыми возможностями сайтец. DKraev, draff, я поковырял по вашим наколкам и обнаружил, что в com_cunena есть такой display.php, который выводит все компоненты. Но даже если его закомментить целиком, и выдаётся пустая страница, там всё равно гордо торчит копирайтная ссылка. Видимо, её генерацию специально хитро запрятали - от всяких вандалов вроде меня. Код (PHP): <?php defined ( '_JEXEC' ) or die (); ?> <div id="Kunena" class="layout"> <?php $this->displayMenu (); $this->displayLoginBox (); $this->displayBreadcrumb (); // Display current view/layout $this->displayLayout(); $this->displayBreadcrumb (); $this->displayFooter (); ?> </div> Благодарю, попробую разобраться. И всё же, в общем случае, хочется иметь возможность по-простому распоряжаться окончательным видом страницы - так проще. Не надо ни с чем разбираться вглубь - взял и поменял, удалил или передвинул любые элементы. woojin, спасибо, наконец, что-то проясняется! А то в разрозненной документации очень трудно разобраться, какие-то прыжки от разжёвывания модели Наблюдателей - сразу к сложным манипуляциям с базой данных. Гуманитарий фиг разберётся. Сейчас попробую. А кстати, нельзя ли это сделать вообще не в плагине, а в самом index.php - после того, как большая часть контента сформирована, сделать там, в общем случае, поиск и замену строки? Извиняюсь за, вероятно, глупый вопрос. Но, честно, гораздо приятнее стать специалистом, задав пару глупых вопросов и получив умные ответы - чем потратить месяц на штудирование учебников... и остаться с теми же глупыми вопросами...
в каком из многочисленных? у всего есть своя очерёдность обработки, и если сделать в корневом index.php, то ничего путного не выйдет, если сделать ещё в каком то то количество сформированной страницы будет разное так что лучше делать плагином и ставить ему порядок его работы самым последним (если посмотреть в список плагинов, то там есть какой то плагин с порядковым номером 1000, это и есть то само нужное тебе число, или где то рядом с ним) ЧД и УМ, там написано про порядок работы, т.е. что первым обрабатывается и что последним