Регистрация
Регистрируясь, вы подтверждаете свое согласие с соглашением об использовании персональных данных.
Восстановление пароля

обрезка текста в компоненте

Страницы: 1  |  2  |  3
03.08.2013, 16:05
Гость
Гость

Цитата:
Как сделать подобное, только в компонентах 4 версии?



Тоже самое только вместо: <?= и ?> будет ". ."
03.08.2013, 16:19
Игорь
Игорь Мишарин
Игорь

Зарегистрирован:
2011-11-20
Сообщений: 479

Цитата:
Это поле в компоненте!

Под рукой 5.2 нет, в 5.0.3 проверено, работает.
Выложите то, что у вас в Системных настройках и в Объект в списке.

Stark
03.08.2013, 18:19
serg116

Зарегистрирован:
2008-02-20
Сообщений: 24

Цитата:
Цитата:
Это поле в компоненте!

Под рукой 5.2 нет, в 5.0.3 проверено, работает.
Выложите то, что у вас в Системных настройках и в Объект в списке.


в системных настройках:
Код:
<? 

$query_select = "SUBSTRING_INDEX(a.Description,'... ',7) as ShortText";
$result_vars = '$f_ShortText';

if ( !$nc_core->modules->get_by_keyword('netshop') ) {
die(NETCAT_MODULE_NETSHOP_MODULEUNCHECKED);
}
$nc_comments = new nc_comments($cc);
// вывод несколько товаров в строке
$NumCols = &$cc_settings['NumColumns'];
$ColWidth = ( $NumCols>1 ? 'width="'.(floor(100/$NumCols)).'%"' : NULL );




global $shop;
if(!isset($classID)){
$classID = $cc_env['Class_ID'];
}
// если у дочернего объекта не указана цена, берется цена родительского объекта
// для этого придется сделать JOIN
$query_join = " LEFT JOIN Message$classID as parent ON (a.Parent_Message_ID != 0 AND a.Parent_Message_ID=parent.Message_ID)";

$query_select = "IFNULL(a.$shop->PriceColumn, parent.$shop->PriceColumn) as Netshop_Price_Column,
IFNULL(a.$shop->CurrencyColumn, parent.$shop->CurrencyColumn) as Netshop_Currency_Column";

if( !empty( $_GET['order'] ) && in_array( $_GET['order'], array( 'Name' ) ) ){
$query_order .= " a." . $_GET['order'] . " ";
if( isset( $_GET['desc'] ) )
$query_order .= "DESC ";
}

if( !empty( $_GET['order'] ) && in_array( $_GET['order'], array( 'Price' ) ) ){
$query_order .= " a." . $_GET['order'] . " ";
if( isset( $_GET['desc'] ) )
$query_order .= "DESC ";
}



?>


если в начале не работает, в конце работает но цена пропадает!


объект в сптске:

Код:
<?=opt( $cc_settings['Group'] && $GroupHeader=( $curGr!=$f_GroupName?$curGr=$f_GroupName:NULL) , "
<tr class='group'><td colspan='5'><small>Группа:</small> $GroupHeader</td>" )?></tr>


<tr class='body_catalog_id_line_name'>
<td id='p' style='text-align:center;'>
<?= ( $f_Preview ? opt( $f_Picture , "<a href='$f_Picture' alt='$f_Name' title='$f_Name' class='group2'>" )."<img src='$f_Preview' alt='$f_Title' title='$f_Title' style='width:45px;'/>".opt( $f_Picture , '</a>' ) : NULL )?>
</td>
<td id='n'>
<form method=post action='<?= $SUB_FOLDER.$HTTP_ROOT_PATH ?>modules/netshop/post.php#<?=$f_RowID?>' style='margin:0'>
<a name='<?=$f_RowID?>'></a>
<?=( $f_AdminButtons ? "$f_AdminButtons" : NULL )?>
<h3><a href='<?=$fullLink?>'><?= $f_Name ?></a></h3>
<b>Описание: </b><?=$f_Name?>
<?=$f_ShortText?>
</td>


<td id='y' style='text-align:center;'>
<span style='font-size:120%;color:#1B9E1A;'>
<?= $shop->FormatCurrency($f_Netshop_Price_Column, $f_Netshop_Currency_Column, true ), "" ?>   </span>

<input type='hidden' name='redirect_url' value='<?=$GLOBALS[uri_path]?>'>
<input type='hidden' name='cart_mode' value='add'>
<input type='hidden' name='cart[<?=$classID?>][<?=$f_RowID?>]' value='1'>
<input type=text name='cart[<?=$classID?>][<?=$f_RowID?>]' value=1 style='border: 1px solid #DDDDDD;height: 16px;margin: 0px;padding: 1px;width: 23px;'>
<input name='search' type='submit' id='btnExSimple' class='saleBtn-zapkam' value=' ' />

</td>
</tr>
</form>
<? $RowNum++; ?>
03.08.2013, 20:57
Игорь
Игорь Мишарин
Игорь

Зарегистрирован:
2011-11-20
Сообщений: 479

$query_select = "SUBSTRING_INDEX(a.Description,'...',7) as ShortText";

уберите эти точки, красным выделено
должен быть только пробел

Stark
04.08.2013, 11:13
serg116

Зарегистрирован:
2008-02-20
Сообщений: 24

все также, разницы не заметил! если в системных настройках в начале: не работает, если в конце: работает но цена пропадает!
04.08.2013, 13:04
Игорь
Игорь Мишарин
Игорь

Зарегистрирован:
2011-11-20
Сообщений: 479

Попробуйте изменить название поле, не Description, а, например, Opisanie

Stark
04.08.2013, 13:22
ipm
Ильин Павел

Зарегистрирован:
2012-10-12
Сообщений: 386

Цитата:
Лучше обрезать не по символам, а по словам целиком:

В системные настройки компонента пишите:

Код:

$query_select = "SUBSTRING_INDEX(a.Description,' ',ХХ) as ShortText";

$result_vars = '$f_ShortText';



ХХ - кол-во слов
В переменной $f_ShortText доступен требуемый результат.


Получается должны быть создано ещё одно поле '$f_ShortText', чтобы вывести результат или можно в той же переменной вывести, т.е. вот так $result_vars = '$f_Description'; ?

Название моего поля, в котором нужно обрезать текст - $f_Description

Знание может быть лишь у того, у кого есть вопросы. Ханс Георг Гадамер
04.08.2013, 20:22
Pavel Tchaikovsky
3DaVinci

Зарегистрирован:
2010-06-10
Сообщений: 5

Если верить документации http://netcat.ru/developes/docs/components/system-settings/, то:
Цитата:
Обратите внимание: В версии 5.0 для компонентов нового типа массив $result_vars не используется. Для того, чтобы получить доступ к результатам выборки, нужно задать алиасы для полей, а потом обращаться к переменным с соответствующими именами. Например в результате запроса с использованием $query_select = "a.Name as `Name`", будет доступна для использования переменная $f_Name.
04.08.2013, 23:01
Игорь
Игорь Мишарин
Игорь

Зарегистрирован:
2011-11-20
Сообщений: 479

Цитата:
Получается должны быть создано ещё одно поле '$f_ShortText'

Нет, это переменная, в которой выведется обрезанный Description.

Цитата:
Если верить документации http://netcat.ru/developes/docs/components/system-settings/, то: В версии 5.0 для компонентов нового типа массив $result_vars не используется.


Получается, можно не верить, ибо работает.
Но можно обойтись и без $result_vars, главное не забыть про echo:

Объект в списке:
Код:
<? echo $f_ShortText; ?>


Stark
05.08.2013, 06:12
ipm
Ильин Павел

Зарегистрирован:
2012-10-12
Сообщений: 386

Всё, я разобрался. Теперь работает. Спасибо большое.

Знание может быть лишь у того, у кого есть вопросы. Ханс Георг Гадамер
198 196 2015-07-07 19:16:28 13188
Страницы: 1  |  2  |  3
Описание проекта