[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Модуль новостей
kent666
Доброе время суток!
Подскажите пожалуйста. В уроке модуль новостей меня немного смущало то, что после того как мы обрабатываем функцией mysql_fetch_assoc
while ($row = mysql_fetch_assoc($res))
{
$row['date'] = $row['day'] .' '. $lang_month_string[$row['month']] .' '. $row['year'];
$row['subtitle'] = htmlspecialchars($row['subtitle']);
$row['text'] = createBBtags($row['text'] , false) . "...";
$row['url'] = href( 'news=' . $row['id']);
$row['link'] = IRB_LANG_FULL_NEWS;
$news .= parseTpl($tpl, $row);
}

Получаем массив $row[]
И потом используем функцию parseTpl
ВОПРОС
Почему в шаблоне rows
<!-- ./skins/tpl/news/rows.tpl begin -->
<
div style="padding:5px; margin-top:3px; width:250px; border:1px solid">
<
p><?php echo $tpl_date ?><br />
<
b><?php echo $tpl_subtitle; ?></b></p>
<
p><?php echo $tpl_text; ?></p>
<
div style="text-align:right"><a href="<?php echo $tpl_url; ?>"><?php echo $tpl_link; ?></a></div>
</
div>
<!-- ./
skins/tpl/news/rows.tpl end -->

Мы обращаемся к массиву $tpl_date а не $row['date']
У меня оба варианте обращения к массиву работают! Просто интересно почему так можно?



Спустя 19 минут, 31 секунда (28.03.2011 - 11:04) KonstantinK написал(а):
не понятный вопрос вот тут
$news .= parseTpl($tpl, $row);
мы подставляем в функцию parseTpl() два аргумента первый это шаблон $tpl , а второй это массив данных $row , а что такое массив $tpl_date я не понял.

Спустя 18 минут, 38 секунд (28.03.2011 - 11:22) kent666 написал(а):
Переменная $tpl была определена ранее! Она просто в себе содержит шаблон rows.tpl.
Вопрос в том как мы можем обращаться к массиву $row через переменные
$tpl_date
$tpl_subtitle
$tpl_text
????
Я нигде не указывал что $tpl_date = $row['date']

Спустя 3 минуты, 6 секунд (28.03.2011 - 11:25) T1grOK написал(а):
Смотрите в саму функцию parseTpl() и все станет ясно. Там идет разбор массива(создание переменных) и подстановка в шаблон.

Спустя 3 минуты, 31 секунда (28.03.2011 - 11:29) kent666 написал(а):
Да действительно
 function parseTpl($cont, $data = '') 
{

if(is_array($data))
{

extract($data, EXTR_PREFIX_ALL, 'tpl');

ob_start();
eval('?>'. $cont .'<?php ');
$cont = ob_get_contents();
ob_end_clean();

}
return $cont;
}

Как то не обратил внимание на extract($data, EXTR_PREFIX_ALL, 'tpl');
Спасибо за разъяснения)))
Быстрый ответ:

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