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

Shustry

  • Гуру
  • 6436
  • 743 / 3
у вас там <?php if(JURI::current()!== JURI::base()){}> нету перед > вопросительного знака! и не нужны фигурные скобки!
должно быть так:
 <?php if(JURI::current()!== JURI::base()): ?>
вывод всего что не на главной!
<?php endif; ?>
Ну это уже дело вкуса. Вам нравится так:
Код: php
if(JURI::current()!== JURI::base()):
//главная
endif;
Мне так:
Код: php
if (JURI::current()!== JURI::base()) {
//главная
};
*

Fedor Vlasenko

  • Живу я здесь
  • 3842
  • 726 / 7
  • Все начинается с Value
Раз определяем значение $home (на главной = true, на всех остальных = false) ;)
Код: php-brief
<?php $home =(JURI::getInstance()->toString()==JURI::base());?>
И используем где нужно.
Проверка на главную страницу
Код: php-brief
<?php if ($home):?>
   на главной
<?php endif; ?>
Вывод на всех страницах кроме главной
Код: php-brief
<?php if (!$home):?>
на всех кроме главной
<?php endif; ?>
Код: php-brief
<?php if ($home):?>
на главной
<?php else: ?>
на всех кроме главной
<?php endif; ?>
*

Askii

  • Новичок
  • 8
  • 0 / 0
Пробую, вставляю, выдает ошибку 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; ?>

Да нет же.
Просто
Код
 if(JURI::current()!== JURI::base()){}
уже полный код условия, между фигурных скобок исполняемый код пишите,
стало быть:
Код
 if(JURI::current()!== JURI::base()){/*your code is here*/}
если нужен endif, то пишете так:
Код
 if(JURI::current()!== JURI::base()):
/*your code is here*/
endif;

и второе.

у вас не работает:
Код
<?php if (JURI::current()!== JURI::base()) : ?>
<jdoc:include type="modules" name="topblock" style="xhtml" />
<?php endif; ?>
Все просто.
выражение !== - это строгое сравнение. Оно противоположно этому - "===".
А вы используете сравнение только по значению ("=="), которому противоположно это: != .

Думаю, вам уже не актуально. Но если кто пройдет в этот раздел, ему будет полезно.
*

Arkantos

  • Захожу иногда
  • 216
  • 17 / 0
  • Всё о создании сайтов: http://site-on.net
Интересные у вас способы... я считаю нужно делать главную страницу так, чтобы она имела классический адрес:
http://ваш_домен/ и всё:)

Поэтому вот как я делаю проверку на "главную" на своих сайтах:
Код
<?php if ($_SERVER['REQUEST_URI']=='/'): ?>
        ...
<?php endif ?>
Если у вас главная имеет такой же вид, то способ 100%, причём подходит для любой CMS ;)
*

Askii

  • Новичок
  • 8
  • 0 / 0
Интересные у вас способы... я считаю нужно делать главную страницу так, чтобы она имела классический адрес:
http://ваш_домен/ и всё:)

Поэтому вот как я делаю проверку на "главную" на своих сайтах:
Код
<?php if ($_SERVER['REQUEST_URI']=='/'): ?>
        ...
<?php endif ?>
Если у вас главная имеет такой же вид, то способ 100%, причём подходит для любой CMS ;)


Простенький парсер ссылок можно и для index.php написать. И потом, бывают структуры, в которых главных несколько, или они динамически меняются.
Но такой способ хорош, если остальная часть разработки ему соответствует. (:

Лично мне наиболее близок метод Fedor Vlasenko, он и универсален, и производителен. Вычисление проводится только один раз, и это хорошо.
« Последнее редактирование: 05.02.2013, 12:32:06 от Askii »
*

plovets

  • Новичок
  • 8
  • 0 / 0
Код
<?php if (JURI::current()!== JURI::base()) : ?>
<jdoc:include type="modules" name="topblock" style="xhtml" />
<?php endif; ?>
работает только если    site.ru
А если сайт мультиязычный?
 и ссылки на главную вида    /index.php/en
или /index.php/ru

Господа подскажите!
*

Arkantos

  • Захожу иногда
  • 216
  • 17 / 0
  • Всё о создании сайтов: http://site-on.net
Код
<?php if (JURI::current()!== JURI::base()) : ?>
<jdoc:include type="modules" name="topblock" style="xhtml" />
<?php endif; ?>
работает только если    site.ru
А если сайт мультиязычный?
 и ссылки на главную вида    /index.php/en
или /index.php/ru

Господа подскажите!
Как на счёт модификации моего метода пару постами выше?
Код
<?php if ($_SERVER['REQUEST_URI']=='/' or $_SERVER['REQUEST_URI']=='/index.php/en' or $_SERVER['REQUEST_URI']=='/index.php/ru'): ?>
        ...
<?php endif ?>
Подобной проверкой можно вертеть как захочется, я думаю логика довольно наглядна. Не пугайтесь, если строка покажется Вам слишком длинной, эта проверка нисколько не задержит загрузку Ваших страниц (на 0,0000....1 секунды :) ).
*

verstalshik

  • Завсегдатай
  • 1754
  • 95 / 1
а вот так?
Код
$menu = $app->getMenu();
if ($menu->getActive() == $menu->getDefault()) {блок-для-главной} else {блок-для-внутренних};
❶ НЕ СПРАВЛЯЕШЬСЯ САМ???  Поможем тут...  ❷ Калькулятор доставки - ЗАКАЖИ!!!...  ❸ Каталог компаний - ЖМИ!!!...  ❹ НОВИЧКИ! ВСЕ сюда! Первая консультация БЕСПЛАТНО!!
*

Shustry

  • Гуру
  • 6436
  • 743 / 3
а вот так?
Код
$menu = $app->getMenu();
if ($menu->getActive() == $menu->getDefault()) {блок-для-главной} else {блок-для-внутренних};
Там вроде бы это не сработает, если перейти по ссылке, у которой нет пункта меню. $menu->getActive() останецо тем же, что и $menu->getDefault()
*

verstalshik

  • Завсегдатай
  • 1754
  • 95 / 1
хм.. может быть.. как вариант, не делать такие ссылки?)))
❶ НЕ СПРАВЛЯЕШЬСЯ САМ???  Поможем тут...  ❷ Калькулятор доставки - ЗАКАЖИ!!!...  ❸ Каталог компаний - ЖМИ!!!...  ❹ НОВИЧКИ! ВСЕ сюда! Первая консультация БЕСПЛАТНО!!
*

Hishchnik

  • Захожу иногда
  • 253
  • 19 / 1
  • ©
Мне помог данный метод:
Код
<?php
$app = JFactory::getApplication();
$menu = $app->getMenu();
if ($menu->getActive() == $menu->getDefault()) {
        echo 'Главная';
}
else{
echo 'Внутренняя';
}
?>

И как писал angpyxa, тоже работает не плохо, заменяется только номер id==24 при проверке на свой
1. Помог? Благодарность выражается кнопочкой "+" ;)
2. Остановите землю я сойду!
3.
*

Aleks.Denezh

  • Живу я здесь
  • 3405
  • 426 / 4
Мне помог данный метод:
Код
<?php
$app = JFactory::getApplication();
$menu = $app->getMenu();
if ($menu->getActive() == $menu->getDefault()) {
        echo 'Главная';
}
else{
echo 'Внутренняя';
}
?>

Вот только данный метод катит если у вас на главке один материал, а если на главке будет например блог категории, или категории какого нить магазина то у вас и при переходе в статью/товар будет показываться что вы на главной
*

b2z

  • Глобальный модератор
  • 7084
  • 768 / 0
  • Разраблю понемногу
Мои 5 копеек. Не далее как вчера решал проблему проверки на главной и вышел на такой интересный способ:

Сначала обрабатываем языки:
Код: php
<?php
$lang = JFactory::getLanguage()->getTag();

switch ($lang)
{
case 'en-GB':
$base = JUri::base(). 'en/';
break;

case 'lv-LV':
$base = JUri::base(). 'lv/';
break;

case 'de-DE':
$base = JUri::base(). 'de/';
break;

case 'ru-RU':
$base = JUri::base(). 'ru/';
break;

default:
$base = JUri::base();
}
?>

Потом в нужном месте проверка:
Код: php
<?php if (JUri::current()!== JUri::base() AND JUri::current()!== $base) : ?>
<jdoc:include type="message" />
<jdoc:include type="component" />
<?php else : ?>
<div id="company-about">
<jdoc:include type="modules" name="<?php $this->_p('keynotes')?>" style="xhtml" />
<jdoc:include type="modules" name="<?php $this->_p('about')?>" style="xhtml" />
</div>
<?php endif; ?>

Но это работает только при включенном SEF.
*

sept

  • Захожу иногда
  • 60
  • 5 / 1
  • J2.5.6+VM2.0.6
А как запретить вывод модуля во всех категориях VM2, кроме главной страницы?
*

sept

  • Захожу иногда
  • 60
  • 5 / 1
  • J2.5.6+VM2.0.6
Различные условия в шаблонах Joomla 3.0 и 2.5

Автор указанной вами темы отправил меня сюда: http://joomlaforum.ru/index.php/topic,257803.msg1415850.html#msg1415850

Куда стрелять-то, ваше благородие?
*

sept

  • Захожу иногда
  • 60
  • 5 / 1
  • J2.5.6+VM2.0.6
*

Shustry

  • Гуру
  • 6436
  • 743 / 3
Если подразумевается вывод ТОЛЬКО на главной странице, то всевозможные решения выше, в этой теме.
Если вы хотите запретить вывод ТОЛЬКО в категориях VM, а везде кроме них разрешить, то см. тему по-ссылке, про различные условия.
*

Festival

  • Осваиваюсь на форуме
  • 34
  • 1 / 0
Приведите пожалуйста пример отключьки любого плагина с главной страницы? В php очень слабые знания, хотелось бы наглядно увидеть процесс.

Что бы элементарно понять что куда прописать. Мучаюсь уже вторые сутки с данной проблемой.
*

Shustry

  • Гуру
  • 6436
  • 743 / 3
Ну тут речь скорее об отключении модулей, а не плагинов. Если с php не очень, то вам проще поставить Advanced Modules Manager. Там встроена проверка на главную.
*

b2z

  • Глобальный модератор
  • 7084
  • 768 / 0
  • Разраблю понемногу
Вот к какому варианту я в итоге пришел. Учитывает многоязычность. Работает, если включен SEF.

Код: php
<?php
if (JLanguageMultilang::isEnabled())
{

        $uris = array();

foreach (JLanguageHelper::getLanguages() as $lang)
{
$uris[$lang->lang_code] = JUri::base(). $lang->sef . '/';
}

$baseUri = $uris[JFactory::getLanguage()->getTag()];
}
else
{
$baseUri = JUri::base();
}
?>

<?php if (JUri::current() == JUri::base() OR JUri::current() == $baseUri) : ?>
// здесь выводим все, что должно быть на главной странице
<?php endif; ?>
*

Fedor Vlasenko

  • Живу я здесь
  • 3842
  • 726 / 7
  • Все начинается с Value
Дима, $uris = ?
и почему не через JDocument ты определяешь
в шаблоне // Язык сайта
Код: php
$lang = $this->getLanguage();
*

b2z

  • Глобальный модератор
  • 7084
  • 768 / 0
  • Разраблю понемногу
Дима, $uris = ?
Да, забыл $uris = array(); - исправил свой пост

и почему не через JDocument ты определяешь
в шаблоне // Язык сайта
Код: php
$lang = $this->getLanguage();

Потому что через JDocument ты не получишь SEF значение.
*

Fedor Vlasenko

  • Живу я здесь
  • 3842
  • 726 / 7
  • Все начинается с Value
Потому что через JDocument ты не получишь SEF значение.
Код: php-brief
$lng = substr(JFactory::getDocument()->getLanguage(), 0, 2);
//в шаблоне так
$lng = substr($this->getLanguage(), 0, 2);
все то же самое и соответствует наименованием языков
*

b2z

  • Глобальный модератор
  • 7084
  • 768 / 0
  • Разраблю понемногу
Код: php-brief
$lng = substr(JFactory::getDocument()->getLanguage(), 0, 2);
//в шаблоне так
$lng = substr($this->getLanguage(), 0, 2);
все то же самое и соответствует наименованием языков
Ну так в адресной строке может быть что угодно, так как в неё попадает то, что указывает пользователь в менеджере языков. Ты не можешь операться на $this->getLanguage().
*

Fedor Vlasenko

  • Живу я здесь
  • 3842
  • 726 / 7
  • Все начинается с Value
опять ничего я не понял если тебе из адресной строки нужно брать
 $uri = parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH);
а далее смотреть  с помощью strpos, strripos
Цитировать
ты не можешь операться на $this->getLanguage().
это как? это язык документа.
На что мне опираться?
*

b2z

  • Глобальный модератор
  • 7084
  • 768 / 0
  • Разраблю понемногу
опять ничего я не понял если тебе из адресной строки нужно брать
 $uri = parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH);
а далее смотреть  с помощью strpos, strripos
Что убирать? Приведи пример, как с помощью этого ты вычислишь код языка в адресной строке. Не забывай, что пользователь добавляет его вручную.

это как? это язык документа.
На что мне опираться?
Язык документа не всегда равен тому, что проставляет пользователь ручками в параметре "Код языка для URL".
*

Fedor Vlasenko

  • Живу я здесь
  • 3842
  • 726 / 7
  • Все начинается с Value
Цитировать
Приведи пример, как с помощью этого ты вычислишь код языка в адресной строке.
Покажи примеры ссылок, я напишу пример
*

b2z

  • Глобальный модератор
  • 7084
  • 768 / 0
  • Разраблю понемногу
Покажи примеры ссылок, я напишу пример
Да любой домен и его главная страница:
http://www.example.com/
http://www.example.com/en/
http://www.example.com/ru/

Только учти, что en/ и ru/ не у всех такие. Это может быть и eng/ и rus/.
Суть в том, что нужен  универсальный код, который подойдет любым вариантам.
*

Fedor Vlasenko

  • Живу я здесь
  • 3842
  • 726 / 7
  • Все начинается с Value
Код: php-brief
<?php
$link1 = 'http://www.example.com/';
$link2 = 'http://www.example.com/en/a';
$link3 = 'http://www.example.com/ru/';

function get_lng($link){
$lng = explode('/', parse_url($link, PHP_URL_PATH), 3)[1];
return $lng ? $lng: 'ru'; // ru - default
}
echo get_lng($link1), '<br>', get_lng($link2), '<br>', get_lng($link3), '<br>';
к примеру так можно
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Миграция на Joomla с другой CMS

Автор cntrl

Ответов: 5
Просмотров: 425
Последний ответ 05.09.2020, 00:34:40
от effrit
Руководство пользователя Joomla! 2.5 + 10 легких шагов к освоению Joomla! 3 (книги в pdf)

Автор Marques

Ответов: 66
Просмотров: 183400
Последний ответ 07.08.2020, 11:00:23
от AlexB
[РЕШЕНО] Как в Joomla 2.5 автоматом удалять пользователей, не активировавшихся?

Автор pH43

Ответов: 2
Просмотров: 727
Последний ответ 01.06.2020, 17:16:26
от pH43
Скачивание файла после внесения контактных данных Joomla 2.5.11?

Автор marketingMLS

Ответов: 0
Просмотров: 1264
Последний ответ 11.03.2020, 17:25:39
от marketingMLS
Как вывести путь материала на страницу?

Автор Gromz

Ответов: 6
Просмотров: 515
Последний ответ 14.12.2019, 20:19:21
от Gromz