Новости Joomla

Astroid обновился до версии 3.3.7!

Astroid обновился до версии 3.3.7!

Astroid — это мощный фреймворк для дизайнеров и разработчиков, позволяющий создавать адаптивные, быстрые и надежные веб-сайты и шаблоны на базе Joomla.

Главное в новой версии:

-   Исправлена загрузка файлов макетов

В предыдущем крупном релизе Astroid 3.3.6 были сделаны важные улучшения:

Основные моменты:

  • Улучшенный UI/UX в ключевых областях конфигурации
  • Повышенная стабильность и согласованность в Layout Builder и Form Builder
  • Исправления ошибок на основе отзывов сообщества
  • Улучшенная обработка визуальных эффектов, границ и шрифтов

Улучшения:

  • Обновленный UX Layout Builder
  • Улучшенный эффект предзагрузчика
  • Улучшенный стиль границ
  • Улучшенный UI/UX вкладки «Layout» в Template Options

Исправления ошибок:

  • Решены проблемы с некорректными динамическими значениями
  • Исправлен Color Transform при прокрутке
  • Устранены проблемы с работой Form Builder в Article Layout и Module Layout Builder
  • Исправлена проблема с созданием ненужных временных файлов при обработке шрифтов

Скачать: https://github.com/templaza/astroid-framework/releases/tag/v3.3.7

Как тестировать Joomla PHP-разработчику? Компонент Patch tester.

👩‍💻 Как тестировать Joomla PHP-разработчику? Компонент Patch tester.Joomla - open source PHP-фреймворк с готовой админкой. Его основная разработка ведётся на GitHub. Для того, чтобы международному сообществу разработчиков было удобнее тестировать Pull Requests был создан компонент Patch Tester, который позволяет "накатить" на текущую установку Joomla именно те изменения, которые необходимо протестировать. На стороне инфраструктуры Joomla для каждого PR собираются готовые пакеты, в которых находится ядро + предложенные изменения. В каждом PR обычно находятся инструкции по тестированию: куда зайти, что нажать, ожидаемый результат. Тестировщики могут предположить дополнительные сценарии, исходя из своего опыта и найти баги, о которых сообщить разработчику. Или не найти, и тогда улучшение или исправление ошибки быстрее войдёт в ядро Joomla. Напомню, что для того, чтобы PR вошёл в ядро Joomla нужны минимум 2 положительных теста от 2 участников сообщества, кроме автора. Видео на YouTubeВидео на VK ВидеоВидео на RuTubeКомпонент на GitHub https://github.com/joomla-extensions/patchtester@joomlafeed#joomla #php #webdev #community

0 Пользователей и 1 Гость просматривают эту тему.
  • 56 Ответов
  • 11954 Просмотров
*

viktor_viktor

  • Осваиваюсь на форуме
  • 30
  • 0 / 0
Есть поле (например, "район").  Выставляю в его настройках "показывать названия этого поля" в обоих режимах.  Это поле заполнено не во всех объявлениях категории, а лишь части. Но выводится, все равно, всегда. Это как-то не логично.  Т.е. например, получается так:

город:  Москва
район:
улица: Белорусская
цвет:   серый

Подскажите, как сделать так, что-бы при незаполненном поле,  не выводилось бы его название тоже.
AdsManager 2.5.  Это только в этой версии или везде так?
*

Kikasso

  • Захожу иногда
  • 99
  • 45 / 0
файл  adsmanager.html, находим функцию showFieldValue и меняем её текст на приведённый ниже:
Код: php
function showFieldValue($row,$field,$field_values,$email_display,$option,$itemid,$mode,$plugins)
{
global $mosConfig_live_site,$mosConfig_absolute_path;

if ((strpos($field->catsid, ",$row->catid,")!== false)||(strpos($field->catsid, ",-1,")!== false))
{
if ($field->title)
$name = $field->name;

$value = "";
$value = "\$row->".$field->name;
eval("if (isset($value)) \$value = \"$value\";");
$value = adsmanager_html::getLangDefinition($value);

if ($value) {
if (($field->type != 'checkbox')&&(($field->display_title & $mode) == $mode))
{
echo adsmanager_html::getLangDefinition($field->title).": ";
}

switch($field->type)
{
case 'checkbox':
if (($field->display_title & $mode) == $mode)
{
echo adsmanager_html::getLangDefinition($field->title);
if ($value == 1)
echo ":&nbsp;".ADSMANAGER_YES."<br />";
else
echo ":&nbsp;".ADSMANAGER_NO."<br />";
}
else if ($value == 1)
{
echo adsmanager_html::getLangDefinition($field->title)."<br />";
}
break;

case 'multicheckbox':
case 'multicheckboximage':

for($i=0,$nb=count($field_values[$field->fieldid]);$i < $nb ;$i++)
{
$fieldvalue = @$field_values[$field->fieldid][$i]->fieldvalue;
$fieldtitle = @$field_values[$field->fieldid][$i]->fieldtitle;

if (strpos($value, $fieldvalue)!== false)
{
if ($field->type == 'multicheckbox')
$return = adsmanager_html::getLangDefinition($fieldtitle);
else
$return = "<img src='".$mosConfig_live_site."/images/com_adsmanager/fields/".$fieldtitle."' alt='$fieldtitle' />";
echo $return."<br />";
}
}

break;

case 'url':
if ((isset($field->link_text))&&($field->link_text != ""))
$linkObj = $field->link_text;
else if ((isset($field->link_image))&&(file_exists($mosConfig_absolute_path."/images/com_adsmanager/fields/".$field->link_image)))
$linkObj = "<img src='".$mosConfig_live_site."/images/com_adsmanager/fields/".$field->link_image."' />";
else
{
$linkObj = $value;
}
if ($value != "")
{
$return = "<a href='http://$value' target='_blank'>$linkObj</a>";
}
echo $return;
break;

case 'date':
$return = $value;
echo $return;
break;

case 'select':
if (isset($field_values[$field->fieldid])) {
foreach($field_values[$field->fieldid] as $v)
{
if ($value == $v->fieldvalue)
{
echo adsmanager_html::getLangDefinition($v->fieldtitle)."<br />";
}
}
}
break;

case 'multiselect':
if (isset($field_values[$field->fieldid])) {
foreach($field_values[$field->fieldid] as $v)
{
if (strpos($value, ",".$v->fieldvalue.",") === false)
{
}
else
{
echo adsmanager_html::getLangDefinition($v->fieldtitle)."<br />";
}
}
}
break;

case 'emailaddress':
if ($value != "")
{
switch($email_display) {
case 2:
$emailForm = sefRelToAbs("index.php?option=$option&amp;page=show_message_form&amp;mode=0&amp;adid=".$row->id."&amp;Itemid=".$itemid);
echo '<a href="'.$emailForm.'">'.ADSMANAGER_EMAIL_FORM.'</a><br />';
break;
case 1:
echo adsmanager_html::Txt2Png($value,$option);
break;
default:
echo ADSMANAGER_FORM_EMAIL.": <a href='mailto:".$value."'>".adsmanager_html::cutLongWord($value)."</a>";
break;

}
}
break;

case 'textarea':
echo adsmanager_html::cutLongWord(str_replace(array("\r\n", "\n", "\r"), "<br />", $value))."<br />";
break;

case 'editor':
case 'number':
case 'text':
echo adsmanager_html::cutLongWord($value)."<br />";
break;
case 'price':
if ($value != "")
echo sprintf(ADSMANAGER_DEVICE,$value);
echo "<br />";
break;
case 'radio':
case 'radioimage':
for($i=0,$nb=count($field_values[$field->fieldid]);$i < $nb ;$i++)
{
$fieldvalue = @$field_values[$field->fieldid][$i]->fieldvalue;
$fieldtitle = @$field_values[$field->fieldid][$i]->fieldtitle;
if ($value == $fieldvalue)
{
if ($field->type == 'radio')
$return = $fieldtitle;
else
$return = "<img src='".$mosConfig_live_site."/images/com_adsmanager/fields/".$fieldtitle."' alt='$fieldtitle' />";
echo $return;
}
}
break;
case 'file':
if ($value != "")
{
echo "<a href='$mosConfig_live_site/images/com_adsmanager/files/$value' target='_blank'>".ADSMANAGER_DOWNLOAD_FILE."</a></b>";
echo "<br />";
}
break;

default:
if (isset($plugins[$field->type]))
{
if ($mode == 1)
$return = $plugins[$field->type]->getListDisplay($row->id,$field );
else
$return = $plugins[$field->type]->getDetailsDisplay($row->id,$field );
echo $return;
}
break;
}
}}
}
*

viktor_viktor

  • Осваиваюсь на форуме
  • 30
  • 0 / 0
К сожалению, не работает. :(   Если отключить вывод названий полей, то все хорошо (раньше под незаполненное поле было свободное место (типа пробела) - сейчас нормально все компактно),  но с включенным показом - названия полей по-прежнему появляются.

Подскажите еще  пожалуйста, что подправить, что бы и в расширенном просмотре не выводились названия незаполненных полей.
« Последнее редактирование: 08.10.2009, 03:49:41 от viktor_viktor »
*

Kikasso

  • Захожу иногда
  • 99
  • 45 / 0
Странно у меня работает, версия тоже 2.5_RC2:
Вообщем суть вот в чём:
Эта строчка отвечает за вывод названия поля:
Код: php
echo adsmanager_html::getLangDefinition($field->title).": ";
переменная $value - это есть значение поля...
т.е. перед тем как выводить названия поля, мы должны проверить существование его значения:
Код: php
if ($value) 
{
...
}

P.S.
Можешь попробовать ещё вот этот код функции showFieldValue, это я на чистом AdsMessage функцию правил...
Код: php
function showFieldValue($row,$field,$field_values,$email_display,$option,$itemid,$mode,$plugins)
{
global $mosConfig_live_site,$mosConfig_absolute_path;

if ((strpos($field->catsid, ",$row->catid,")!== false)||(strpos($field->catsid, ",-1,")!== false))
{
$value = "";
$value = "\$row->".$field->name;
eval("if (isset($value)) \$value = \"$value\";");
$value = adsmanager_html::getLangDefinition($value);
if ($value)
if (($field->type != 'checkbox')&&(($field->display_title & $mode) == $mode))
{
echo adsmanager_html::getLangDefinition($field->title).": ";
}

if ($field->title)
$name = $field->name;

switch($field->type)
{
case 'checkbox':
if (($field->display_title & $mode) == $mode)
{
echo adsmanager_html::getLangDefinition($field->title);
if ($value == 1)
echo ":&nbsp;".ADSMANAGER_YES."<br />";
else
echo ":&nbsp;".ADSMANAGER_NO."<br />";
}
else if ($value == 1)
{
echo adsmanager_html::getLangDefinition($field->title)."<br />";
}
break;

case 'multicheckbox':
case 'multicheckboximage':

for($i=0,$nb=count($field_values[$field->fieldid]);$i < $nb ;$i++)
{
$fieldvalue = @$field_values[$field->fieldid][$i]->fieldvalue;
$fieldtitle = @$field_values[$field->fieldid][$i]->fieldtitle;

if (strpos($value, $fieldvalue)!== false)
{
if ($field->type == 'multicheckbox')
$return = adsmanager_html::getLangDefinition($fieldtitle);
else
$return = "<img src='".$mosConfig_live_site."/images/com_adsmanager/fields/".$fieldtitle."' alt='$fieldtitle' />";
echo $return."<br />";
}
}

break;

case 'url':
if ((isset($field->link_text))&&($field->link_text != ""))
$linkObj = $field->link_text;
else if ((isset($field->link_image))&&(file_exists($mosConfig_absolute_path."/images/com_adsmanager/fields/".$field->link_image)))
$linkObj = "<img src='".$mosConfig_live_site."/images/com_adsmanager/fields/".$field->link_image."' />";
else
{
$linkObj = $value;
}
if ($value != "")
{
$return = "<a href='http://$value' target='_blank'>$linkObj</a>";
}
echo $return;
break;

case 'date':
$return = $value;
echo $return;
break;

case 'select':
if (isset($field_values[$field->fieldid])) {
foreach($field_values[$field->fieldid] as $v)
{
if ($value == $v->fieldvalue)
{
echo adsmanager_html::getLangDefinition($v->fieldtitle)."<br />";
}
}
}
break;

case 'multiselect':
if (isset($field_values[$field->fieldid])) {
foreach($field_values[$field->fieldid] as $v)
{
if (strpos($value, ",".$v->fieldvalue.",") === false)
{
}
else
{
echo adsmanager_html::getLangDefinition($v->fieldtitle)."<br />";
}
}
}
break;

case 'emailaddress':
if ($value != "")
{
switch($email_display) {
case 2:
$emailForm = sefRelToAbs("index.php?option=$option&amp;page=show_message_form&amp;mode=0&amp;adid=".$row->id."&amp;Itemid=".$itemid);
echo '<a href="'.$emailForm.'">'.ADSMANAGER_EMAIL_FORM.'</a><br />';
break;
case 1:
echo adsmanager_html::Txt2Png($value,$option);
break;
default:
echo ADSMANAGER_FORM_EMAIL.": <a href='mailto:".$value."'>".adsmanager_html::cutLongWord($value)."</a>";
break;

}
}
break;

case 'textarea':
echo adsmanager_html::cutLongWord(str_replace(array("\r\n", "\n", "\r"), "<br />", $value))."<br />";
break;

case 'editor':
case 'number':
case 'text':
echo adsmanager_html::cutLongWord($value)."<br />";
break;
case 'price':
if ($value != "")
echo sprintf(ADSMANAGER_DEVICE,$value);
echo "<br />";
break;
case 'radio':
case 'radioimage':
for($i=0,$nb=count($field_values[$field->fieldid]);$i < $nb ;$i++)
{
$fieldvalue = @$field_values[$field->fieldid][$i]->fieldvalue;
$fieldtitle = @$field_values[$field->fieldid][$i]->fieldtitle;
if ($value == $fieldvalue)
{
if ($field->type == 'radio')
$return = $fieldtitle;
else
$return = "<img src='".$mosConfig_live_site."/images/com_adsmanager/fields/".$fieldtitle."' alt='$fieldtitle' />";
echo $return;
}
}
break;
case 'file':
if ($value != "")
{
echo "<a href='$mosConfig_live_site/images/com_adsmanager/files/$value' target='_blank'>".ADSMANAGER_DOWNLOAD_FILE."</a></b>";
echo "<br />";
}
break;

default:
if (isset($plugins[$field->type]))
{
if ($mode == 1)
$return = $plugins[$field->type]->getListDisplay($row->id,$field );
else
$return = $plugins[$field->type]->getDetailsDisplay($row->id,$field );
echo $return;
}
break;
}
}
}
*

viktor_viktor

  • Осваиваюсь на форуме
  • 30
  • 0 / 0
Оказывается, работает для всех типов полей, кроме "multiselect" .  А у меня как раз много мультиселектов и именно с ними, нужно как-то разобраться... Помогите, пожалуйста.
*

Kikasso

  • Захожу иногда
  • 99
  • 45 / 0
Проблема была в том, что если даже не выбрано ни одно поле из multiselect его значение было не пустым, а например (,,,) - если в multiselect три поля. Необходимость вывода названия поля multiselect проверяется теперь отдельно, из его значения удаляются все запятые и если значение становится пустым, то названия поля не выводим...
 код исправленной функции привожу ниже:
Код: php
	function showFieldValue($row,$field,$field_values,$email_display,$option,$itemid,$mode,$plugins)
{
global $mosConfig_live_site,$mosConfig_absolute_path;

if ((strpos($field->catsid, ",$row->catid,")!== false)||(strpos($field->catsid, ",-1,")!== false))
{
$value = "";
$value = "\$row->".$field->name;
eval("if (isset($value)) \$value = \"$value\";");
$value = adsmanager_html::getLangDefinition($value);
//echo '['.$value.']';

if (($field->type != 'multiselect')&&($field->type != 'checkbox')&&(($field->display_title & $mode) == $mode))
{
if ($value) echo adsmanager_html::getLangDefinition($field->title).": ";
}

if ($field->type == 'multiselect') {
    $vmultiselect= str_replace(',','',$value);
if ($vmultiselect != '') echo adsmanager_html::getLangDefinition($field->title).": ";
}

if ($field->title)
$name = $field->name;

switch($field->type)
{
case 'checkbox':
if (($field->display_title & $mode) == $mode)
{
echo adsmanager_html::getLangDefinition($field->title);
if ($value == 1)
echo ":&nbsp;".ADSMANAGER_YES."<br />";
else
echo ":&nbsp;".ADSMANAGER_NO."<br />";
}
else if ($value == 1)
{
echo adsmanager_html::getLangDefinition($field->title)."<br />";
}
break;

case 'multicheckbox':
case 'multicheckboximage':

for($i=0,$nb=count($field_values[$field->fieldid]);$i < $nb ;$i++)
{
$fieldvalue = @$field_values[$field->fieldid][$i]->fieldvalue;
$fieldtitle = @$field_values[$field->fieldid][$i]->fieldtitle;

if (strpos($value, $fieldvalue)!== false)
{
if ($field->type == 'multicheckbox')
$return = adsmanager_html::getLangDefinition($fieldtitle);
else
$return = "<img src='".$mosConfig_live_site."/images/com_adsmanager/fields/".$fieldtitle."' alt='$fieldtitle' />";
echo $return."<br />";
}
}

break;

case 'url':
if ((isset($field->link_text))&&($field->link_text != ""))
$linkObj = $field->link_text;
else if ((isset($field->link_image))&&(file_exists($mosConfig_absolute_path."/images/com_adsmanager/fields/".$field->link_image)))
$linkObj = "<img src='".$mosConfig_live_site."/images/com_adsmanager/fields/".$field->link_image."' />";
else
{
$linkObj = $value;
}
if ($value != "")
{
$return = "<a href='http://$value' target='_blank'>$linkObj</a>";
}
echo $return;
break;

case 'date':
$return = $value;
echo $return;
break;

case 'select':
if (isset($field_values[$field->fieldid])) {
foreach($field_values[$field->fieldid] as $v)
{
if ($value == $v->fieldvalue)
{
echo adsmanager_html::getLangDefinition($v->fieldtitle)."<br />";
}
}
}
break;

case 'multiselect':
if (isset($field_values[$field->fieldid])) {
foreach($field_values[$field->fieldid] as $v)
{
if (strpos($value, ",".$v->fieldvalue.",") === false)
{
}
else
{
echo adsmanager_html::getLangDefinition($v->fieldtitle)."<br />";
}
}
}
break;

case 'emailaddress':
if ($value != "")
{
switch($email_display) {
case 2:
$emailForm = sefRelToAbs("index.php?option=$option&amp;page=show_message_form&amp;mode=0&amp;adid=".$row->id."&amp;Itemid=".$itemid);
echo '<a href="'.$emailForm.'">'.ADSMANAGER_EMAIL_FORM.'</a><br />';
break;
case 1:
echo adsmanager_html::Txt2Png($value,$option);
break;
default:
echo ADSMANAGER_FORM_EMAIL.": <a href='mailto:".$value."'>".adsmanager_html::cutLongWord($value)."</a>";
break;

}
}
break;

case 'textarea':
echo adsmanager_html::cutLongWord(str_replace(array("\r\n", "\n", "\r"), "<br />", $value))."<br />";
break;

case 'editor':
case 'number':
case 'text':
echo adsmanager_html::cutLongWord($value)."<br />";
break;
case 'price':
if ($value != "")
echo sprintf(ADSMANAGER_DEVICE,$value);
echo "<br />";
break;
case 'radio':
case 'radioimage':
for($i=0,$nb=count($field_values[$field->fieldid]);$i < $nb ;$i++)
{
$fieldvalue = @$field_values[$field->fieldid][$i]->fieldvalue;
$fieldtitle = @$field_values[$field->fieldid][$i]->fieldtitle;
if ($value == $fieldvalue)
{
if ($field->type == 'radio')
$return = $fieldtitle;
else
$return = "<img src='".$mosConfig_live_site."/images/com_adsmanager/fields/".$fieldtitle."' alt='$fieldtitle' />";
echo $return;
}
}
break;
case 'file':
if ($value != "")
{
echo "<a href='$mosConfig_live_site/images/com_adsmanager/files/$value' target='_blank'>".ADSMANAGER_DOWNLOAD_FILE."</a></b>";
echo "<br />";
}
break;

default:
if (isset($plugins[$field->type]))
{
if ($mode == 1)
$return = $plugins[$field->type]->getListDisplay($row->id,$field );
else
$return = $plugins[$field->type]->getDetailsDisplay($row->id,$field );
echo $return;
}
break;
}
}
}
*

Ротор

  • Захожу иногда
  • 97
  • 0 / 0
Код
case 'multicheckboximage':
 
for($i=0,$nb=count($field_values[$field->fieldid]);$i < $nb ;$i++)
{
$fieldvalue = @$field_values[$field->fieldid][$i]->fieldvalue;
$fieldtitle = @$field_values[$field->fieldid][$i]->fieldtitle;
 
if (strpos($value, $fieldvalue)!== false)
{
if ($field->type == 'multicheckbox')
$return = adsmanager_html::getLangDefinition($fieldtitle);
else
$return = "<img src='".$mosConfig_live_site."/images/com_adsmanager/fields/".$fieldtitle."' alt='$fieldtitle' />";
echo $return."<br />";
}
}
 
break;
строка echo $return."<br />";в коде переносит значения на новую строку,а вот как сделать чтобы значения multicheckbox прописывались церез запятую? если просто ставить вместо br / запятую то и в конце списка она проставляется,а вконце нужна точка  ::)
*

Kikasso

  • Захожу иногда
  • 99
  • 45 / 0
попробуй строчку echo $return."<br />";
заменить на:
Код: php
if ($i < ($nb - 1)) echo $return.","; else echo $return.".";
*

Ротор

  • Захожу иногда
  • 97
  • 0 / 0
попробуй строчку echo $return."<br />";
заменить на:
Код: php
if ($i < ($nb - 1)) echo $return.","; else echo $return.".";

пилюс
*

Ротор

  • Захожу иногда
  • 97
  • 0 / 0
Kikasso был бы примного благодарен в решении еще одного вопроса
есть поле "возраст" к нему необходимо автоматом прибавлять окончание "лет" или "год" в зависимости от введенного числа к примеру :
1 "год" или 5 "лет" , возможно ли такое?
*

Kikasso

  • Захожу иногда
  • 99
  • 45 / 0
Возможно ^-^. Тебе надо создать новый тип поля, например age и назначить ему необходимый обработчик при выводе.
Я об этом писал, посмотри тут: http://joomlaforum.ru/index.php/topic,80347.msg466754.html#msg466754.
*

Ротор

  • Захожу иногда
  • 97
  • 0 / 0
пасиб :D, еще бы узнать как сделать фото обязательным полем при размещении объявления?
*

Kikasso

  • Захожу иногда
  • 99
  • 45 / 0
Цитировать
пасиб, еще бы узнать как сделать фото обязательным полем при размещении объявления?
всем полям обязательным для заполнения должны быть присвоены свойства mosreq="1" и moslabel="TEXT_LABEL", где TEXT_LABEL- это текст который будет выводится при незаполненном поле,  в твоём случае в файле adsmanager.html.php ищем строчку
Код: php
<input id="ad_picture<?php echo $i;?>" type="file" name="ad_picture<?php echo $i;?>" />
и меняем её на
Код: php
  <input mosreq="1" id="ad_picture<?php echo $i;?>" type="file" name="ad_picture<?php echo $i;?>"  moslabel=<?php echo ADSMANAGER_FORM_AD_PICTURE." ".$i; ?>"/>
*

Ротор

  • Захожу иногда
  • 97
  • 0 / 0
теперь требует обязательной загрузки всех 10-ти фоток,а нужно хотя бы одну ,но обязательную
*

viktor_viktor

  • Осваиваюсь на форуме
  • 30
  • 0 / 0
Проблема была в том, что если даже не выбрано ни одно поле из multiselect его значение было не пустым, а например (,,,) - если в multiselect три поля. Необходимость вывода названия поля multiselect проверяется теперь отдельно, из его значения удаляются все запятые и если значение становится пустым, то названия поля не выводим...
 код исправленной функции привожу ниже:
Код: php
	function showFieldValue($row,$field,$field_values,$email_display,$option,$itemid,$mode,$plugins)
{
global $mosConfig_live_site,$mosConfig_absolute_path;

if ((strpos($field->catsid, ",$row->catid,")!== false)||(strpos($field->catsid, ",-1,")!== false))
{
$value = "";
$value = "\$row->".$field->name;
eval("if (isset($value)) \$value = \"$value\";");
$value = adsmanager_html::getLangDefinition($value);
//echo '['.$value.']';

if (($field->type != 'multiselect')&&($field->type != 'checkbox')&&(($field->display_title & $mode) == $mode))
{
if ($value) echo adsmanager_html::getLangDefinition($field->title).": ";
}

if ($field->type == 'multiselect') {
   $vmultiselect= str_replace(',','',$value);
if ($vmultiselect != '') echo adsmanager_html::getLangDefinition($field->title).": ";
}

if ($field->title)
$name = $field->name;

switch($field->type)
{
case 'checkbox':
if (($field->display_title & $mode) == $mode)
{
echo adsmanager_html::getLangDefinition($field->title);
if ($value == 1)
echo ":&nbsp;".ADSMANAGER_YES."<br />";
else
echo ":&nbsp;".ADSMANAGER_NO."<br />";
}
else if ($value == 1)
{
echo adsmanager_html::getLangDefinition($field->title)."<br />";
}
break;

case 'multicheckbox':
case 'multicheckboximage':

for($i=0,$nb=count($field_values[$field->fieldid]);$i < $nb ;$i++)
{
$fieldvalue = @$field_values[$field->fieldid][$i]->fieldvalue;
$fieldtitle = @$field_values[$field->fieldid][$i]->fieldtitle;

if (strpos($value, $fieldvalue)!== false)
{
if ($field->type == 'multicheckbox')
$return = adsmanager_html::getLangDefinition($fieldtitle);
else
$return = "<img src='".$mosConfig_live_site."/images/com_adsmanager/fields/".$fieldtitle."' alt='$fieldtitle' />";
echo $return."<br />";
}
}

break;

case 'url':
if ((isset($field->link_text))&&($field->link_text != ""))
$linkObj = $field->link_text;
else if ((isset($field->link_image))&&(file_exists($mosConfig_absolute_path."/images/com_adsmanager/fields/".$field->link_image)))
$linkObj = "<img src='".$mosConfig_live_site."/images/com_adsmanager/fields/".$field->link_image."' />";
else
{
$linkObj = $value;
}
if ($value != "")
{
$return = "<a href='http://$value' target='_blank'>$linkObj</a>";
}
echo $return;
break;

case 'date':
$return = $value;
echo $return;
break;

case 'select':
if (isset($field_values[$field->fieldid])) {
foreach($field_values[$field->fieldid] as $v)
{
if ($value == $v->fieldvalue)
{
echo adsmanager_html::getLangDefinition($v->fieldtitle)."<br />";
}
}
}
break;

case 'multiselect':
if (isset($field_values[$field->fieldid])) {
foreach($field_values[$field->fieldid] as $v)
{
if (strpos($value, ",".$v->fieldvalue.",") === false)
{
}
else
{
echo adsmanager_html::getLangDefinition($v->fieldtitle)."<br />";
}
}
}
break;

case 'emailaddress':
if ($value != "")
{
switch($email_display) {
case 2:
$emailForm = sefRelToAbs("index.php?option=$option&amp;page=show_message_form&amp;mode=0&amp;adid=".$row->id."&amp;Itemid=".$itemid);
echo '<a href="'.$emailForm.'">'.ADSMANAGER_EMAIL_FORM.'</a><br />';
break;
case 1:
echo adsmanager_html::Txt2Png($value,$option);
break;
default:
echo ADSMANAGER_FORM_EMAIL.": <a href='mailto:".$value."'>".adsmanager_html::cutLongWord($value)."</a>";
break;

}
}
break;

case 'textarea':
echo adsmanager_html::cutLongWord(str_replace(array("\r\n", "\n", "\r"), "<br />", $value))."<br />";
break;

case 'editor':
case 'number':
case 'text':
echo adsmanager_html::cutLongWord($value)."<br />";
break;
case 'price':
if ($value != "")
echo sprintf(ADSMANAGER_DEVICE,$value);
echo "<br />";
break;
case 'radio':
case 'radioimage':
for($i=0,$nb=count($field_values[$field->fieldid]);$i < $nb ;$i++)
{
$fieldvalue = @$field_values[$field->fieldid][$i]->fieldvalue;
$fieldtitle = @$field_values[$field->fieldid][$i]->fieldtitle;
if ($value == $fieldvalue)
{
if ($field->type == 'radio')
$return = $fieldtitle;
else
$return = "<img src='".$mosConfig_live_site."/images/com_adsmanager/fields/".$fieldtitle."' alt='$fieldtitle' />";
echo $return;
}
}
break;
case 'file':
if ($value != "")
{
echo "<a href='$mosConfig_live_site/images/com_adsmanager/files/$value' target='_blank'>".ADSMANAGER_DOWNLOAD_FILE."</a></b>";
echo "<br />";
}
break;

default:
if (isset($plugins[$field->type]))
{
if ($mode == 1)
$return = $plugins[$field->type]->getListDisplay($row->id,$field );
else
$return = $plugins[$field->type]->getDetailsDisplay($row->id,$field );
echo $return;
}
break;
}
}
}

Мультиселекты скрылись, но в режиме списка, видны всегда.  Даже если я в настройках поля принудительно отключаю показ названия поля - все равно название появляется (если в этом поле что-то есть).  Если поле пустое, то все нормально...  И появилось пустое место там, где что-то должно быть, но не выводится.

На скрине, названия полей "район" и "массив" у меня полностью отключены для  показа. И пробел между Киев и Район - там не выводится поле.

[вложение удалено Администратором]
*

Kikasso

  • Захожу иногда
  • 99
  • 45 / 0
Цитировать
теперь требует обязательной загрузки всех 10-ти фоток,а нужно хотя бы одну ,но обязательную
можно сделать одну (две, три) обязательной для загрузки, но это будет всегда первое (второе, третье) поле!
Поля для фото выводятся в цикле, где $i - номер фотото, для этого присвоению свойств mosreq="1" и moslabel="TEXT_LABEL" только одной фото надо будет задать соответствующее условие
Код: php
if ($i=1) echo 'mosreq="1" moslabel="TEXT_LABEL"';

Если хочешь чтобы обязательным для заполнения была одна любая фото - надо править Java скрипт, а это уже отдельная история...
*

Kikasso

  • Захожу иногда
  • 99
  • 45 / 0
Цитировать
Мультиселекты скрылись, но в режиме списка, видны всегда.  Даже если я в настройках поля принудительно отключаю показ названия поля - все равно название появляется (если в этом поле что-то есть).
Для отображения multiselect согласно выбранному Display Title строчку:
Код: php
if (($field->type == 'multiselect')) {
надо заменить на :
Код: php
if (($field->type == 'multiselect')&&(($field->display_title & $mode) == $mode)) {
Перед выводом добавлено условие проверки выбранного типа отображения
*

viktor_viktor

  • Осваиваюсь на форуме
  • 30
  • 0 / 0
Да, все работает. Спасибо большое.  А можно еще, как-то убрать пробелы (пустое место) на месте отсутствующих полей.
*

Kikasso

  • Захожу иногда
  • 99
  • 45 / 0
думаю проблема в этом кусочке:
Код: php
case 'multiselect':
if (isset($field_values[$field->fieldid])) {
foreach($field_values[$field->fieldid] as $v)
{
if (strpos($value, ",".$v->fieldvalue.",") === false)
{
}
else
{
echo adsmanager_html::getLangDefinition($v->fieldtitle)."<br />";
}
}
}
break;
а именно в строчке:
Код: php
echo adsmanager_html::getLangDefinition($v->fieldtitle)."<br />";
Попробуй урать ."<br />"

Это если проблема с полем multiselect, если с другим ищи в выводе соответствующего поля перенос строки <br />
« Последнее редактирование: 10.10.2009, 01:05:40 от Kikasso »
*

viktor_viktor

  • Осваиваюсь на форуме
  • 30
  • 0 / 0
В принципе, да.  Только теперь все в одну строку выстраивается,  если мультиселекты идут подряд...
*

Kikasso

  • Захожу иногда
  • 99
  • 45 / 0
попробуй выводить в тэгах, например, <span>:
Код: php
echo '<span>'.adsmanager_html::getLangDefinition($v->fieldtitle).'</span>';
и в CSS можно при желании подстроить внешний вид полей
*

Kikasso

  • Захожу иногда
  • 99
  • 45 / 0
Если тебя интересует вариант вывода с переносом строки, можно сделать так:
Код: php
case 'multiselect':
if (isset($field_values[$field->fieldid])) {
foreach($field_values[$field->fieldid] as $v)
{
if (strpos($value, ",".$v->fieldvalue.",") === false)
{
}
else
{
echo adsmanager_html::getLangDefinition($v->fieldtitle);
if (adsmanager_html::getLangDefinition($v->fieldtitle)) echo "<br />";
}
}
}
break;
если значение не пустое, то добавляем к нему перенос строки, иначе ничего не выводим
*

viktor_viktor

  • Осваиваюсь на форуме
  • 30
  • 0 / 0
Если тебя интересует вариант вывода с переносом строки, можно сделать так:
Код: php
case 'multiselect':
if (isset($field_values[$field->fieldid])) {
foreach($field_values[$field->fieldid] as $v)
{
if (strpos($value, ",".$v->fieldvalue.",") === false)
{
}
else
{
echo adsmanager_html::getLangDefinition($v->fieldtitle);
if (adsmanager_html::getLangDefinition($v->fieldtitle)) echo "<br />";
}
}
}
break;
если значение не пустое, то добавляем к нему перенос строки, иначе ничего не выводим

А как такую проверку сделать для поля text ?
*

Ротор

  • Захожу иногда
  • 97
  • 0 / 0
попробуй строчку echo $return."<br />";
заменить на:
Код: php
if ($i < ($nb - 1)) echo $return.","; else echo $return.".";

Kikasso условие работает только когда выбран последний селект в списке,а если его не проставлять то в конце списка в объявлении все равно стоит запятая, видимо еще одно условие нужно,только вопрос как его прописать? сам не догоню
*

Kikasso

  • Захожу иногда
  • 99
  • 45 / 0
Цитировать
Kikasso условие работает только когда выбран последний селект в списке,а если его не проставлять
Да действительно, это будет работать когда все поля в списке выбраны.
Немножко изменил код, сначала в отдельный массив выбираются выбранные значения, а затем при выводе расставляем запятые между значениями и точку в конце
Код: php
	case 'multicheckbox':
case 'multicheckboximage':

for($i=0,$nb=count($field_values[$field->fieldid]);$i < $nb ;$i++)
{
$fieldvalue = @$field_values[$field->fieldid][$i]->fieldvalue;
$fieldtitle = @$field_values[$field->fieldid][$i]->fieldtitle;

if (strpos($value, $fieldvalue)!== false)
{
if ($field->type == 'multicheckbox'){
$title=adsmanager_html::getLangDefinition($fieldtitle);
if ($title) $return[] = $title;
}
else
if ($fieldtitle) $return[] = "<img src='".$mosConfig_live_site."/images/com_adsmanager/fields/".$fieldtitle."' alt='$fieldtitle' />";
}
}
for($i=0,$nb=count($return);$i < $nb ;$i++)
if ($i < ($nb - 1)) echo $return[$i].","; else echo $return[$i].".";
break;
Проверяй должно работать :D
*

Ротор

  • Захожу иногда
  • 97
  • 0 / 0
Kikasso + в очередной раз.заработало ;D
не сочти за наглость,но у меня еще вопросик ;D
нужно выделить жирным заголовки созданных мною новых полей fieldtitle -ов,а в коде прописано условия для системных полей
Код
<?php if (@$positions[1]->title) {$strtitle = adsmanager_html::getLangDefinition($positions[1]->title);} ?>
<?php echo "<b>".@$strtitle."</b>";

тайтлы моих новых полей в echo "<b>".@$strtitle."</b>"; соответственно не попадают, с этим как поступать?
*

Kikasso

  • Захожу иногда
  • 99
  • 45 / 0
Я чесно не очень понял что ты хочешь, по подробней пожалуйста ;)
*

Ротор

  • Захожу иногда
  • 97
  • 0 / 0


красным подведено то что надо сделать жирным шрифтом т.е заголовки полей

и еще эти ромбики почемуто появляются в некоторых объявах из-за чего?
*

Ротор

  • Захожу иногда
  • 97
  • 0 / 0
*

Kikasso

  • Захожу иногда
  • 99
  • 45 / 0
строчку
Код: php
echo adsmanager_html::getLangDefinition($field->title).": ";
замени на
Код: php
echo '<b>'.adsmanager_html::getLangDefinition($field->title)."</b>: ";
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Как добавить поле id объявления

Автор Den85

Ответов: 9
Просмотров: 2778
Последний ответ 11.11.2017, 15:18:48
от Den85
Поле в AdsManager

Автор voras

Ответов: 0
Просмотров: 16858
Последний ответ 30.09.2017, 18:09:39
от voras
Поле в виде таблицы

Автор efimov777

Ответов: 3
Просмотров: 1748
Последний ответ 23.06.2017, 15:04:06
от efimov777
Скрыть часть номера телефона в объявлении

Автор djsante

Ответов: 3
Просмотров: 4690
Последний ответ 30.05.2017, 12:18:42
от SeBun
Как добавить новое поле в отображение в кратком режиме?

Автор tas777

Ответов: 3
Просмотров: 2297
Последний ответ 17.05.2017, 18:37:09
от Mick_20