[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: почему не срабатывает код?
Lutsk
Вроде бы всё правильно, - а код не работает:

<?php if ( ($page != 'shop.cart') || ($page != 'shop.product_details') ) { ?>
...
<?php } ?>

Причем, если просто отдельно писать условие для $page != 'shop.cart' или для $page != 'shop.product_details', то срабатывает.
Вопрос, конечно чайника, но уже по-всякому пробовал. Подскажите, плиз!



Спустя 13 минут, 16 секунд (24.02.2012 - 11:05) McLotos написал(а):
не понял смысле этого кода.
ну во-первых логичней использовать !== (не равно)

Спустя 15 минут, 17 секунд (24.02.2012 - 11:21) Lutsk написал(а):
McLotos, !== тоже не работает, - пробовал.
А код - в шаблоне джумлы, который в зависимости от страницы дает команду, - выводить html или нет. $page - текущая страница. Вот более обширный код:

<?php
$page = JRequest::getVar('page', null); // получаем текущую страницу
?>
...

<?php if ( ($page !== 'shop.cart') || ($page !== 'shop.product_details') ) { ?>
<div class="col-right sidebar"></div><!--col-right sidebar-->
<?php } ?>


P.S.
Аадресная строка браузера выглядит так (на всякий):
хттп://домен/index.php?page=shop.cart&option=com_virtuemart
хттп://домен/index.php?page=shop.browse&category_id=6&option=com_virtuemart&Itemid=1

Спустя 5 минут, 36 секунд (24.02.2012 - 11:26) shmali написал(а):
Цитата
ну во-первых логичней использовать !== (не равно)

И с чего это логически ?
Цитата
if ( $page != 'shop.cart' || $page != 'shop.product_details' )


вот так пиши

Спустя 4 минуты, 6 секунд (24.02.2012 - 11:30) Lutsk написал(а):
shmali, не срабатывает. Я удивлен.
И главное, - в шаблоне есть еще один кусок кода, - он работает как надо:

if ($page == 'shop.product_details' || $page == 'shop.cart') {
$col_layout = 'col2-left-layout';
}

тут оператор ==

Спустя 4 минуты, 11 секунд (24.02.2012 - 11:35) shmali написал(а):
Это не может не работать , либо у тебя в $page не то что ты ожидаешь , либо дальше в if косяки . Дай больше кода посмотрим.
Для начала сделай

var_dump($page);die;

и посмотри что там лежит , чтоб ты был уверен что не ошибся ни на 1 символ .

Спустя 4 минуты, 33 секунды (24.02.2012 - 11:39) Rand написал(а):
Lutsk - Ошибка в логике. Условие будет истинно всегда. Замени ИЛИ (||) на И (&&)

Спустя 5 минут, 10 секунд (24.02.2012 - 11:44) shmali написал(а):
Цитата
Ошибка в логике. Условие будет истинно всегда. Замени ИЛИ (||) на И (&&)

а ели ему надо выполнять действия при условии что что $page не равен одному из значений ? В чем ошибка ?

Спустя 7 минут, 35 секунд (24.02.2012 - 11:52) Lutsk написал(а):
вот:

<?php defined( '_JEXEC' ) or die( 'Restricted access' ); ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<
html xmlns="http://www.w3.org/1999/xhtml" xml:lang="<?php echo $this->language; ?>" lang="<?php echo $this->language; ?>" >
<?php
$page = JRequest::getVar('page', null);
//var_dump($page);die;
?>
<?php
//это работает
$col_layout = '';
if ($page == 'shop.product_details' || $page == 'shop.cart') {
$col_layout = 'col2-left-layout';
}
?>
<head></head>
<
body>

<!--
А это нет -->
<?php if ($page != 'shop.cart' || $page != 'shop.product_details' ) { ?>
<div class="col-right sidebar">
<
jdoc:include type="modules" name="right" style="xhtml" />
<
jdoc:include type="modules" name="banner_r" style="xhtml" />
</
div> <!--col-right sidebar-->
<?php } ?>

</body>
</
html>

вар дампы:
string(9) "shop.cart"
string(20) "shop.product_details"

Спустя 2 минуты, 44 секунды (24.02.2012 - 11:55) shmali написал(а):
Ну так все правильно ))

Ты говоришь - Если $page НЕ равен shop.cart или Не равен shop.product_details

делай вот это
Цитата
{ ?>
<div class="col-right sidebar">
<jdoc:include type="modules" name="right" style="xhtml" />
<jdoc:include type="modules" name="banner_r" style="xhtml" />
</div> <!--col-right sidebar-->
<?php } ?>


А $page РАВЕН потому тебя и не пропускает дальше ))

Спустя 34 секунды (24.02.2012 - 11:55) Rand написал(а):
shmali, тогда надо использовать вот такую запись:
if ($page == 'shop.product_details' || $page == 'shop.cart')
http://ru.wikipedia.org/wiki/%D0%97%D0%B0%...%B0%D0%BD%D0%B0

Спустя 2 минуты, 18 секунд (24.02.2012 - 11:57) shmali написал(а):
Цитата
а ели ему надо выполнять действия при условии что что $page не равен одному из значений ? В чем ошибка ?


Прочти внимательно ))) НЕ равен, если это ты про мою реплику .

А ему да , чтоб пропустило дальше надо сделать как написал , просто я не понимаю логику его кода , не знаю чего он хочет добиться . Может ему надо чтоб при неравенстве пропускало ... Трудно за него додумывать

Спустя 1 минута, 11 секунд (24.02.2012 - 11:59) McLotos написал(а):
Цитата
а ели ему надо выполнять действия при условии что что $page не равен одному из значений ?

if ($page!==''){}
Если $page не равно.

Этот фрагмент чистый код
<?php //это работает
$col_layout = '';
if ($page == 'shop.product_details' || $page == 'shop.cart') {
$col_layout = 'col2-left-layout';
}
?>


а вот это

<!-- А это нет -->
<?php if ($page != 'shop.cart' || $page != 'shop.product_details' ) { ?>
<div class="col-right sidebar">
<
jdoc:include type="modules" name="right" style="xhtml" />
<
jdoc:include type="modules" name="banner_r" style="xhtml" />
</
div> <!--col-right sidebar-->
<?php } ?>

Бредокод.

Не проще сделать
if ($page !== 'shop.cart' || $page !== 'shop.product_details' ) {
echo '<div class="col-right sidebar">
<jdoc:include type="modules" name="right" style="xhtml" />
<jdoc:include type="modules" name="banner_r" style="xhtml" />
</div> <!--col-right sidebar-->'
;
}

Зачем перемешивать Bлогику с Vлогикой? Не привыкайте так писать.

Спустя 3 минуты, 43 секунды (24.02.2012 - 12:02) Lutsk написал(а):
потому что это в шаблоне хтмл.
shmali !== тоже не работает

Спустя 1 минута, 21 секунда (24.02.2012 - 12:04) shmali написал(а):
Я и не говорил тебе это использовать ....

Я объяснил тебе почему тебя не пускает . Читай внимательно .
Цитата
Ну так все правильно ))

Ты говоришь - Если $page НЕ равен shop.cart или Не равен shop.product_details

делай вот это
Цитата
{ ?>
<div class="col-right sidebar">
<jdoc:include type="modules" name="right" style="xhtml" />
<jdoc:include type="modules" name="banner_r" style="xhtml" />
</div> <!--col-right sidebar-->
<?php } ?>


А $page РАВЕН потому тебя и не пропускает дальше ))


Спустя 2 минуты, 4 секунды (24.02.2012 - 12:06) Lutsk написал(а):
для эксперимента написал вот это, - тоже не сработало:
<?php if ($page !== 'shop.cart' || $page !== 'shop.product_details' ) { 
echo '<div class="col-right sidebar"></div>';
} ?>

прям загадка

Спустя 2 минуты, 25 секунд (24.02.2012 - 12:08) shmali написал(а):
Слушай , ты заставляешь меня флудить, а я этого не люблю ! Я же русским языком тебе говорю

Не работает потому что $page == 'hop.cart' а условие обратное .

Читай внимательно что тебе пишут!

Спустя 3 минуты, 39 секунд (24.02.2012 - 12:12) sharki написал(а):
McLotos
Если учесть что это вывод в шаблоне, следовательно используется нативный шаблонизатор PHP. Это равносильно всяким там Twig'ам, Smarty.

Надо всего лишь глянуть как грамотно оформлять операторы условий, как вариант один из:

<!-- А это нет -->
<?php if ($page != 'shop.cart' || $page != 'shop.product_details' ) : ?>
<div class="col-right sidebar">
<
jdoc:include type="modules" name="right" style="xhtml" />
<
jdoc:include type="modules" name="banner_r" style="xhtml" />
</
div> <!--col-right sidebar-->
<?php endif; ?>

Спустя 1 минута, 45 секунд (24.02.2012 - 12:14) Rand написал(а):
Lutsk

Если тебе надо, чтобы вот этот код
<div class="col-right sidebar">
<
jdoc:include type="modules" name="right" style="xhtml" />
<
jdoc:include type="modules" name="banner_r" style="xhtml" />
</
div> <!--col-right sidebar-->

включался только на страницах корзины и описании продукта, то используй такую конструкцию:
if ($page == 'shop.product_details' || $page == 'shop.cart')

А если тебе надо, чтобы код включался везде, кроме страниц корзины и описание продукта, то используй вот эту конструкцию:
if($page !== 'shop.product_details' && $page !== 'shop.cart');


!== и != особой разницы нет, поскольку $page всегда будет строкой.

Спустя 2 минуты, 16 секунд (24.02.2012 - 12:16) Lutsk написал(а):
sharki, там и так и так проходит.
С оператором && всё-таки заработало, - всем спасибо!

Спустя 11 минут, 44 секунды (24.02.2012 - 12:28) McLotos написал(а):
Rand
оказался самым внимательным =)
sharki
не люблю когда смешивание, бред какой-то получается. =)

Спустя 21 минута, 52 секунды (24.02.2012 - 12:49) sharki написал(а):
McLotos
А никто и не смешивает, у тебя же есть шаблоны в папке допустим view, там он и использует эти вставки. Joomla полностью MVC
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.