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

Fedor Vlasenko

  • Живу я здесь
  • 3845
  • 733 / 7
  • https://fedor-vlasenko.web.app
Уважаемые господа! Хочу отметить, что есть прекрасный раздел для условий Различные условия в шаблонах Joomla 1.5
Предлагаю вам универсальное решение
И так при включенном SEF, чтобы узнать не SEF ссылку достаточно в шаблоне написать
Код: php-brief
<?php echo $_SERVER["HTTP_HOST"].'/index.php?' . http_build_query($_REQUEST); ?>
выведет не SEF ссылку.
Предлагаю вам воспользоватся функцией showPage, которая даст вам легко, без использования api Joomla, контролировать вывод на разных страницах того или иного элемента. Функция должна быть объявлена выше ее применения.
Функция возвращает два значения. True или false (разрешено или запрещено)

Код: php-brief
function showPage($x = array()){
    return array_intersect_assoc($x,  $_REQUEST) === $x;
}

Как видите, код достаточно прост. Единственный аргумент функции, это массив параметров которые нужно сравнить. Присутствуют ли они в адресе вашей страницы (не SEF ссылке). Анализируя ссылки ваших страниц вы легко можете задать ваши условия.
Пару примеров:
Спойлер
[свернуть]
Еще пример решения использования фильтров php. Создаем условие для блога категории компонента com_content
Спойлер
[свернуть]
JRequest - будет удален. И если вышеприведенное решение не помогает, смотрите для ознакомления
JInput
Фильтрация данных
*

artel-st

  • Захожу иногда
  • 350
  • 37 / 1
Спасибо, +, добавил в закладки
"Жираф - это лошадь, выполненная по всем требованиям заказчика" (с) кто-то из дизайнеров
*

streelok

  • Захожу иногда
  • 331
  • 0 / 6
я использовал вот такую запись

<?php if(showPage(array('Itemid'=>'101'))): $index="_index"; endif;?>


а можно написать к примеру на старницах Itemid 101, 102, 105 использовать $index="_index  а например на какких то других определенных использовать $page="page"  наприсал как пример...если да то подскажите пожалуйста как это правильно записать
*

Fedor Vlasenko

  • Живу я здесь
  • 3845
  • 733 / 7
  • https://fedor-vlasenko.web.app
Код: php-brief
// создаем массив с нужными значениями
$arr = Array(101, 102, 105);
// с помощью Jinput получаем значение Itemid текущей страницы
//$Itemid = JFactory::getApplication()->input->getInt('Itemid', 0);
// а лучше встроенных фильтров php
$Itemid = filter_input(INPUT_GET, 'Itemid', FILTER_VALIDATE_INT);
// проверяем находится значение $Itemid в массиве $arr
if(in_array($Itemid, $arr )):
echo 'Да'; // Мы на этой странице
else:
echo 'Нет'; // Itemid страницы не находится  в массиве $arr
endif;
*

streelok

  • Захожу иногда
  • 331
  • 0 / 6
спасибо большое! но зачем усложнять с различными созданием масивов и разными функциями?

в стврой версии исмользовалось
$Itemid = JRequest::getInt( 'Itemid', 1, 'get' );

а я щас смотрю по вашему коду на замену пришкл код
$Itemid = JFactory::getApplication()->input->getInt('Itemid', 0);

потом просто работать с условиями обычными $Itemid   .... нет же ни какой разницы? это я щас спрашиваю как у длюдей разбирающихся в этом все хорошо а не для того чтобы поумничать)))
*

Fedor Vlasenko

  • Живу я здесь
  • 3845
  • 733 / 7
  • https://fedor-vlasenko.web.app
но зачем усложнять с различными созданием масивов и разными функциями?
можешь и так писать, это личное дело, но величина кода будет увеличиваться, гораздо короче создать массив и в нем перебирать значения
// Используем switch-case
Код: php-brief
switch ($Itemid) {
case 101:
    echo "101 - id меню";
    break;
case 102:
    echo "102 - id меню";
    break;
case 105:
    echo "105 - id меню";
    break;
default:
    echo "остальные меню";
}
*

Kalipso

  • Захожу иногда
  • 89
  • 0 / 1
Подскажите, пожалуйста, как в Joomla 2.5 задать такое условие: в материалах определённой категории (по id) для всех групп, кроме одной (по id) выводить некое сообщение?
*

Fedor Vlasenko

  • Живу я здесь
  • 3845
  • 733 / 7
  • https://fedor-vlasenko.web.app
для всех групп, кроме одной (по id) выводить некое сообщение?
а с не авторизованными, что будем делать?
*

Kalipso

  • Захожу иногда
  • 89
  • 0 / 1
а с не авторизованными, что будем делать?
На сайте есть:
1. неавторизованные
2. авторизованные "родители" (это новая группа)
3. авторизованные не "родители"


Сообщение не должно быть видно только "родителям". Остальным - не "родителям" и всем неавторизованным - должно быть видно сообщение "Чтобы принять участие в обсуждении, становитесь родителями" :). Сообщение должно выводиться в материалах из определённой категории.
« Последнее редактирование: 21.02.2014, 09:58:59 от Kalipso »
*

Fedor Vlasenko

  • Живу я здесь
  • 3845
  • 733 / 7
  • https://fedor-vlasenko.web.app
Решение
Код: php-brief
<?php 
function showPage($x = array()){
    return array_intersect_assoc($x,  $_REQUEST) == $x;
}
//группа пользователей которой не показываем - 8, номер категории материалов19
if(showPage(array('option'=>'com_content', 'view'=>'article', 'catid'=>'19')) &&
!in_array(8, JFactory::getUser()->getAuthorisedGroups())):?>
<span>"Чтобы принять участие в обсуждении, становитесь родителями"</span>
<?php endif;?>
*

Kalipso

  • Захожу иногда
  • 89
  • 0 / 1
Решение...
Отлично, благодарствую!
*

waterfly

  • Захожу иногда
  • 83
  • 0 / 0
Добрый вечер. Подскажите пожалуйста. В шаблоне компонента вывожу модуль таким образом:
Код
<?php $modules =JModuleHelper::getModules('user-review-item'); foreach ($modules as $module){ echo JModuleHelper::renderModule($module);} ?>
Как составить условие для вывода другого модуля если первый оказался пустой?
*

Fedor Vlasenko

  • Живу я здесь
  • 3845
  • 733 / 7
  • https://fedor-vlasenko.web.app
Здесь вы выводите не модуль, а модули в позиции user-review-item
Пожалуйста, приводите код к удобочитаемому виду.
Так лучше
Код: php-brief
$modules = JModuleHelper::getModules('user-review-item');
$html = "";
foreach ($modules as $module) {
    $html .= JModuleHelper::renderModule($module);
}
if ($html == ""):
    echo "Пусто";
else:
    echo $html;
endif;
метод 
echo JFactory::getDocument()->countModules('user-review-item');
выведет вам количество модулей в позиции
в шаблоне можно
$this->countModules('user-review-item');
посмотрите здесь как выводить один модуль
Несколько модулей в одной статье
Примерно как  то
Код: php-brief
$html = "";
$module = JModuleHelper::getModule('mod_banners');
$html =  JModuleHelper::renderModule($module);
if(!$html):
    $module = JModuleHelper::getModule('mod_custom');
    $html =  JModuleHelper::renderModule($module);
endif;
echo $html;
*

koyot777

  • Захожу иногда
  • 135
  • 1 / 2
  • Не щекочи койота..
Всем привет! подскажите как можно в шаблоне сделать ссылку "вход" и "выход" отображающуюся только гостям или зарег пользователям?
для дж1.5 вроде есть ответ а вот на дж2.5 не смог найти. заранее благодарен за помощь.
*

verstalshik

  • Завсегдатай
  • 1754
  • 95 / 1
Главную определяю так, где-то нарыл, работает четко!
Т.е. что такое главная? это та стр, которая назначена как ДЕФАУЛТная!
Правим файл index.php, на примере шаблона протостар:

1 ШАГ
Спойлер
[свернуть]

2 ШАГ
Спойлер
[свернуть]

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

Fedor Vlasenko

  • Живу я здесь
  • 3845
  • 733 / 7
  • https://fedor-vlasenko.web.app
*

dron

  • Завсегдатай
  • 1580
  • 16 / 10
Друзья, день добрый! прошу помощи. использовал ваш код для джумшопинга:

<?php if(showPage(array('option'=>'com_jshopping')) && !showPage(array('controller'=>'product'))):?>
На всех страницах магазина кроме продуктов
<?php endif;?>

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

Заранее спасибо!
*

Fedor Vlasenko

  • Живу я здесь
  • 3845
  • 733 / 7
  • https://fedor-vlasenko.web.app
Страница продукта так должна определятся
Код: php-brief
<?php if(showPage(array('option'=>'com_jshopping', 'controller'=>'product'))):?>
<div class="left">Страница продукта левый блок</div>
<?php endif; ?>
Может еще эта тема чем то поможет в поиске решения
Ширина модулей в зависимости от количества опубликованных позиций (Решение)
*

oleg_v

  • Осваиваюсь на форуме
  • 15
  • 0 / 0
Здравствуйте подскажите как для определенной категории материалов (например id9) добавить к классу class="articles" класс colums (class="articles colums)

<div class="articles<?php if  ?  { echo ' colums';} ?>">

Спасибо.
*

Fedor Vlasenko

  • Живу я здесь
  • 3845
  • 733 / 7
  • https://fedor-vlasenko.web.app
Примерно так
Код: php-brief
<?
$input = JFactory::getApplication()->input;
$option   = $input->getCmd('option', '');
$catid = $input->getInt('catid', '');
$cls = 'articles';
if($option == 'com_content' && $catid == 9){
$cls .= ' colums';
}
?>
Код: html4strict
<div class="<?=$cls;?>">
*

oleg_v

  • Осваиваюсь на форуме
  • 15
  • 0 / 0
Примерно так
Код: php-brief
<?
$input = JFactory::getApplication()->input;
$option   = $input->getCmd('option', '');
$catid = $input->getInt('catid', '');
$cls = 'articles';
if($option == 'com_content' && $catid == 9){
$cls .= ' colums';
}
?>
Код: html4strict
<div class="<?=$cls;?>">

очень благодарен!
*

midav

  • Давно я тут
  • 926
  • 115 / 1
Код: php
$Itemid = filter_input(INPUT_GET, 'Itemid', FILTER_VALIDATE_INT);
Если использовать в шаблоне, возвращает NULL . Поскольку массив $_GET пустой . А в $_REQUEST переменные Itemid, option, view и т.д. есть . Почему так ?
Ответы на вопросы по CSS . Откройте для себя Firebug
*

Fedor Vlasenko

  • Живу я здесь
  • 3845
  • 733 / 7
  • https://fedor-vlasenko.web.app
в $_REQUEST заносятся данные не только с $_GET а также $_POST
кроме того эти массивы глобальные и может какой то код заносит туда свои значения после в массив
INPUT_GET берет данные из GET запроса
*

midav

  • Давно я тут
  • 926
  • 115 / 1
Это понятно . POST тоже пустой .

Я к тому, что вот эта конструкция, с помощью фильтров php , не срабатывает в Joomla 3 . По крайней мере у меня на тестовом сайте .
Код: php
// с помощью Jinput получаем значение Itemid текущей страницы
//$Itemid = JFactory::getApplication()->input->getInt('Itemid', 0);
// а лучше встроенных фильтров php
$Itemid = filter_input(INPUT_GET, 'Itemid', FILTER_VALIDATE_INT);
Ответы на вопросы по CSS . Откройте для себя Firebug
*

fsv

  • Живу я здесь
  • 2765
  • 402 / 2
Я к тому, что вот эта конструкция, с помощью фильтров php , не срабатывает в Joomla 3 .
Код: php
$Itemid = $_GET['Itemid'] ? $_GET['Itemid'] : '';
if( $Itemid ){
    $Itemid = filter_var($Itemid, FILTER_SANITIZE_NUMBER_INT);
}
Веб-разработка: заказ. Только новая объемная разработка. Качественно, дорого.
*

Fedor Vlasenko

  • Живу я здесь
  • 3845
  • 733 / 7
  • https://fedor-vlasenko.web.app
Код: php-brief
$Itemid = isset($_REQUEST['Itemid'])? $_REQUEST['Itemid']: NULL;
if( $Itemid ){
    $Itemid = filter_var($Itemid, FILTER_SANITIZE_NUMBER_INT);
}
а так
*

midav

  • Давно я тут
  • 926
  • 115 / 1
Код: php
$Itemid = $_GET['Itemid'] ? $_GET['Itemid'] : '';
if( $Itemid ){
    $Itemid = filter_var($Itemid, FILTER_SANITIZE_NUMBER_INT);
}

Смысл этой конструкции ? Она не получит значение переменной, потому  что в $_GET этой переменной нет .
Надо получать значение напрямую из $_REQUEST или с помощью родного класса Joomla JInput .

А пишу я всё это вот по этому поводу :
Код
// с помощью Jinput получаем значение Itemid текущей страницы
//$Itemid = JFactory::getApplication()->input->getInt('Itemid', 0);
// а лучше встроенных фильтров php
$Itemid = filter_input(INPUT_GET, 'Itemid', FILTER_VALIDATE_INT);
Ответы на вопросы по CSS . Откройте для себя Firebug
*

midav

  • Давно я тут
  • 926
  • 115 / 1
Код: php-brief
$Itemid = isset($_REQUEST['Itemid'])? $_REQUEST['Itemid']: NULL;
if( $Itemid ){
    $Itemid = filter_var($Itemid, FILTER_SANITIZE_NUMBER_INT);
}
а так

Так конечно всё будет .  ^-^ Только в чём выгода по сравнению с JInput ?
Ответы на вопросы по CSS . Откройте для себя Firebug
*

Fedor Vlasenko

  • Живу я здесь
  • 3845
  • 733 / 7
  • https://fedor-vlasenko.web.app
скорость само собой. Ты используешь встроенные средства языка. Хочу отметить, что ранее Jinput не обрабатывал должным образом ссылки.
Программистам легче привыкнуть к одним функциям, значит еще переносимость кода под другие cms
*

SolopoV

  • Давно я тут
  • 573
  • 16 / 0
  • зеленею...
Попался кривенький компонент, но что бы код не переписывать, нашел лазейку для нормального функционирования.

Вопрос в следующем:

Имеем .php файл в админке компонента, часть кода в этом файле:

Код
}
return JURI::root().'cache/'.$cacheFile;
}

Мне необходимо вывести строчку по условию:

Если для фронта сайта, то строка неизменна:
Код
return JURI::root().'cache/'.$cacheFile;

Если для админки, то строка другая должна быть:
Код
return JURI::root().'administrator/cache/'.$cacheFile;

Как определить условие вывода для админки и для фронта?

Заранее благодарю за совет, кто знает каким образом это сделать.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Шаблоны Joomlart, Gavick, Yootheme, RocketTheme для Joomla: легально и с обновлениями, no warez

Автор _ib_

Ответов: 168
Просмотров: 198752
Последний ответ 15.04.2023, 18:26:50
от AS1969
Где в Joomla 3.4.3 шаблон материала? Шаблон Yootheme Organic

Автор annushka

Ответов: 13
Просмотров: 4786
Последний ответ 13.09.2022, 11:14:56
от tuztref
Master3 – современный удобный гибкий шаблон для Joomla! 3 на фреймворке UIkit 3

Автор dron

Ответов: 81
Просмотров: 7583
Последний ответ 11.09.2021, 03:12:59
от vasileк
Как убрать tooltip в регистрации в Joomla 3?

Автор KoloS

Ответов: 13
Просмотров: 8097
Последний ответ 24.08.2021, 19:00:51
от coolplaymaster
Сменить текст placeholder в поле поиска Joomla 3.x

Автор Poincare

Ответов: 7
Просмотров: 1542
Последний ответ 09.06.2021, 15:39:26
от Akeksandr