Откомменченное

2009 08 апреля

Системные сообщения frontend !J 1.5

logoПри создании собственного шаблона частенько можно забыть такую вещь, как системные сообщения движка (к примеру после отправки сообщения стандартным компонентом контактов).
Чтобы включить в шаблон их отображение, достаточно в нужном месте index.php шаблона добавить строку
1
<jdoc:include type="message" />
Формированием данных сообщений занимается файл libraries\joomla\document\html\renderer\message.php. К примеру, мне очень не нравилось, что над собственно текстом есть надпись "Сообщение", чтобы ликвидировать требуется закомментировать строку 64 (для версии 1.5.10)
1
$contents .= "\n<dt class=\"".strtolower($type)."\">".JText::_( $type )."</dt>";
Стили CSS (совершенно не понимаю, зачем разработчики здесь используют столь редко встречаемые списки определений DL DD): #system-message - весь блок сообщения #system-message dd.message ul - список, формирующий сообщения #system-message dd.error ul - список, формирующий сообщения об ошибках Данный функционал можно использовать и в своих расширениях, к примеру (взял из контактов для образца) в контроллере редирект на страницу после какого-либо действия (при условии нахождения в языковом файле соответствующей строки, можно просто текст)
1
2
$msg = JText::_( 'Thank you for your e-mail');
$this->setRedirect($link, $msg);
При желании можно заменить эти подсказки на обычные JS алерты, для этого в том же файле libraries\joomla\document\html\renderer\message.php находим кусок
1
23
45
67
89
1011
1213
1415
1617
1819
2021
22
// If messages exist render them
                if (is_array($lists))                {
                        // Build the return string                        $contents .= "\n<dl id=\"system-message\">";
                        foreach ($lists as $type => $msgs)                        {
                                if (count($msgs)) {                                        $contents .= "\n<dt class=\"".strtolower($type)."\">".JText::_( $type )."</dt>";
                                        $contents .= "\n<dd class=\"".strtolower($type)." message fade\">";                                        $contents .= "\n\t<ul>";
                                        foreach ($msgs as $msg)                                        {
                                                $contents .="\n\t\t<li>".$msg."</li>";                                        }
                                        $contents .= "\n\t</ul>";                                        $contents .= "\n</dd>";
                                }                        }
                        $contents .= "\n</dl>";                }
                return $contents;
и заменяем на
1
23
45
67
89
1011
1213
14
if (is_array($lists))
                {                        // Build the return string
                        foreach ($lists as $type => $msgs)                        {
                                if (count($msgs)) {                                        foreach ($msgs as $msg)
                                        {                                                $contents .= '<script language="javascript" type="text/javascript">alert("'.$msg.'")</script>';
                                        }                                }
                        }                }
                return $contents;
Для всех случаев не проверял данный хак, но при регистрации работает

Комментарии

0 Lic пишет нам 16.04.2009 03:13
А альретами (сообщения в окошке на ява-скрипт) как то можно заменить вывод стандартных сообщений?
Цитировать Сообщить модератору
0 Beliyadm отвечает 20.04.2009 17:26
Lic - дополнил пост выше
Цитировать Сообщить модератору
0 pedrosoft пишет нам 25.04.2009 14:12
Белый ты не прав по поводу DL DT DD, в буржуандии используются очень часто и главное по назначению, а вот наши к сожалению там где нужно использовать DL DD DT в лучшем случае лепят на дивах в худшем - на таблицах
Цитировать Сообщить модератору
0 Beliyadm отвечает 25.04.2009 14:16
Да я, в принципе, не спорю. Просто сам их не очень люблю и далеко не всегда понимаю необходимость их. Вот приведи пример, когда DD было бы лучше нежели LI && DIV? Что они в системных сообщения делают - показывают заголовок сообщения и блок с текстом - почему не всем понятным дивом сделать, результат тот же, удобство восприятия - аналогично.
Цитировать Сообщить модератору
0 pedrosoft пишет нам 26.04.2009 14:51
например для вывода заголовков новостей с датами: Дата Заголовок новости 1 Дата Заголовок новости 2 Понимаешь в данном случае мы делаем список и поэтому нужно использовать элементы которые созданы специально для создания списка. Ну вот такой у меня принцип "по возможности делать без хуйни"
Цитировать Сообщить модератору
0 Beliyadm отвечает 27.04.2009 04:06
так да, но мы то делаем только - заголовок сообщения - текст сообщения При этом заголовок только из слова "сообщения" - зачем оно юзеру нужно? Потому я и против для данного конкретного варианта использования этих тегов, лучше бы сразу дивом сделали
Цитировать Сообщить модератору
0 pedrosoft пишет нам 26.04.2009 14:53
вот гадость твой блок заменил мои теги))
Цитировать Сообщить модератору
0 Beliyadm отвечает 27.04.2009 04:06
он такой, параноидальный :)
Цитировать Сообщить модератору
0 hitnik пишет нам 17.08.2009 20:28
расскажите подробнее что куда вставлять, скачал шаблон, вроде вставил в индекс а не работает
Цитировать Сообщить модератору
0 Хацкер пишет нам 19.08.2009 18:22
После сработки алерта страница перегружается, а как бы сделать на аяксе?
Цитировать Сообщить модератору
0 Beliyadm отвечает 20.08.2009 02:39
Я когда писал пример хака - у меня подобного явления не было, по клику на "ок" ничего не перегружалось
Цитировать Сообщить модератору
0 Илья пишет нам 27.11.2009 03:54
блин у меня проблема включен систем кэш, кэшируется всё и вся, вернее что не нужно я отключаю, но не знаю как отключить кэширование с этими message? Когда отправляешь письмо в контактах просто показывается закэшированная страничка, мне вобщето пофиг я и снести эту каку могу но все таки сообщение отправлено смотрится лучше просто перегруза той же странички...
Цитировать Сообщить модератору
0 Beliyadm отвечает 27.11.2009 10:11
Только что проверил на версии 1.5.15, кеширование включено, отправил письмо и прекрасно отработало сообщение об отправке. Можете сами попробовать - http://rcoi.net/contact.html (форма обратной связи стандартная)
Цитировать Сообщить модератору
0 Илья пишет нам 27.11.2009 16:11
систем кэш включен?
Цитировать Сообщить модератору
0 Beliyadm отвечает 27.11.2009 16:23
Системный плагин - нет, только общее кеширование в глобальной конфигурации. Кстати действительно, проверил с включенным плагином - системные сообщения не отображаются.
Цитировать Сообщить модератору
0 Илья пишет нам 27.11.2009 16:31
вот вот, все бьюсь как же исключить из кэша... по идее это как позиция модуля... хотя нет.. думаю может как то кусок кода запретить к кэшированию но что-то пока безуспешно, может аякс как-то мм насчет алертов тоже не уверен ... наверно аякс должен сработать, когда жмешь баттон срабатывает аякс и выводится message, тока вот как теперь реализовать =))) хотя конечно лучше чтобы message нигде не кэшировались
Цитировать Сообщить модератору
0 Илья пишет нам 27.11.2009 18:11
помогай)) может тут есть решение, может как то через модуль это замутить... а там просто в xml исключить из кеша...
Цитировать Сообщить модератору
0 Beliyadm отвечает 27.11.2009 19:40
Прошу прощения, сейчас нет времени детально вникнуть в данную проблему, через модули никак не получится (ибо это вообще из другой оперы), если найдешь решение - отпишись обязательно. Кстати надо на форуме бы тему создать, я подобных не встречал. И как правильно заметили на оффоруме - документации по этому плагину почти нет, а его код я не разбирал
Цитировать Сообщить модератору
0 Илья пишет нам 27.11.2009 18:11
http://forum.joomla.org/viewtopic.php?p=1900993
Цитировать Сообщить модератору
0 Светлана пишет нам 19.02.2010 17:53
Воспользовалась способом, приведенным в статье для замены обычных подсказок на JS алерты. Только вот незадача - теперь при работе в админке любое действие по сохранению пункта, меню, материала и т.д. также приводит к появлению окошек типа "Материал сохранен". И пока не кликнешь на "ок" это окошко не исчезает. Что, при частых сохранениях материалов немного раздражает )))
Цитировать Сообщить модератору
0 Beliyadm отвечает 19.02.2010 18:02
Ситуация в том, что этот файл используется для сообщений как фронта так и админки, потому и получаем такой эффект в 1.5. К сожалению готового решения не знаю
Цитировать Сообщить модератору
0 Светлана отвечает 21.02.2010 22:52
А может быть вы знаете как сделать так, чтобы после того как пользователь введет данные для регистрации, сообщение о том, что письмо для активации выслано на электронную почту выводилось не на главной странице (перед материалами), а на какой-то внутренней, содержащей только этот текст. Пробовала создавать внутреннюю страницу и указывать в файле com_user/register/default.php в поле action="" путь к ней, но это не помогло. С php я не дружу - оттуда и такие извращения :-) А почему у вас в блоге не видно галочки при отправке сообщения: "Следить за комментариями в теме"?
Цитировать Сообщить модератору
0 Beliyadm отвечает 22.02.2010 03:55
Знаю, идем в components\com_user\controller.php находим там функцию function save() и в ней строку $this->setRedirect( $return, $msg );. Тут переменная $return означает страницу переадресации после сохранения (по умолчанию это главная) а $msg - сообщение. Вместо $return ставите в кавычках адрес нужной вам страницы и будет счастье
Цитировать Сообщить модератору
0 Светлана пишет нам 22.02.2010 19:17
Оказывается, нужно было править в этом же файле, только другую функцию: register_save() Спасибо за подсказку!!!
Цитировать Сообщить модератору
0 Beliyadm отвечает 22.02.2010 19:56
Точно :) Прошу прощения, замотался и не ту функцию сказал :)
Цитировать Сообщить модератору
0 Алексендр пишет нам 21.10.2010 19:55
А не подскажете куда необходимо прописывать путь к странице для отображения системного сообщения если к примеру был введен неправильный пароль?
Цитировать Сообщить модератору
0 Beliyadm отвечает 25.10.2010 15:31
Что значит "путь страницы"? Текст сообщения меняется в языковом файле
Цитировать Сообщить модератору
0 Artur пишет нам 18.06.2014 15:12
Помогите...:) Не выводится сообщение про уровень доступа... Сам див присутствует: но никакого текста. Если пользователь не залог., то текст такой: "Для просмотра нужно тра - ла ла", а вот про уровень доступа ничичик. направте в нужное русло:)
Цитировать Сообщить модератору
0 Beliyadm отвечает 18.06.2014 15:55
Немного не понял, версия движка какая? при каком действии не выводятся сообщения? Если про стандартные компоненты\действия то даже не знаю
Цитировать Сообщить модератору

Оставить коммент

Защитный код
Обновить

Откомменченное