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

Fedor Vlasenko

  • Живу я здесь
  • 3819
  • 717 / 7
  • Все начинается с Value
Уважаемые господа! Хочу отметить, что есть прекрасный раздел для условий Различные условия в шаблонах 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

  • Живу я здесь
  • 3819
  • 717 / 7
  • Все начинается с Value
Код: 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

  • Живу я здесь
  • 3819
  • 717 / 7
  • Все начинается с Value
но зачем усложнять с различными созданием масивов и разными функциями?
можешь и так писать, это личное дело, но величина кода будет увеличиваться, гораздо короче создать массив и в нем перебирать значения
// Используем 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

  • Живу я здесь
  • 3819
  • 717 / 7
  • Все начинается с Value
для всех групп, кроме одной (по id) выводить некое сообщение?
а с не авторизованными, что будем делать?
*

Kalipso

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


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

Fedor Vlasenko

  • Живу я здесь
  • 3819
  • 717 / 7
  • Все начинается с Value
Решение
Код: 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

  • Живу я здесь
  • 3819
  • 717 / 7
  • Все начинается с Value
Здесь вы выводите не модуль, а модули в позиции 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

  • Захожу иногда
  • 122
  • 1 / 2
  • Не щекочи койота..
Всем привет! подскажите как можно в шаблоне сделать ссылку "вход" и "выход" отображающуюся только гостям или зарег пользователям?
для дж1.5 вроде есть ответ а вот на дж2.5 не смог найти. заранее благодарен за помощь.
Jabber-Конференция Joomla`водов (чат):

netshop24.ru@conference.freize.org
*

verstalshik

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

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

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

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

Fedor Vlasenko

  • Живу я здесь
  • 3819
  • 717 / 7
  • Все начинается с Value
*

dron

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

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

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

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

Fedor Vlasenko

  • Живу я здесь
  • 3819
  • 717 / 7
  • Все начинается с Value
Страница продукта так должна определятся
Код: 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

  • Живу я здесь
  • 3819
  • 717 / 7
  • Все начинается с Value
Примерно так
Код: 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

  • Живу я здесь
  • 3819
  • 717 / 7
  • Все начинается с Value
в $_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

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

Fedor Vlasenko

  • Живу я здесь
  • 3819
  • 717 / 7
  • Все начинается с Value
Код: 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

  • Живу я здесь
  • 3819
  • 717 / 7
  • Все начинается с Value
скорость само собой. Ты используешь встроенные средства языка. Хочу отметить, что ранее Jinput не обрабатывал должным образом ссылки.
Программистам легче привыкнуть к одним функциям, значит еще переносимость кода под другие cms
*

SolopoV

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

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

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

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

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

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

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

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

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

Можно ли на Joomla создать такой дизайн?

Автор arel

Ответов: 6
Просмотров: 216
Последний ответ 19.04.2019, 12:53:45
от AlexK
Переопределение макета блога категории в шаблонах YooTheme [ Решено ]

Автор dm-krv

Ответов: 7
Просмотров: 744
Последний ответ 25.02.2019, 16:56:33
от Katya1212
Вывод настраиваемого поля материала Joomla

Автор banditman

Ответов: 5
Просмотров: 211
Последний ответ 24.02.2019, 01:11:24
от zikkuratvk
Вывести один модуль два раза Joomla

Автор Cerber

Ответов: 5
Просмотров: 227
Последний ответ 07.02.2019, 12:37:07
от fsv
Вопрос по верстке шаблона Joomla 3

Автор Pizzadox

Ответов: 13
Просмотров: 661
Последний ответ 04.12.2018, 09:51:32
от Pizzadox