blaga 39 Опубликовано: 6 декабря 2010 Рассказать Опубликовано: 6 декабря 2010 (изменено) Доброго времени суток. У меня есть задача, написать модуль для ДЛЕ. Я начал ее реализовывать к это написано в инструкции через подключаемые файлы ({include file="engine/modules/mymod.php"}) Так вот там в документации написано. Для работы ваших модулей и вывода информации именно в том месте шаблона, где вставлен вышеуказанный тег, обязательно только одно важное условие. Вывод информации должен осуществляется только через функцию PHP echo. Я попробовал через echo все отлично выводит, НО дело в том что я хотел бы реализовать свой модуль с помощью шаблонов т.к. он будет устанавливаться на разные сайты с разным дизайном и нужно что бы переверстать его было как можно проще с помощью шаблонов не затрагивая файлы самого модуля. Раньше когда я просто дописывал в код движка свои правки то я мог сделать вывод информации через шаблоны, а теперь почему то не получается. вот конкретный пример. <?php $sql_select = "SELECT id, area, street, nhouse, rooms, floorhouse, floor, totalspace, livingspace, kitchenspace, material, layout, price, foto FROM rcat_object ORDER BY id;"; $sql_result = $db->query( $sql_select ); $tpl->load_template( 'rcat.tpl' ); while ( $row = $db->get_row( $sql_result ) ) { if($row['foto']=="null") $row['foto']="engine/data/emoticons/sad.gif"; else $row['foto']="engine/data/emoticons/smile.gif"; $tpl->set( '{area}', $row['area'] ); $tpl->set( '{street}', $row['street'] ); $tpl->set( '{nhouse}', $row['nhouse'] ); $tpl->set( '{rooms}', $row['rooms'] ); $tpl->set( '{totalspace}', $row['totalspace'] ); $tpl->set( '{livingspace}', $row['livingspace'] ); $tpl->set( '{kitchenspace}', $row['kitchenspace'] ); $tpl->set( '{material}', $row['material'] ); $tpl->set( '{layout}', $row['layout'] ); $tpl->set( '{price}', $row['price'] ); $tpl->set( '{foto}', $row['foto'] ); $tpl->set( '{id}', $row['id'] ); $tpl->compile( 'content' ); $tpl->clear(); } ?> а это файл шаблона <tr> <td>{area} - {street} - {nhouse}</td> <td>{rooms}</td> <td>{floor}/{floorhouse}</td> <td>{totalspace}/{livingspace}/{kitchenspace}</td> <td>{material}</td> <td>{layout}</td> <td>{price}</td> <td><img src="{foto}" /></td> <td><a href="/index.php?do=rfull&id={id}">Подробнее</a></td> </tr> Данный код не выводит ничего. Файл шаблона подключается т.к. нет сообщения об ошибке подключения. но информацию не выводит. ни обьявленные тэги ни простые ХТМЛ тэги. Просто пустая страница в дизайне ДЛЕ. Очень надеюсь на шаблонизатор т.к. в инструкции написано что Список переменных и классов DLE которые вы можете использовать в вашем подключаемом модуле, без дополнительного объявления: $tpl - класс DLE для работы с шаблонами. не просто же так там этот класс добавлен. Всем заранее спасибо. Изменено 6 декабря 2010 пользователем blaga Цитата Ссылка на сообщение Поделиться на других сайтах
celsoft 6 076 Опубликовано: 6 декабря 2010 Рассказать Опубликовано: 6 декабря 2010 после $tpl->clear(); добавьте строчку echo $tpl->result['content']; 1 Цитата Ссылка на сообщение Поделиться на других сайтах
blaga 39 Опубликовано: 6 декабря 2010 Рассказать Опубликовано: 6 декабря 2010 Автор Большое спасибо, очень помогло. А теперь задачка посложнее. Как мне в текущем примере сделать на странице совместить динамическую таблицу и статический текст? Например мне нужно что бы в моем скрипте в начале был статический блок а потом динамическая таблица. см. картинку. Если я просто добавлю этот статический блок в шаблон то он будет повторятся с каждой новой строкой из базы. Как решить проблему? Цитата Ссылка на сообщение Поделиться на других сайтах
zgr 72 Опубликовано: 6 декабря 2010 Рассказать Опубликовано: 6 декабря 2010 (изменено) Динамические элементы (не важно какие, пусть это будет какая-то часть таблицы, например) делаются разными путями, например, на JS и на аякс, либо теперь еще на HTML5+CSS3. Делаю примерно такое: $sort (isset($_POST['sort']) && $_POST['sort']!='')?$_POST['sort']:false; if ($sort) { include $file_functions; exit(); #Выходим из функции динамики (аякса). } #Далее статика. Этот блок должен быть в самом начале мода, а уже после всех ваших, м... э... аяксовых запросов идет уже ваша статика. Таким макаром можно любое кол-во модулей в одном файле PHP написать Изменено 6 декабря 2010 пользователем zgr Цитата Ссылка на сообщение Поделиться на других сайтах
celsoft 6 076 Опубликовано: 6 декабря 2010 Рассказать Опубликовано: 6 декабря 2010 Если я просто добавлю этот статический блок в шаблон то он будет повторятся с каждой новой строкой из базы. Как решить проблему? сначала выводите статическую информацию, потом обрабатываете и выводите динамическую. 1 Цитата Ссылка на сообщение Поделиться на других сайтах
zgr 72 Опубликовано: 6 декабря 2010 Рассказать Опубликовано: 6 декабря 2010 сначала выводите статическую информацию, потом обрабатываете и выводите динамическую. Я наоборот делаю Цитата Ссылка на сообщение Поделиться на других сайтах
blaga 39 Опубликовано: 6 декабря 2010 Рассказать Опубликовано: 6 декабря 2010 Автор сначала выводите статическую информацию, потом обрабатываете и выводите динамическую. спасибо. действительно помогло. делаются разными путями, например, на JS и на аякс я не владею ими... Цитата Ссылка на сообщение Поделиться на других сайтах
Рекомендованные сообщения
Присоединяйтесь к обсуждению
Вы можете опубликовать сообщение сейчас, а зарегистрироваться позже. Если у вас есть аккаунт, войдите в него для написания от своего имени.