|
|
03.08.2013, 16:05
|
|
Гость
Гость
|
Цитата:Как сделать подобное, только в компонентах 4 версии?
Тоже самое только вместо: <?= и ?> будет ". ."
|
|
|
03.08.2013, 16:19
|
|
Игорь
Игорь Мишарин
Зарегистрирован: 2011-11-20
Сообщений: 482
|
Цитата:Это поле в компоненте!
Под рукой 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
Сообщений: 482
|
$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
Сообщений: 482
|
Попробуйте изменить название поле, не 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
Сообщений: 482
|
Цитата:Получается должны быть создано ещё одно поле '$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
|
Всё, я разобрался. Теперь работает. Спасибо большое.
Знание может быть лишь у того, у кого есть вопросы. Ханс Георг Гадамер
|