Форум русской поддержки Joomla!® CMS
10.12.2016, 22:28:34 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
   
   Начало   Поиск Joomla 3.0 FAQ Joomla 2.5 FAQ Joomla 1.5 FAQ Правила форума Новости Joomla Реклама Войти Регистрация Помощь  
Страниц: [1] 2  Все   Вниз
  Добавить закладку  |  Печать  
Автор

[FAQ] Как спрятать вывод основного контента на главной

 (Прочитано 27480 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Kumigy
Захожу иногда
**

Репутация: +0/-0
Offline Offline

Сообщений: 21



« : 22.03.2011, 12:11:01 »

Доброго времени суток, Форумчане.
Подскажите пожалуйста как сделать так, что бы блок вывода контента был виден на всех страницах кроме главной?
« Последнее редактирование: 29.08.2013, 10:11:14 от b2z » Записан
Aspik
Завсегдатай
*****

Репутация: +63/-2
Offline Offline

Пол: Мужской
Сообщений: 546

В личку не писать, не отвечу.


« Ответ #1 : 22.03.2011, 14:37:45 »

Доброго времени суток, Форумчане.
Подскажите пожалуйста как сделать так, что бы блок вывода контента был виден на всех страницах кроме главной?
Примерно так:

Код:
$menu = & JSite::getMenu();

<?php if ($menu->getActive()!= $menu->getDefault()) {?>
        <jdoc:include type="component" />
<?php } ?>
Записан
Kumigy
Захожу иногда
**

Репутация: +0/-0
Offline Offline

Сообщений: 21



« Ответ #2 : 22.03.2011, 22:11:45 »

Примерно так:

Код:
$menu = & JSite::getMenu();

<?php if ($menu->getActive()!= $menu->getDefault()) {?>
        <jdoc:include type="component" />
<?php } ?>

Извиняюсь за наглость, не мог бы ты объяснить, что есть что в этом кусочке. Хочется очень понимать что я делаю))) Я лишь только понял, что переменную меню сравниваем с дефолтовым меню и при успешном сравнении выводим контент.
Записан
Kumigy
Захожу иногда
**

Репутация: +0/-0
Offline Offline

Сообщений: 21



« Ответ #3 : 22.03.2011, 22:41:39 »

<?php
$menu =& JSite::getMenu();
?>
<?php if ($menu->getActive()!= $menu->getDefault()) : ?>
<div id="content">
        <jdoc:include type="component" />
</div>
<?php endif ?>


вот так вот у меня заработало)

огромное спасибо
Записан
b2z
Support Team
*****

Репутация: +710/-0
Offline Offline

Пол: Мужской
Сообщений: 7538


Разраблю понемногу


« Ответ #4 : 23.03.2011, 11:22:08 »

Я лишь только понял, что переменную меню сравниваем с дефолтовым меню и при успешном сравнении выводим контент.
Так и есть Wink Чуток подправил код, для общего использования и добавил тему в J1.6 FAQ.

Код
<?php 
$menu = JSite::getMenu();
if ($menu->getActive()!= $menu->getDefault()): ?>
       // здесь выводим все, что не хотим показать на главной
<?php endif; ?>
Записан
kozovod
Захожу иногда
**

Репутация: +0/-0
Offline Offline

Сообщений: 14


« Ответ #5 : 08.04.2011, 00:09:13 »

Добрый день.
А если наоборот, необходимо вывести контент только на главной странице, она же главная страница JoomShopping?
Записан
DaVinchy
Давно я тут
****

Репутация: +42/-3
Offline Offline

Пол: Мужской
Сообщений: 328



« Ответ #6 : 08.04.2011, 00:15:25 »

А если наоборот, необходимо вывести контент только на главной странице, она же главная страница JoomShopping?
воскл. знак в коде уберите
Записан
Виталик
Группа развития
*****

Репутация: +123/-0
Offline Offline

Пол: Мужской
Сообщений: 1210



« Ответ #7 : 08.04.2011, 00:23:54 »

Код
<?php 
$menu = JSite::getMenu();
if ($menu->getActive()!= $menu->getDefault()): ?>
       // здесь выводим все, что не хотим показать на главной
<?php endif; ?>
а может лучше сравнивать только id: $menu->getActive()->id == $menu->getDefault()->id а не целые объекты?
Записан
b2z
Support Team
*****

Репутация: +710/-0
Offline Offline

Пол: Мужской
Сообщений: 7538


Разраблю понемногу


« Ответ #8 : 08.04.2011, 10:21:10 »

а может лучше сравнивать только id: $menu->getActive()->id == $menu->getDefault()->id а не целые объекты?

Да так будет более правильнее. Исправил код:

Код
<?php $menu = JSite::getMenu();
if ($menu->getActive()->id != $menu->getDefault()->id): ?>
       // здесь выводим все, что не хотим показать на главной
<?php endif; ?>


Код
<?php $menu = JSite::getMenu();
if ($menu->getActive()->id == $menu->getDefault()->id): ?>
       // здесь выводим все, что хотим показать на главной
<?php endif; ?>
« Последнее редактирование: 21.04.2011, 11:45:27 от bzzik » Записан
Kumigy
Захожу иногда
**

Репутация: +0/-0
Offline Offline

Сообщений: 21



« Ответ #9 : 08.04.2011, 15:37:08 »

Ребят, поясните пожалуйста,ну так для общего развития, чем второй вариант правильнее?
Записан
b2z
Support Team
*****

Репутация: +710/-0
Offline Offline

Пол: Мужской
Сообщений: 7538


Разраблю понемногу


« Ответ #10 : 08.04.2011, 17:23:02 »

В первом варианте мы сравниваем целые объекты (меню), а во втром варианте только свойсто id объектов (меню).
Записан
TerribleZ
Захожу иногда
**

Репутация: +0/-0
Offline Offline

Пол: Мужской
Сообщений: 10



« Ответ #11 : 21.06.2011, 19:05:57 »

Не срабатывает, если например находимся мы на главной странице и на главной, есть поиск - Нажимаем искать и Itemid остаётся тот же что и на главной. Или вывод модуля последних материалов(mod_articles_latest). Itemid - остаётся тот же, в ссылке меняется только id - новости.
И вообще не пойму что это за Itemid, к которому идёт привязка вывода позиций(я так понял)
« Последнее редактирование: 21.06.2011, 19:09:27 от TerribleZ » Записан
b2z
Support Team
*****

Репутация: +710/-0
Offline Offline

Пол: Мужской
Сообщений: 7538


Разраблю понемногу


« Ответ #12 : 22.06.2011, 10:33:31 »

Itemid - это уникальный Id пункта меню. Видимо у Вас не на все разделы созданы пункты меню, поэтому он остается один и тот же.
Записан
TerribleZ
Захожу иногда
**

Репутация: +0/-0
Offline Offline

Пол: Мужской
Сообщений: 10



« Ответ #13 : 22.06.2011, 12:23:49 »

Конечно не на все. Я ж не буду создавать пункт меню на поиск если он у меня выводится в виде модуля. И не буду ж создавать меню для каждой вновь созданной новости.
Решил проблему так:
Код:
<?php if (JRequest::getVar('view', null) == 'featured'): ?>
// здесь выводим все, что хотим показать на главной
<?php endif; ?>
Записан
b2z
Support Team
*****

Репутация: +710/-0
Offline Offline

Пол: Мужской
Сообщений: 7538


Разраблю понемногу


« Ответ #14 : 22.06.2011, 13:44:14 »

JRequest::getVar('view') == 'featured' - это проверка на страницу с избранными материалами. Если она у Вас главная, то все ок. Если же главаная другая страница, то этот код не сработает.
Записан
TerribleZ
Захожу иногда
**

Репутация: +0/-0
Offline Offline

Пол: Мужской
Сообщений: 10



« Ответ #15 : 08.07.2011, 12:00:37 »

Ещё проблема. Ставлю в настройке модуле "Привязка к пунктам меню" -> "Привязка модуля" -> "На всех страницах, кроме указанных" и выбираю не показывать когда пункт меню "Главная". Вроде всё ок.
НО! модуль также не отображается на тех страницах где нет никакой привязки к пунктам меню т.е. Itemid - не существует.
К примеру страница регистрации "site.ru/index.php?option=com_comprofiler&task=registers" или страница поиска "site.ru/index.php?searchword=слово&searchphrase=all&option=com_search".
Как решить эту проблему?
Записан
saturn
Захожу иногда
**

Репутация: +0/-0
Offline Offline

Сообщений: 19


« Ответ #16 : 08.07.2011, 15:56:53 »


<?php $menu = JSite::getMenu();
if ($menu->getActive()->id != $menu->getDefault()->id): ?>
        // здесь выводим все, что не хотим показать на главной
<?php endif; ?>


Подскажите, пожалуйста, куда нужно это вставить?
Записан
TerribleZ
Захожу иногда
**

Репутация: +0/-0
Offline Offline

Пол: Мужской
Сообщений: 10



« Ответ #17 : 08.07.2011, 16:07:17 »

Подскажите, пожалуйста, куда нужно это вставить?
как вариант:
www\templates\название_вашего_шаблона_сайта\index.php
Записан
b2z
Support Team
*****

Репутация: +710/-0
Offline Offline

Пол: Мужской
Сообщений: 7538


Разраблю понемногу


« Ответ #18 : 08.07.2011, 16:14:53 »

Ещё проблема. Ставлю в настройке модуле "Привязка к пунктам меню" -> "Привязка модуля" -> "На всех страницах, кроме указанных" и выбираю не показывать когда пункт меню "Главная". Вроде всё ок.
НО! модуль также не отображается на тех страницах где нет никакой привязки к пунктам меню т.е. Itemid - не существует.
К примеру страница регистрации "site.ru/index.php?option=com_comprofiler&task=registers" или страница поиска "site.ru/index.php?searchword=слово&searchphrase=all&option=com_search".
Как решить эту проблему?
Как вариант - создать меню (которое нигде не будет выводится), и в нем сделать пункты для index.php?option=com_comprofiler&task=registers и index.php?searchword=слово&searchphrase=all&option=com_search
Записан
TerribleZ
Захожу иногда
**

Репутация: +0/-0
Offline Offline

Пол: Мужской
Сообщений: 10



« Ответ #19 : 08.07.2011, 17:27:01 »

Как вариант - создать меню (которое нигде не будет выводится), и в нем сделать пункты для index.php?option=com_comprofiler&task=registers и index.php?searchword=слово&searchphrase=all&option=com_search

Это не есть решение проблемы, так как таких ссылок на сайте будет добавляться больше в зависимости от расширения возможностей(добавления новых компонентов) сайта. К примеру вот ещё сылки index.php?option=com_comprofiler&task=lostpassword (ввостановление пароля) или index.php?option=com_some_component&view=events(какой-то компонент).

Ваши предложения? Буду очень благодарен.
Записан
b2z
Support Team
*****

Репутация: +710/-0
Offline Offline

Пол: Мужской
Сообщений: 7538


Разраблю понемногу


« Ответ #20 : 08.07.2011, 19:01:12 »

А что я могу предложить? Так работает Joomla...
Записан
czp
Новичок
*

Репутация: +0/-0
Offline Offline

Сообщений: 6


« Ответ #21 : 08.07.2011, 22:39:10 »

Извеняюсь что пишу в этой теме, но что бы новую не создавтаь решил в похожей, есле что могу новую, подскажите как сделать что бы:
1.Когда заходит админ на сайт он видел БЛОК1 и в нем спрятаную инфу
2.А когда заходит модератор или кто то ниже с рангом, то он видит БЛОК2 а БЛОК1 он не видит?
3.Ну и естественно обычные бзеры не видят БЛОК1 и БЛОК2
я так понял там PHP код с доступом, типа аккес ну там ненмого поглядел в коде Joomla но сам не знаю как сделать подскажите как написать код
Записан
DaVinchy
Давно я тут
****

Репутация: +42/-3
Offline Offline

Пол: Мужской
Сообщений: 328



« Ответ #22 : 08.07.2011, 23:00:16 »

czp, здесь посмотрите
Записан
czp
Новичок
*

Репутация: +0/-0
Offline Offline

Сообщений: 6


« Ответ #23 : 08.07.2011, 23:17:19 »

ну не фурычит вот так написал, пробовал вместо администратора писать ник всеровно не фурычит, может из за того что Joomla 1,6 а там бы мануал на 1,5?

Код:
<?php
$user =& JFactory::getUser();
?>
<?php if($user-> Administrator) : ?>
<div class="tos">

</div>
<?php endif ?>

перепробовал все доступные там комбинации не робит, помогите ! Sad
« Последнее редактирование: 09.07.2011, 00:04:46 от czp » Записан
b2z
Support Team
*****

Репутация: +710/-0
Offline Offline

Пол: Мужской
Сообщений: 7538


Разраблю понемногу


« Ответ #24 : 09.07.2011, 21:10:55 »

В 1.6+ группы можно переименовывать. Поэтому проверку лучше делать по ID группы. По умолчанию администратор находится в группе Super Users и ID этой группы 8. Проверить можно так:

Код
<?php
$user = JFactory::getUser();
if ( in_array( 8, $user->groups ) ) : ?>
Здесь выводим блок для Super Users.
<?php endif; ?>

Посмотреть ID групп можно в Менеджер пользователей -> Группы пользователей.
Записан
czp
Новичок
*

Репутация: +0/-0
Offline Offline

Сообщений: 6


« Ответ #25 : 09.07.2011, 22:52:34 »

заработало,благодарю)) еше такой вопрос есле можно, есть что то типа jcoments на  1.6  а то тот модуль только с 1,5 робит а мне нужны, коменты подскажите есле не сложно
Записан
b2z
Support Team
*****

Репутация: +710/-0
Offline Offline

Пол: Мужской
Сообщений: 7538


Разраблю понемногу


« Ответ #26 : 10.07.2011, 15:40:23 »

заработало,благодарю)) еше такой вопрос есле можно, есть что то типа jcoments на  1.6  а то тот модуль только с 1,5 робит а мне нужны, коменты подскажите есле не сложно
Читаем Правила форума! Одна тема = один вопрос!
Записан
TerribleZ
Захожу иногда
**

Репутация: +0/-0
Offline Offline

Пол: Мужской
Сообщений: 10



« Ответ #27 : 11.07.2011, 12:34:12 »

А что я могу предложить? Так работает Joomla...
Решил свою проблему. Вроде бы правильно.
Т.е. если нам нужно вывести модуль везде кроме выбранных страниц(параметр "Все, кроме выбранных"). Т.е. независимо существует ItemId или нет(есть привязка к меню или нет).
Нужно в файле \libraries\joomla\application\module\helper.php
Добавить строку после строчек 317-318, чтоб было так:
Код:
$negHit = ($negId === (int) $module->menuid)
|| (!$negId && (int)$module->menuid < 0);
if (!$negId && $module->menuid <0) {$negHit = 0;}



« Последнее редактирование: 11.07.2011, 17:38:49 от TerribleZ » Записан
nik_neman
Осваиваюсь на форуме
***

Репутация: +2/-0
Offline Offline

Сообщений: 52


« Ответ #28 : 18.01.2012, 14:28:28 »

Спасибо. То что искал.
« Последнее редактирование: 18.01.2012, 14:46:03 от nik_neman » Записан
wfedin
Живу я здесь
******

Репутация: +102/-0
Offline Offline

Пол: Мужской
Сообщений: 1295



« Ответ #29 : 04.08.2012, 23:59:07 »

Нашёл решение от:
Код
<?php if (JURI::current() == JURI::base()) : ?>
<jdoc:include type="modules" name="имя позици модуля ваше" />
<?php endif; ?>
 
На данный момент лучший вариант проверки на главную
вставлять в файл шаблона отвечающий за вывод модулей. Обычно index.php
В клубных шаблонах ищите в папке layouts обычно
Хотелось бы понять достоинства и возможные недостатки обоих подходов
Записан
Страниц: [1] 2  Все   Вверх
  Добавить закладку  |  Печать  
 
Перейти в:  

Powered by SMF 1.1.21 | SMF © 2006, Simple Machines

Joomlaforum.ru is not affiliated with or endorsed by the Joomla! Project or Open Source Matters.
The Joomla! name and logo is used under a limited license granted by Open Source Matters
the trademark holder in the United States and other countries.

LiveInternet