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

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

[FAQ] Joomla 2.5 - проверка на главную страницу

 (Прочитано 43903 раз)
0 Пользователей и 1 Гость смотрят эту тему.
fedragon
Давно я тут
****

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

Сообщений: 236


You move like an insect


« : 07.03.2012, 01:40:31 »

Как в 2.5 Joomla в коде проверить, на главной ли ты странице или нет?

Пробовал так
Цитировать
<?php
$menu = &JSite::getMenu();
if ($menu->getActive()!= $menu->getDefault()) {
?>
ТУТ ВЫПОЛНЯЕМЫЙ КОД
<?php } ?>

но код не лишен недостатков, срабатывает ложно бывает; хотелось бы какую-то точную проверку, чтоб знать - на главной ли я или нет.
« Последнее редактирование: 29.08.2013, 09:57:31 от b2z » Записан
Fedor Vlasenko
Профи
********

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

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


Все начинается с Value


« Ответ #1 : 18.03.2012, 00:11:05 »

При определенных условиях (главная имя домена) работает такой код
Код:
<? php if (JFactory::getURI()->toString() == JURI::base()) : ?>
<h1>Мы на главной</h1>
<?php endif; ?>
Записан
Fedor Vlasenko
Профи
********

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

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


Все начинается с Value


« Ответ #2 : 18.03.2012, 00:58:15 »

Простой пример. VirtueMart в качестве главной. Нажимаешь на категорию( я так понимаю на ссылку не привязанную к меню) и ваша проверка не срабатывает. Она вообще, по принципу работает как в первом посте от fedragon . Я же предложил совсем иной принцип сверять JFactory::getURI()->toString() адрес текущей страницы с адресом сайта JURI::base()
« Последнее редактирование: 18.03.2012, 02:43:57 от Poznakomlus » Записан
Fedor Vlasenko
Профи
********

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

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


Все начинается с Value


« Ответ #3 : 18.03.2012, 01:19:36 »

Цитировать
вам не кажется что вы бред написали?! перейдете в категорию то вы уже будете не на главной! (перешли в категорию ссылка стала mysite.ru/cat.html и она не равна mysite.ru) что то вы выдумываете!
нет не кажется. Прежде чем так заявлять, тестируйте. Ваше решение я протестировал. Автор темы не зря поднял этот вопрос. Ссылка, да имеет другое значение mysite.ru/cat.html, но проверка ваша говорит, что мы на главной странице. Мы же находимся на странице категории VirtueMart
Похожая тема

P.S. И это не решает проблему
Код:
if ($menu->getActive()->id == $menu->getDefault()->id) {}
« Последнее редактирование: 18.03.2012, 02:42:46 от Poznakomlus » Записан
fedragon
Давно я тут
****

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

Сообщений: 236


You move like an insect


« Ответ #4 : 18.03.2012, 17:38:11 »

Poznakomlus, спасибо, всё работает в лучшем виде.
frisian, не стал проверять ваш код, потому что всё заработало и так, так что не могу сказать за его эффективность
Записан
Stake1988
Осваиваюсь на форуме
***

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

Сообщений: 55


« Ответ #5 : 22.03.2012, 17:48:42 »

При определенных условиях (главная имя домена) работает такой код
Код:
<? php if (JFactory::getURI()->toString() == JURI::base()) : ?>
<h1>Мы на главной</h1>
<?php endif; ?>

Странно, почему-то при добавлении этого кода сайт падает (в данное условие заключается только один блок div), точнее в тэге <body> пусто. Может это быть связанно с тем что сайт располагается в домене .рф?
Записан
Stake1988
Осваиваюсь на форуме
***

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

Сообщений: 55


« Ответ #6 : 22.03.2012, 18:07:06 »

Поковырялся немного, заработал такой вариант:

Код:
<?php $uri = &JFactory::getURI();
$url = $uri->toString(array('path', 'query', 'fragment'));
if ($url == "/") : ?>
<div >

</div>
<?php endif ?>
Кривовато конечно, но зато работает. Не проверял как оно будет работать в выше описанных вариантах с категориями VirtueMart и т.д.
Записан
Shustry
Группа развития
*****

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

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


Рисую дизайны


« Ответ #7 : 22.03.2012, 18:27:15 »

Код
if ( JRequest::getVar('view') == 'featured' ) {$start=1;};
//и далее используем условие как хотим. Например так:
if ($start){
  echo 'Превед! Йа на главной!';
};

Записан
angpyxa
Новичок
*

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

Сообщений: 1


« Ответ #8 : 31.03.2012, 17:23:41 »

Привет! я попробовал ваши способы они что то не комильфо.. и написал свой
100% проверка

в шаблоне статьи например
templates/kino7/html/com_content/article/default.php

добавляем в любое место
$GLOBALS["myitem"] = $this->item->id; (айдишник статьи Привязанный к главному пункту меню)

templates/kino7/index.php (главный файл шаблона)

$myid = $GLOBALS["myitem"];

и где то в коде

<? if ($myid==24) :?>

тут все что на главной

 <? endif;?>
 к этому методу добавить ифку по поиску, но это уже производная..) задача решается просто

« Последнее редактирование: 31.03.2012, 17:26:55 от angpyxa » Записан
Shustry
Группа развития
*****

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

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


Рисую дизайны


« Ответ #9 : 02.04.2012, 06:58:47 »

angpyxa молодцом. Хороший велосипед. Работать с глобальными переменными при наличии фреймворка... Явно прописывать айдишники в разметке... В общем, я бы до такого не додумался.
Код
if ( JRequest::getVar('view') == 'featured' )
Всё, это самый универсальный, компактный и правильный способ проверки.
Записан
danik.html
Практически профи
*******

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

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



« Ответ #10 : 02.04.2012, 07:18:38 »

Shustry, не у всех же на главной отображается featured, ты не подумал?

Давайте помыслим.

Как вобще определить на главной мы или нет?

Можно сравнивать пункты меню - активный, и домашний.
Но домашний пункт может быть активным, даже когда мы не на домашней странице.
Тот же пример выше с виртом, который приводил Poznakomlus
Значит, этот способ не для всех случаев подходит.

Можно сравнивать url главной страницы, и урл текущей.
Если игнорировать подстроку параметров урла (то что после ?) будут например проблемы с кривожопым виртом, который шлет все формы на index.php

Можно сравнивать урлы с учетом параметров, тогда например если у нас на главной выводится категория с пагинацией, то перейдя на след. страницу мы будем какбы уже не на главной.

Подводим итог:
Каждый "главная страница" понимает по-своему. Кто то - домашний пункт меню, кто-то site.ru/ , кто-то featured статьи Joomla и тд.

А значит нет универсального способа. В каждом случае надо выбирать под свои задачи.
Записан
Shustry
Группа развития
*****

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

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


Рисую дизайны


« Ответ #11 : 02.04.2012, 07:25:15 »

danik.html, затупил, не то скопипастил. Sad Вот оно, вот оно решение моей мечты: написано Poznakomlus, доработано мной:
Код
 if (JURI::current() == JURI::base()){}
Абсолютно универсально и компактно.
Записан
danik.html
Практически профи
*******

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

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



« Ответ #12 : 02.04.2012, 07:30:09 »

Универсально, но не абсолютно. читай пост выше. А так да, наверно в 90% подойдет )
Так что закину к себе в копилку, чтоб потом самому не велосипедить.
Записан
genetics
Осваиваюсь на форуме
***

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

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


«GeneticsPro»


« Ответ #13 : 11.04.2012, 00:43:51 »

 Smiley Смотрите Joomla-документацию >> http://docs.joomla.org/How_to_determine_if_the_user_is_viewing_the_front_page
Записан
Shustry
Группа развития
*****

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

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


Рисую дизайны


« Ответ #14 : 11.04.2012, 00:49:59 »

genetics, с этого (из документации по ссылке который) способа и начал тему ТС Azn
Записан
dron
Живу я здесь
******

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

Сообщений: 1080


« Ответ #15 : 18.07.2012, 11:22:54 »

Подскажите, пожалуйста, а как вывести модуль только на главной странице? я только что на 2.5. перешел... извиняюсь за ламерский вопрос
Записан
genetics
Осваиваюсь на форуме
***

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

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


«GeneticsPro»


« Ответ #16 : 18.07.2012, 11:27:16 »

Менеджер модулей - Привязка к пунктам меню
Записан
dron
Живу я здесь
******

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

Сообщений: 1080


« Ответ #17 : 18.07.2012, 12:15:24 »

Менеджер модулей - Привязка к пунктам меню
ненене... условие в шаблоне как-то прописывается... в предыдущих Joomlaх так было.
Записан
Dgikar
Осваиваюсь на форуме
***

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

Сообщений: 147



« Ответ #18 : 28.07.2012, 00:29:21 »

http://joomlaforum.ru/index.php/topic,199690.msg1059654.html#msg1059654 - Ответ #8 - Проверено - все работает на ура!
Записан
ivan414
Новичок
*

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

Сообщений: 3


« Ответ #19 : 25.10.2012, 18:27:19 »

Помогите. Перестали открываться ссылки. Открывается только главная страница. сайт http://foto-ivan.ru/
Записан
b2z
Support Team
*****

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

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


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


« Ответ #20 : 25.10.2012, 18:31:20 »

Помогите. Перестали открываться ссылки. Открывается только главная страница. сайт http://foto-ivan.ru/
И как это относиться к этой теме? Создайте отдельную!
Записан
swyatoslaw.ivanovich
Захожу иногда
**

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

Сообщений: 14


« Ответ #21 : 30.10.2012, 15:04:45 »

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

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

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


Рисую дизайны


« Ответ #22 : 30.10.2012, 15:15:10 »

Поставить перед условием восклицательный знак. Например так:
Код
if (!((JURI::current() == JURI::base())||(JRequest::getVar('view') == 'featured')))
{};
Записан
swyatoslaw.ivanovich
Захожу иногда
**

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

Сообщений: 14


« Ответ #23 : 30.10.2012, 15:29:12 »

Поставить перед условием восклицательный знак. Например так:
Код
if (!((JURI::current() == JURI::base())||(JRequest::getVar('view') == 'featured')))
{};
Я чайник полный, так не получается=)) Мне кажется, что я совсем неправильно сделал=)) Код написал ниже, который вставлял в шаблон.
Код:
<?php if (!((JURI::current() == JURI::base())||(JRequest::getVar('view') == 'featured')))
{}; ?> модуль на внутренних страницах <?php endif; ?>
Записан
Fedor Vlasenko
Профи
********

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

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


Все начинается с Value


« Ответ #24 : 30.10.2012, 15:48:57 »

что нужно для того, что бы выводить модули только на внутренних страницах?
Все страницы кроме главной
Код
<?php if(JURI::current()!= JURI::base()){}?>
Все страницы кроме главной, привязанные к меню главной
Код
<?php if(JURI::current()!= JURI::base() && JMenuSite::getInstance('site')->getActive()->home){}?>
« Последнее редактирование: 30.10.2012, 18:21:19 от Poznakomlus » Записан
Shustry
Группа развития
*****

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

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


Рисую дизайны


« Ответ #25 : 30.10.2012, 15:53:33 »

Тогда может так?
Код
<?php if(JURI::current()!== JURI::base()){}>
Записан
swyatoslaw.ivanovich
Захожу иногда
**

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

Сообщений: 14


« Ответ #26 : 30.10.2012, 15:58:49 »

Пробую, вставляю, выдает ошибку Parse error: syntax error, unexpected '>' in /home/sandro2584/3v1.biz/docs/stylage/templates/stylage/index.php on line 38, ребят, как именно нужно прописывать в шаблоне, так?:
Код:
<?php if(JURI::current()!== JURI::base()){}>
проверка
<?php endif; ?>
Записан
swyatoslaw.ivanovich
Захожу иногда
**

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

Сообщений: 14


« Ответ #27 : 30.10.2012, 16:14:41 »

Спасибо огромное за помощь! Yes!
Записан
swyatoslaw.ivanovich
Захожу иногда
**

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

Сообщений: 14


« Ответ #28 : 30.10.2012, 16:19:21 »

Рано я радовался=)) Если писать что нибудь или вставлять между, то выводит внутри, но если в таком виде:
Код:
<?php if (JURI::current()!== JURI::base()) : ?>
<jdoc:include type="modules" name="topblock" style="xhtml" />
<?php endif; ?>
, то ничего не отображает, не выводит модули на позицию.
Записан
swyatoslaw.ivanovich
Захожу иногда
**

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

Сообщений: 14


« Ответ #29 : 30.10.2012, 16:23:46 »

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

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