Версия Joomla: 1.5
Версия AdsManager: 2.6
Редактируемый файл:
По умолчанию на доске объявлений AdsManager при детальном просмотре объявлений отображаются все поля, даже незаполненные, из-за чего объявление выглядит неаккуратно. Пустые незаполненные при подаче объявления поля необходимо скрыть.
Итак, чтобы незаполненные поля не отображались, нужно провести некоторые изменение в файле field.php (полный путь к файлу: components/com_adsmanager/helpers). В этом файле необходимо полностью заменить функцию function showFieldValue($content,$field) на код ниже. Важно полностью заменить функцию от её начала до конца.
Чтобы пустые поля в AdsManager не отображались
function showFieldValue($content,$field)
{
$return = "";
if ((strpos($field->catsid, ",".$content->catid.",")!== false)||(strpos($field->catsid, ",-1,")!== false))
{
if ($field->title)
$name = $field->name;
$value = "";
$content = $content;
$val = "\$content->".$field->name;
$fieldname = $field->name;
eval("if (isset($val)) \$value = \"$val\";");
$value = JText::_($value);
if (($field->type != 'multiselect')&&($field->type != 'checkbox')&&(($field->display_title & $this->modetitle) == $this->modetitle))
{
if ($value) $return .= "".JText::_($field->title).": ";
}
if (($field->type == 'multiselect')&&(($field->display_title & $mode) == $mode)) {
$valsel= str_replace(',','',$value);
if ($valsel != '') $return .= "".JText::_($field->title).": ";
}
switch($field->type)
{
case 'checkbox':
if (($field->display_title & $this->mode) == $this->mode)
{
$return .= JText::_($field->title);
if ($value == 1)
$return .= ": ".JText::_('ADSMANAGER_YES')."
";
else
$return .= ": ".JText::_('ADSMANAGER_NO')."
";
}
else if ($value == 1)
{
$return .= JText::_($field->title)."
";
}
break;
case 'multicheckbox':
case 'multicheckboximage':
for($i=0,$nb=count($this->field_values[$field->fieldid]);$i < $nb ;$i++)
{
$fieldvalue = @$this->field_values[$field->fieldid][$i]->fieldvalue;
$fieldtitle = @$this->field_values[$field->fieldid][$i]->fieldtitle;
if (strpos($value, ",".$fieldvalue.",")!== false)
{
if ($field->type == 'multicheckbox') {
$title .= JText::_($fieldtitle);
if ($title) $return[] = $title; }
else
if ($fieldtitle) $return[] = "
";
}
}
for($i=0,$nb=count($return);$i < $nb ;$i++)
if ($i < ($nb - 1)) echo $return[$i].","; else echo $return[$i].".";
break;
case 'url':
if ((isset($field->link_text))&&($field->link_text != ""))
$linkObj = $field->link_text;
else if ((isset($field->link_image))&&(file_exists(JPATH_BASE."/images/com_adsmanager/fields/".$field->link_image)))
$linkObj = "
";
else
{
$linkObj = $value;
}
if ($value != "")
{
$return .= "$linkObj
";
}
break;
case 'date':
$return = $value;
$return .= $return;
break;
case 'select':
if (isset($this->field_values[$field->fieldid])) {
foreach($this->field_values[$field->fieldid] as $v)
{
if ($value == $v->fieldvalue)
{
$return .= JText::_($v->fieldtitle);
if ($v->fieldtitle) $return .= "
";
}
}
}
break;
case 'multiselect':
if (isset($this->field_values[$field->fieldid])) {
foreach($this->field_values[$field->fieldid] as $v)
{
if (strpos($value, ",".$v->fieldvalue.",") === false)
{
}
else
{
$return .= JText::_($v->fieldtitle);
if ($v->fieldtitle) $return .= "
";
}
}
}
break;
case 'emailaddress':
if ($value != "")
{
switch($this->conf->email_display) {
case 2:
$emailForm = JRoute::_("index.php?option=com_adsmanager&view=message&contentid=".$content->id."&catid=".$content->catid."&Itemid=".$this->itemid);
$return .= ''.JText::_('ADSMANAGER_EMAIL_FORM').'
';
break;
case 1:
$return .= $this->Txt2Png($value)."
";
break;
default:
$return .= JText::_('ADSMANAGER_FORM_EMAIL').": ".$value."
";
break;
}
}
break;
case 'textarea':
$return .= str_replace(array("\r\n", "\n", "\r"), "
", $value)."
";
break;
case 'editor':
case 'number':
case 'text':
$return .= $value;
if ($value) $return .= "
";
break;
case 'price':
if ($value != "") {
$return .= JText::sprintf('ADSMANAGER_DEVICE',$value);
$return .= "
"; }
break;
case 'radio':
case 'radioimage':
for($i=0,$nb=count($this->field_values[$field->fieldid]);$i < $nb ;$i++)
{
$fieldvalue = @$this->field_values[$field->fieldid][$i]->fieldvalue;
$fieldtitle = @$this->field_values[$field->fieldid][$i]->fieldtitle;
if ($value == $fieldvalue)
{
if ($field->type == 'radio')
$return .= $fieldtitle;
else
$return .= "
";
$return .= "
";
}
}
break;
case 'file':
if ($value != "")
{
$return .= "".JText::_('ADSMANAGER_DOWNLOAD_FILE')."";
$return .= "
";
}
break;
default:
if (isset($this->plugins[$field->type]))
{
if ($this->mode == 1)
$plug = $this->plugins[$field->type]->getListDisplay($content->id,$field );
else
$plug = $this->plugins[$field->type]->getDetailsDisplay($content->id,$field );
$return .= $plug;
}
break;
}
}
return $return;
}
Проверено! Работает! Впрочем, я всё всегда проверяю перед тем, как делиться информацией на блоге. :)
