На примере SELECT. Если одно поле:
$getdb=&JFactory::getDBO();
$q="SELECT mfo FROM jos_users WHERE mfo!='0'";
$getdb->setQuery($q);
$arr=$getdb->loadResultArray();
Если много:
$q="SELECT username, mfo FROM jos_users WHERE mfo!='0'";
$arr=$getdb->loadObjectList();
foreach ($arr as $a) {
$mfo=$a->mfo; $username=$a->username;
}
Для себя. Без подробностей.
if ($_GET['format']!='raw') {
header("Location: /?option=com_cn&format=raw&$query=$file_hash");
}
else {
$content_type="application/octet-stream";
$mime=&JFactory::getDocument();
$mime->setMimeEncoding($content_type);
header("Content-Type: $content_type");
header("Accept-Ranges: bytes");
header("Content-Length: ".filesize($file_path));
header("Content-Disposition: attachment; filename=".$file_name);
readfile($file_path);
}
В таблице пользователей:
ALTER TABLE `jos_users` ADD `mfo` INT NOT NULL AFTER `username`
Форма редактирования пользователя через панель администрирования:
/administrator/components/com_users/views/user/tmpl/form.php
<tr>
<td class="key">
<label for="mfo">
<?php echo JText::_( 'mfo' ); ?>
</label>
</td>
<td>
<input type="text" name="mfo" id="mfo" class="inputbox" size="40" value="<?php echo $this->user->get('mfo'); ?>" autocomplete="off" />
</td>
</tr>
Русский язык:
/administrator/language/ru-RU/ru-RU.com_users.ini
Свойство класса:
/libraries/joomla/database/table/user.php
В class JTableUser extends JTable
добавляем:
class JTableUser extends JTable
Чтобы при создании нового шаблона не загружались стандартные яваскрипты mootools.js и caption.js при подключении
<jdoc:include type="head" />
в index.php создаваемого шаблона пишем:
$user = & JFactory::getUser();
if ($user->get('guest') == 1) {
$headerstuff = $this->getHeadData();
$key1 = JURI::base(true). '/media/system/js/mootools.js';
$key2 = JURI::base(true). '/media/system/js/caption.js';
unset($headerstuff['scripts'][$key1], $headerstuff['scripts'][$key2]);
$this->setHeadData($headerstuff);
}
http://joomlaforum.ru/index.php?topic=101107.0
В шаблоне перед foreach где рисуем новости.
Рисуем форму (даты необходимо будет указывать в формате день-месяц-год
(xx-xx-xxxx), разделительный знак любой, нам важен порядковый номер цифр), для удобства можно использовать что-то вроде datePicker
, но это уже совсем другая история)):
<form method="get" id="set_period">
<label for="date1">С</label>
<input type="text" name="date1" id="date1" value="<?=$_GET['date1']?>" />
–
<label for="date2">ПО</label>
<input type="text" name="date2" id="date2" value="<?=$_GET['date2']?>" />
<a href="#" onclick="$('#set_period').submit();">Показать</a>
</form>
Формируем массив дат, в нужном нам формате, который позволяет сделать выборку по принципу «больше или равно — меньше или равно», т.е. в формате (год, месяц, день) без разделительных знаков.
<?$news_dates=array();
function ParceResultDates($date) {
$df_day=substr($date,0,2);
$df_mon=substr($date,3,2);
$df_ye=substr($date,6,4);
$d_format=$df_ye.$df_mon.$df_day;
return $d_format;
}
foreach($arResult["ITEMS"]as$arDates):
$news_dates[]=ParceResultDates($arDates['DISPLAY_ACTIVE_FROM']);
endforeach;?>
Далее в foreach где выводим новости:
<?
//if(($_GET['date1']!='')&&($_GET['date2']!='')):
//$date_from=ParceResultDates($_GET['date1']);
//$date_to=ParceResultDates($_GET['date2']);
//else:
//$date_from=ParceResultDates($arItem['DISPLAY_ACTIVE_FROM']);
//$date_to=ParceResultDates($arItem['DISPLAY_ACTIVE_FROM']);
//endif;
$date_from=($_GET['date1']!='')?ParceResultDates($_GET['date1']):ParceResultDates($arItem['DISPLAY_ACTIVE_FROM']);
$date_to=($_GET['date2']!='')?ParceResultDates($_GET['date2']):ParceResultDates($arItem['DISPLAY_ACTIVE_FROM']);
$current_active_from=ParceResultDates($arItem['DISPLAY_ACTIVE_FROM']);
if (($current_active_from>=$date_from)&&($current_active_from<=$date_to)):
?>
<!--Тут новости-->
<?endif;?>
Закоментрованная область — это если было бы необходимо указать только обе даты, иначе выводим все новости. Ниже 2 строки для того чтобы можно было указывать только начальную и/или конечную даты