Форум программистов, компьютерный форум, киберфорум
Наши страницы

PHP для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Demolution
1 / 1 / 0
Регистрация: 10.04.2011
Сообщений: 34
#1

Определение модулей в движке - PHP

09.12.2012, 19:09. Просмотров 614. Ответов 19
Метки нет (Все метки)

Здравствуйте. Ковыряюсь в движке онлайн-магазина "Rubic", и в нем в основном все на php, дошел до определенного момента и появилась потребность выводить кусок кода, при условии что некоторые боксы заполнены.

Боксы проверяются вот так:
PHP
1
2
3
4
5
6
7
if ($osC_Template->hasPageContentModules()) {
                  
                  foreach ($osC_Template->getContentModules('before') as $box) {
                     $osC_Box = new $box();
                     $osC_Box->initialize();
                     
                     if ($osC_Box->hasContent()) {
И дальше идет нужный код. Таких боксов два - "before" и "after". Информация может быть в одном из них, или в обоих. Если информации в них нет, код выводить не нужно. Я мучаюсь уже целый день, и не пойму почему не получается, не могу добиться чтобы проверяло второй бокс, только первый. Вот вроде рабочая конструкция, но else почему-то не работает
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
if ($osC_Template->hasPageContentModules()) {
                  
                  foreach ($osC_Template->getContentModules('before') as $box) {
                     $osC_Box = new $box();
                     $osC_Box->initialize();
                     
                     if ($osC_Box->hasContent()) {
                     
                     echo '1: before';
                     
                     }
                     else {
                           unset($osC_Box);
                           unset($box);
                           
                           foreach ($osC_Template->getContentModules('after') as $box) {
                           $osC_Box = new $box();
                           $osC_Box->initialize();
 
                           if ($osC_Box->hasContent()) {
                     
                           echo '2: after';
                     
                           }
 
                           }
                  
                     }
                     unset($osC_Box);
                  }
               }
В таком варианте if срабатывает, а else не хочет. Подскажите в чем проблема, где моя ошибка?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.12.2012, 19:09
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Определение модулей в движке (PHP):

IF ELSE в движке phpFOX - PHP
С Новым Годом! Банальный вопрос... В движке phpFOX 3.8.0 встречаются условия такого вида: if ($aFeed == 1 &&...

Ошибки при движке codeigniter - PHP
Написал я программу Hello Word вот код Controllers: <?php class Hello extends Controllers { function index () { ...

Не могу разобраться, в чём ошибка в движке - PHP
Добрый день, уважаемые кодеры! Вопрос вот в чём, есть сайт, движок самопис, после переноса на другой сервер не могу понять ничего. Скрипт...

в движке в файлах .htm специальный код - PHP
{if $module_data.PRODUCTS_VPE} <dd class="itemDescription"> {$module_data.PRODUCTS_VPE} </dd> {/if} в движке в файлах .htm...

Как сделать работу PHP на движке DLE - PHP
Всем привет, недавно столкнулся с трудностями, короче говоря, на DLE написал шаблон дизайн щикарный по мне, и нужны были такие действия как...

Не могу разобраться с косяками в движке доски объявлений - PHP
Есть движок сайта объявлений, вроде все хорошо. Для каждого города с админки могу прописать title, description и keywords. А вот при...

19
alpex
600 / 575 / 18
Регистрация: 16.07.2012
Сообщений: 1,760
09.12.2012, 19:12 #2
хм ну так else выполняется только в том случае когда if не выполнилось
0
Demolution
1 / 1 / 0
Регистрация: 10.04.2011
Сообщений: 34
09.12.2012, 19:23  [ТС] #3
Цитата Сообщение от alpex Посмотреть сообщение
хм ну так else выполняется только в том случае когда if не выполнилось
блок "before" заполнен только на одной странице.. Оно как бы или выводит первое, или вообще ничего не показывает. Ну для примера, если сделать вот так:

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
if ($osC_Template->hasPageContentModules()) {
                        
                        foreach ($osC_Template->getContentModules('before') as $box) {
                            $osC_Box = new $box();
                            $osC_Box->initialize();
                            
                            if ($osC_Box->hasContent()) {
                            
                            echo '1: before';
                            
                            }
                            
                            }
                        unset($osC_Box);
                        
                        foreach ($osC_Template->getContentModules('after') as $box) {
                            $osC_Box = new $box();
                            $osC_Box->initialize();
                            
                            if ($osC_Box->hasContent()) {
                            
                            echo '2: after';
                            
                            } 
                            }
                            unset($osC_Box);
                        }
То они будут выводится поочередно на каждой странице, и только на одной будут выводится оба.. Тоесть мне нужно подхватить, заполнен ли он, и выводить код один раз
0
alpex
600 / 575 / 18
Регистрация: 16.07.2012
Сообщений: 1,760
09.12.2012, 19:32 #4
сорри но я в этом движке ничего не понимаю, просто видимо неправильно понял вопрос

Добавлено через 1 минуту
этот метод hasContent() возвращает контент или что(null, false)??
0
Demolution
1 / 1 / 0
Регистрация: 10.04.2011
Сообщений: 34
09.12.2012, 19:33  [ТС] #5
Цитата Сообщение от alpex Посмотреть сообщение
сорри но я в этом движке ничего не понимаю, просто видимо неправильно понял вопрос
Та тут не в движке думаю дело, с логикой у меня не получается. А по поводу вопроса, уточню, есть два блока, если хоть в одном из них есть инфа, нужно вывести определенный код..
0
alpex
600 / 575 / 18
Регистрация: 16.07.2012
Сообщений: 1,760
09.12.2012, 19:38 #6
Цитата Сообщение от alpex Посмотреть сообщение
этот метод hasContent() возвращает контент или что(null, false)??
так что возвращается если контента нет
0
Demolution
1 / 1 / 0
Регистрация: 10.04.2011
Сообщений: 34
09.12.2012, 19:38  [ТС] #7
Цитата Сообщение от alpex Посмотреть сообщение
этот метод hasContent() возвращает контент или что(null, false)??
ммм.. сложный вопрос для меня.. нашел вот только:
PHP
1
2
3
4
5
6
7
8
9
/**
 * Checks to see if the message stack contains messages
 *
 * @access public
 */
 
    public function hasContent() {
      return !empty($this->_data);
    }
а выше
PHP
1
2
3
4
5
6
7
8
/**
 * A reference to the messages stored in the session messageToStack variable
 *
 * @var array
 * @access private
 */
 
    private $_data = array();
массив, если я правильно понимаю..
0
KOPOJI
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
16713 / 6635 / 434
Регистрация: 12.06.2012
Сообщений: 19,880
Завершенные тесты: 1
09.12.2012, 19:45 #8
Цитата Сообщение от Demolution Посмотреть сообщение
нашел вот только:
это оно и есть. возвращает true, если не пустой, иначе возвращает false.

Добавлено через 2 минуты
что именно требуется - я лично не понял..
0
Demolution
1 / 1 / 0
Регистрация: 10.04.2011
Сообщений: 34
09.12.2012, 19:45  [ТС] #9
Цитата Сообщение от KOPOJI Посмотреть сообщение
это оно и есть. возвращает true, если не пустой, иначе возвращает false.
это должно быть что-то вроде
PHP
1
if ($osC_Box->hasContent() == 'true')
верно?
0
alpex
600 / 575 / 18
Регистрация: 16.07.2012
Сообщений: 1,760
09.12.2012, 19:46 #10
а вот этот метод покажите еще $osC_Template->getContentModules
0
Demolution
1 / 1 / 0
Регистрация: 10.04.2011
Сообщений: 34
09.12.2012, 19:46  [ТС] #11
Цитата Сообщение от KOPOJI Посмотреть сообщение
что именно требуется - я лично не понял..
Эхх... Есть два блока, которые идут один за другим, мне нужно перед первым (так как на разных страницах будет заполнен один из них), вывести код (html), но только один раз, не перед каждым, а именно перед первым..
0
KOPOJI
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
16713 / 6635 / 434
Регистрация: 12.06.2012
Сообщений: 19,880
Завершенные тесты: 1
09.12.2012, 19:47 #12
Цитата Сообщение от Demolution Посмотреть сообщение
верно?
нет. условие там верное.
0
Demolution
1 / 1 / 0
Регистрация: 10.04.2011
Сообщений: 34
09.12.2012, 19:47  [ТС] #13
Цитата Сообщение от alpex Посмотреть сообщение
а вот этот метод покажите еще $osC_Template->getContentModules
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
/**
 * Return the content modules assigned to the page
 *
 * @param string $group The group name of content modules to include that the template has provided
 * @return array
 */
 
    function getContentModules($group) {
      if (isset($this->osC_Modules_Content) === false) {
        $this->osC_Modules_Content = new osC_Modules('content');
      }
 
      return $this->osC_Modules_Content->getGroup($group);
    }
0
KOPOJI
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
16713 / 6635 / 434
Регистрация: 12.06.2012
Сообщений: 19,880
Завершенные тесты: 1
09.12.2012, 19:49 #14
а такой вариант не подойдет?
PHP
1
2
3
4
5
6
7
$status = false;
 
.........
if(!$status) {
//выводим текст
$status = true;
}
0
alpex
600 / 575 / 18
Регистрация: 16.07.2012
Сообщений: 1,760
09.12.2012, 19:49 #15
PHP
1
2
3
4
5
6
7
if ($osC_Template->hasPageContentModules()) {
    echo '<pre>';
    var_dump ($osC_Template->getContentModules('before'));
    echo '<hr />';
    var_dump ($osC_Template->getContentModules('after'));
    echo '</pre>';
}
покажите что этот код выведет
0
09.12.2012, 19:49
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.12.2012, 19:49
Привет! Вот еще темы с ответами:

не работает САБ(система альянсового боя)в движке ogame - PHP
Здравствуйте! У меня проблема такая. Есть игра vgames.kz (не сочтите за рекламу) и в ней как и у всех есть отправка флота в атаку. Но вот...

Импорт и экспорт товаров в csv в собственном движке интернет-магазина - PHP
Всем привет. Подскажите как сделать или где накопать информации, на своем интернет магазине (собственный движок) , импорт и экспорт товара...

В движке dle сделать функцию после добавления нельзя изменить новость - PHP
Ку Форумчане! Сделайте каму не тяжело! Или дайте советы свои В движке dle сделать функцию после добавления и проверки модератора и...

Текстовый материал (а также пхп-код) не загружается как материал в движке сайта если присутствует символ "верхняя запятая" - PHP
Здравствуйте! Проблема такая. Я являюсь администратором сайта на php (скорее всего битрикс) и возникла следующая проблема: при...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru