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

Пример из статьи на этом сайте.

Если вам необходимо отобразить некоторый модуль на сайте только на главной странице сайта, и не показывать на остальных (в том числе и дочерних) страницах, можно воспользоваться решением с использованием шаблонов Joomla. Вставляем в шаблон позицию модуля с проверкой текущего компонента:

 
<?php
  if (($option == '') || ($option == 'com_frontpage')) {
    mosLoadModules ( 'user1' );
  }
?>

Вопрос: А можно сделать что-то с pathway? Чтобы если главная стр. - скрыт, остальные - виден.
Просто обычно пункт меню Главная  на главной стр ни к чему.
Спасибо.
*

era

  • Администратор
  • 1587
  • 390 / 5
  • В туалете лучше быть пользователем, чем админом.
*

userxp

  • Живу я здесь
  • 2019
  • 403 / 6
  • Злой и ужасный бармалей
2 era: наоборот,
...если главная стр. - скрыт, остальные - виден.


<?php
  
if ( isset($option) && (@$option != 'com_frontpage')) {
    
mosPathWay();
  }
?>



;)
Как правильно задавать вопрос службе технической поддержки  yes!
SGA CM 7.2.0 RC0 KANG Build GWK74 + s95allinonescript + CWM 5.0.2.6 + Modem XWKT3
*

era

  • Администратор
  • 1587
  • 390 / 5
  • В туалете лучше быть пользователем, чем админом.
*

mijsvit

  • Захожу иногда
  • 137
  • 7 / 0
Скажите, а как заставить функцию
Код
<?php
  if (!$my->id) {
    mosLoadModules ( 'user1' );
  } else {
    mosLoadModules ( 'user2' );
  }
?>

 работать в выпадающем окне формы отправки статьи на email?
Спасибо
*

mijsvit

  • Захожу иногда
  • 137
  • 7 / 0
Странно, но в этой форме почти никакие глобальные параметры не работают - почему так?
Загружается только <?php echo $row->title;?> а вот вывести автора материала таким способом уже не получается.

Вопрос интересен тем, что появится возможность автоматической подгрузки информации в поля.
*

VETERINAR

  • Давно я тут
  • 855
  • 165 / 14
  • Kiss my shiny metal ass!
Возможно, Вы забыли объявить переменную глобально.

Напишите global $имя_переменной;

Должно заработать.
*

mijsvit

  • Захожу иногда
  • 137
  • 7 / 0
Я так понял, эти переменные указываются в данном случае в файле content.php.
Прописал - но ничего не работает. Точнее информация начинает выводится везде, где захочу, а вот в pop-ap емейла - нивкакую.
*

VETERINAR

  • Давно я тут
  • 855
  • 165 / 14
  • Kiss my shiny metal ass!
Я так понял, эти переменные указываются в данном случае в файле content.php.
Прописал - но ничего не работает. Точнее информация начинает выводится везде, где захочу, а вот в pop-ap емейла - нивкакую.

Вы вставляете куда-то в функцию, да? После объявления функции это надо писать. Обычно, там уже что-то есть. Просто допишите свои глобальные переменные, которых там нет.

Типа такого что-то:

Код

<?php

function qwerty ($par1, $par2, $par3) {
global $Itemid;

// Ну а тут куча кода самой функции, которую Вы ковыряете.
}

*

mijsvit

  • Захожу иногда
  • 137
  • 7 / 0
Функция вывода данных в файле content.html.php начинается так:
Код
	function emailForm( $uid, $title, $template='', $itemid ) {
global $mainframe;

Сами переменные формируются в файле content.php, а именно начиная со строки:

Код
HTML_content::emailForm( $row->id, $row->title ...

Вот, дописал туда - все получилось.

Теперь вопросик:
Как подгрузить еще и переменные имя/email пользователя (которой по вероятности, авторизирован на сайте), чтоб вставить их в форму автоматом и сделать высший сервис?
Ребята, давайте модифицируем до конца!! :D

Мне нужно только знать, как вытянуть инфу пользователя с БД - через переменную $my?
Помогите сформировать этот запрос!
« Последнее редактирование: 26.07.2008, 03:47:01 от mijsvit »
*

VETERINAR

  • Давно я тут
  • 855
  • 165 / 14
  • Kiss my shiny metal ass!
   function emailForm( $uid, $title, $template='', $itemid ) {
      global $mainframe;


Меняем на:

   function emailForm( $uid, $title, $template='', $itemid ) {
      global $mainframe, $my;


И работаем с $my как обычно. Кстати, для предыдущего случая, так именно и надо было поступить.
*

VETERINAR

  • Давно я тут
  • 855
  • 165 / 14
  • Kiss my shiny metal ass!
Привожу пример, на всякий случай:

Код

<?php

$my->id // id
$my->email // email
$my->username // Логин
$my->name // Имя
$my->usertype // Группа

?>


Т.е. echo $my->email выведет мыло юзера. Не забывайте объявлять объект как глобальный, как я описал выше.
*

mijsvit

  • Захожу иногда
  • 137
  • 7 / 0
Большущее спасибо, Священный котэ!!
С меня сундук плюсов! :)
*

VETERINAR

  • Давно я тут
  • 855
  • 165 / 14
  • Kiss my shiny metal ass!
*

mijsvit

  • Захожу иногда
  • 137
  • 7 / 0
Скажите пожалуйста, как отобразить позицию только при просмотре конкретного раздела (по ID) в режиме полного текста?

Можна реализовать такое даными методами в принципи?
*

smart

  • Администратор
  • 6485
  • 1318 / 15
  • Хочешь сделать хорошо — сделай!
Скажите пожалуйста, как отобразить позицию только при просмотре конкретного раздела (по ID) в режиме полного текста?

Можна реализовать такое даными методами в принципи?
в принципе - можно, сначала делается фильтр на то, что мы находимся в режиме просмотра материала (на основании значения переменной $task), затем из переменных запроса получаем идентификатор материала, и по этому идентификатору дергаем из базы информацию о категории этого материала. И если нас она устраивает - вставляем позицию модуля.
*

VETERINAR

  • Давно я тут
  • 855
  • 165 / 14
  • Kiss my shiny metal ass!
К сожалению, не знаю как ограничить по разделу, бо он не передается в URL при просмотре статьи (фактически же нужно только id статьи, чтобы её вывести). Можно конечно дать ещё один запрос к базе данных, но хочется способ по изящнее. Я ещё подумаю.

Код ниже выведет модули в позиции user1 если мы находимся в режиме просмотра полного текста материала с id = 10.

Код: php
     $task = mosGetParam($_REQUEST, 'task', 'default'); // получаем значение task  в GET или если не найдено в POST
     $option =  mosGetParam($_REQUEST, 'option', 'default'); // получаем значение option  в GET или если не найдено в POST
     $id =  mosGetParam($_REQUEST, 'id', 'default'); // получаем значение id  в GET или если не найдено в POST

     if ( $task == 'view' && $option == 'com_content' && $id == 10 ) { mosLoadModules('user1', -2); }
*

mijsvit

  • Захожу иногда
  • 137
  • 7 / 0
Спасибо за помощь, Смарт!
VETERINAR, я сделал вот так:
Код
<?php
if (($option == 'com_content') && ($task == 'view')) {
if ($row->sec_id == 'ID категории') {
?>
Текст
<?php
}
}
?>
*

VETERINAR

  • Давно я тут
  • 855
  • 165 / 14
  • Kiss my shiny metal ass!
ну, подход верный. Цепляйте по id категорию, по категории раздел и выводите.

Хотя, если честно, честно мне это не нравится. Если нужно вывести что-то в конкретном материале, то, мне кажется, логичнее было бы написать мамбот, который заменяет какой-то тег на нужный Вам текст.

Мне кажется было бы изящнее.

Или даже без мамбота. Убрать нафик из шаблона mosmainbody, цеплять контент из index2.php функцией типа file() и заменять искать там нужный текст и заменять. Даже регулярка не нужна, простейший поиск в строке.
*

smart

  • Администратор
  • 6485
  • 1318 / 15
  • Хочешь сделать хорошо — сделай!
Хм, ну так как ты сделал, работать не будет. Надо примерно так:

Код: php
global $database;

// проверка на режим просмотра материала
if (($option == 'com_content') && ($task == 'view')) {
$id = intval(mosGetParam($_REQUEST, 'id', 0));
// проверка, что передан корректный идентификатор
if ($id) {
$row = new mosContent($database);
// загрузка информации о материале
if ($row->load($id)) {
// проверка идентификатора раздела
if ($row->sectionid == 1) {
// непосредственно вывод позиции
mosLoadModules('user1', -2);
}
}
}
}
*

mijsvit

  • Захожу иногда
  • 137
  • 7 / 0
Спасибки, буду пробовать!
Ребята, еще по теме вопрос:
Как вывести материал по Itemid меню?
Пробую
Код
  if (($Itemid == '') || ($Itemid == 'Номер ID')) {}
- нет реакции
« Последнее редактирование: 21.09.2009, 18:28:44 от mijsvit »
*

beliyadm

  • Легенда
  • 9512
  • 1650 / 65
  • Севастополь == Россия
Должно работать, просто echo $Itemid; что-нибудь покажет?
Все истины, которые я хочу вам изложить, — бесстыдная ложь. Записки нетрезвого кодера
Skype: beliyadm_pb
*

mijsvit

  • Захожу иногда
  • 137
  • 7 / 0
Спасибо - я забыл прописать переменную в $global, теперь все работает
*

Arina

  • Захожу иногда
  • 164
  • 1 / 0
А если вопрос на засыпку:

Главная страница является - не com_frontpage, а com_content, и нужно сделать чтобы модуль выводился только на главной, это возможно ?

Т.е. в данном случае, такие параметры не работают:

<?php
  if (($option == '') || ($option == 'com_frontpage')) {
    mosLoadModules ( 'user5' );
  }
?>

А если в этом коде вместо fronpage ставлю content, тогда модуль показывается везде и на главной и на дочерних страницах.
*

VETERINAR

  • Давно я тут
  • 855
  • 165 / 14
  • Kiss my shiny metal ass!
нужно сделать чтобы модуль выводился только на главной, это возможно ?

Код: php
<?php

$mainpage = FALSE;

if ( $_SERVER['REQUEST_URI'] == '/' || $_SERVER['REQUEST_URI'] == '/index.php' ) $mainpage = TRUE;

if ( $mainpage ) mosLoadModules ( 'user5' );

?>
*

Arina

  • Захожу иногда
  • 164
  • 1 / 0
спасибо!
*

Arina

  • Захожу иногда
  • 164
  • 1 / 0
VETERINAR, а у меня снова проблема появилась, как сделать чтобы модуль не показывался только на главной, а на других страницах (везде) показывался. Главная страница не 'com_frontpage, а com_content ?
*

VETERINAR

  • Давно я тут
  • 855
  • 165 / 14
  • Kiss my shiny metal ass!
как сделать чтобы модуль не показывался только на главной

Код: php
<?php
 
$mainpage = FALSE;
 
if ( !$_SERVER['REQUEST_URI'] == '/' || $_SERVER['REQUEST_URI'] == '/index.php' ) $mainpage = TRUE;
 
if ( $mainpage ) mosLoadModules ( 'user5' );
 
?>
*

Arina

  • Захожу иногда
  • 164
  • 1 / 0
это код тот же самый,а что нужно в нем поменять, чтобы модуль показывался везде кроме главной ?
*

VETERINAR

  • Давно я тут
  • 855
  • 165 / 14
  • Kiss my shiny metal ass!
это код тот же самый

Нет, он не тот же самый, посмотрите внимательнее. Это как "найди одно отличие" :)

Ладно, не буду мучать. Там восклицательный знак в скобках добавлен, посмотрите.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Если жизнь после неправильной уставки модулей Php5 ( установил на виртуальный) И что делать дальше?

Автор Drunk_Monkey

Ответов: 1
Просмотров: 4874
Последний ответ 08.11.2011, 20:57:42
от mohax
Создание дополнительных позиций модулей

Автор DRifat

Ответов: 6
Просмотров: 3465
Последний ответ 23.06.2009, 21:25:44
от DRifat
Добавить позиции модулей

Автор legazzz

Ответов: 10
Просмотров: 15214
Последний ответ 12.07.2008, 23:52:40
от Sedoy