Перейти к публикации

вывод информации при написании модов


Рекомендованные сообщения

Доброго времени суток.

У меня есть задача, написать модуль для ДЛЕ.

Я начал ее реализовывать к это написано в инструкции через подключаемые файлы ({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 для работы с шаблонами.

не просто же так там этот класс добавлен.

Всем заранее спасибо.

Изменено пользователем blaga
Ссылка на сообщение
Поделиться на других сайтах

Большое спасибо, очень помогло.

А теперь задачка посложнее. Как мне в текущем примере сделать на странице совместить динамическую таблицу и статический текст?

Например мне нужно что бы в моем скрипте в начале был статический блок а потом динамическая таблица. см. картинку.

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

ee98afab50db505bc3e3425a6c93615e.jpg

Ссылка на сообщение
Поделиться на других сайтах

Динамические элементы (не важно какие, пусть это будет какая-то часть таблицы, например) делаются разными путями, например, на JS и на аякс, либо теперь еще на HTML5+CSS3. Делаю примерно такое:

$sort (isset($_POST['sort']) && $_POST['sort']!='')?$_POST['sort']:false;

if ($sort) {

  include $file_functions;

  exit(); #Выходим из функции динамики (аякса).

}


#Далее статика.

Этот блок должен быть в самом начале мода, а уже после всех ваших, м... э... аяксовых запросов идет уже ваша статика. Таким макаром можно любое кол-во модулей в одном файле PHP написать :)

Изменено пользователем zgr
Ссылка на сообщение
Поделиться на других сайтах

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

сначала выводите статическую информацию, потом обрабатываете и выводите динамическую.

Ссылка на сообщение
Поделиться на других сайтах

сначала выводите статическую информацию, потом обрабатываете и выводите динамическую.

:blink: Я наоборот делаю :D

Ссылка на сообщение
Поделиться на других сайтах

сначала выводите статическую информацию, потом обрабатываете и выводите динамическую.

спасибо. действительно помогло.

делаются разными путями, например, на JS и на аякс

я не владею ими...

Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

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

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

×
×
  • Создать...