Новости Joomla

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

xUnicornx

  • Захожу иногда
  • 78
  • 0 / 0
Здраствуйте.  Добавляю в админку новые меню, но они имеют очень длинные названия. Из за этого, у меня смещаются блоки панель в сторону. Как сделать, чтоб текст в меню обрезался до заданной величины? :P
*

SpecTR

  • Захожу иногда
  • 105
  • 10 / 0
Re: Обрезание текста в админке
« Ответ #1 : 06.07.2010, 16:20:38 »
могу предложить свой вариант (тут), там функция обрезки по словам я ее написал для обрезки названия тем, думаю и тебе подойдет.
*

xUnicornx

  • Захожу иногда
  • 78
  • 0 / 0
Re: Обрезание текста в админке
« Ответ #2 : 06.07.2010, 17:03:56 »
Впринципе подойдет, ток я не знаю куда ее вставлять. Ты не поможешь нащет этого?
*

SpecTR

  • Захожу иногда
  • 105
  • 10 / 0
Re: Обрезание текста в админке
« Ответ #3 : 06.07.2010, 17:09:54 »
тебе обрезать название меню, то что на сайте отображается или то что в админке?
*

xUnicornx

  • Захожу иногда
  • 78
  • 0 / 0
Re: Обрезание текста в админке
« Ответ #4 : 06.07.2010, 17:29:32 »
То что в админке, главное меню. У меня там длинные названия пунктов меню, и соответственно, все боковые колонки смещаются за боковой экран. Мне б их подрезать чуть. А еще когда заходишь в любой пункт меню, там тоже есть список меню и он тоже на всю длинну показывает текст. И там тоже блоки выходят за основные рамки старницы из за этого. Сделаешь?
*

SpecTR

  • Захожу иногда
  • 105
  • 10 / 0
Re: Обрезание текста в админке
« Ответ #5 : 06.07.2010, 17:45:44 »
С меня помощь а с тебя "+" ;)
в файле \administrator\components\com_menus\views\list\tmpl\default.php 85 строчка
Код: php
<span class="editlinktip hasTip" title="<?php echo JText::_( 'Edit Menu' );?>::<?php echo $row->treename; ?>">
<a href="<?php echo JRoute::_( 'index.php?option=com_menus&menutype='.$row->menutype.'&task=edit&cid[]='.$row->id ); ?>"><?php echo $row->treename; ?></a></span>
<?php endif; ?>
меняем на
Код: php
<span class="editlinktip hasTip" title="<?php echo JText::_( 'Edit Menu' );?>::<?php echo $row->treename; ?>">
<a href="<?php echo JRoute::_( 'index.php?option=com_menus&menutype='.$row->menutype.'&task=edit&cid[]='.$row->id ); ?>"><?php echo maxsize_str_word($row->treename); ?></a></span>
<?php endif; ?>
Но есть проблема если есть вложение, то есть подпункты они сразу превращаются в ... (подправил нужно просто увеличить количество символов для отображения - грубо но работает)
и поменял немного функцию на
Код: php
function maxsize_str_word($text, $counttext = 100, $sep = ' ') {
  $text = iconv("utf-8","windows-1251",$text);
  if (strlen($text)>$counttext)
{
if ($text[$counttext+1] != ' ')
{
$text = substr($text,0,$counttext);
$text = substr($text,0,strrpos($text,$sep));
}
else
{
$text = substr($text,0,$counttext+2);
$text = substr($text,0,strrpos($text,$sep));
}
$text = $text."...";
}

$text = iconv("windows-1251","utf-8",$text);
   return $text;
}
ее где-то в самом верху впихни
а над подменюшками я щас еще попарюсь
« Последнее редактирование: 06.07.2010, 18:00:23 от SpecTR »
*

xUnicornx

  • Захожу иногда
  • 78
  • 0 / 0
Re: Обрезание текста в админке
« Ответ #6 : 06.07.2010, 18:01:20 »
Ок, договорились
*

SpecTR

  • Захожу иногда
  • 105
  • 10 / 0
Re: Обрезание текста в админке
« Ответ #7 : 06.07.2010, 18:29:08 »
если нужно чтобы название меню обрезалось в "Родительский пункт меню:" при редактировании пункта меню, то нужно применить еще эту функцию в файле \administrator\components\com_menus\helpers\helper.php в строчке 117 к $item->treename
Код: php
foreach ( $list as $item ) {
$mitems[] = JHTML::_('select.option',  $item->id, '&nbsp;&nbsp;&nbsp;'. maxsize_str_word($item->treename) );
}
ну вот так навскидку за часик обрезали названия меню в админке ;)
*

SpecTR

  • Захожу иногда
  • 105
  • 10 / 0
Re: Обрезание текста в админке
« Ответ #8 : 06.07.2010, 18:42:22 »
Еще один вариант избавиться от длинного названия в одну строчку не резав его, а просто перенося в новый рядок продолжение:
в файле \administrator\components\com_menus\views\list\tmpl\default.php строчка 81 удалить nowrap="nowrap"
до
Код
<td nowrap="nowrap">
<?php if (  JTable::isCheckedOut($this->user->get('id'), $row->checked_out ) ) : ?>
<?php echo $row->treename; ?>
<?php else : ?>
<span class="editlinktip hasTip" title="<?php echo JText::_( 'Edit Menu' );?>::<?php echo $row->treename; ?>">
<a href="<?php echo JRoute::_( 'index.php?option=com_menus&menutype='.$row->menutype.'&task=edit&cid[]='.$row->id ); ?>"><?php echo $row->treename; ?></a></span>
<?php endif; ?>
</td>
после
Код
<td>
<?php if (  JTable::isCheckedOut($this->user->get('id'), $row->checked_out ) ) : ?>
<?php echo $row->treename; ?>
<?php else : ?>
<span class="editlinktip hasTip" title="<?php echo JText::_( 'Edit Menu' );?>::<?php echo $row->treename; ?>">
<a href="<?php echo JRoute::_( 'index.php?option=com_menus&menutype='.$row->menutype.'&task=edit&cid[]='.$row->id ); ?>"><?php echo $row->treename; ?></a></span>
<?php endif; ?>
</td>

Но в селекте Родительский пункт меню:" при редактировании пункта меню придется резать.
*

xUnicornx

  • Захожу иногда
  • 78
  • 0 / 0
Re: Обрезание текста в админке
« Ответ #9 : 09.07.2010, 13:40:46 »
если нужно чтобы название меню обрезалось в "Родительский пункт меню:" при редактировании пункта меню, то нужно применить еще эту функцию в файле \administrator\components\com_menus\helpers\helper.php в строчке 117 к $item->treename
Код: php
foreach ( $list as $item ) {
$mitems[] = JHTML::_('select.option',  $item->id, '&nbsp;&nbsp;&nbsp;'. [b]maxsize_str_word[/b]($item->treename) );
}
ну вот так навскидку за часик обрезали названия меню в админке ;)

maxsize_str_word - Это насколько я понял ты вводишь вручную количество символов в строке? или этот параметр где-то задается?
*

SpecTR

  • Захожу иногда
  • 105
  • 10 / 0
Re: Обрезание текста в админке
« Ответ #10 : 09.07.2010, 14:58:57 »
это функция с 3 параметрами maxsize_str_word (текст, количество символов которое надо вывести, разделитель слов)
количество символов которое надо вывести = по умолцанию 100 , а  разделитель слов = ' '
2 и 3 параметры можно не указывать (то есть применяться те что поумолчанию), а можно и указывать
*

xUnicornx

  • Захожу иногда
  • 78
  • 0 / 0
Re: Обрезание текста в админке
« Ответ #11 : 12.07.2010, 13:34:45 »
Вставил твою функцию, и у меня начали страницы плохо отображатся, выдает абра-кадабру какую-то
*

SpecTR

  • Захожу иногда
  • 105
  • 10 / 0
Re: Обрезание текста в админке
« Ответ #12 : 12.07.2010, 18:30:01 »
Попробуй закоментировать $text = iconv("utf-8","windows-1251",$text); и $text = iconv("windows-1251","utf-8",$text);
и проверь поддерживает ли твой PHP функцию iconv
*

xUnicornx

  • Захожу иногда
  • 78
  • 0 / 0
Re: Обрезание текста в админке
« Ответ #13 : 13.07.2010, 00:29:24 »
Я в программировании дуб-деревом :dry: Когда - то пытался научится, но я не знаю как это проверить. Закоментировать, это поставить два слэша, или решетку?
*

SpecTR

  • Захожу иногда
  • 105
  • 10 / 0
Re: Обрезание текста в админке
« Ответ #14 : 13.07.2010, 11:08:10 »
два слеша вот так:
Код: php
//$text = iconv("utf-8","windows-1251",$text);
*

xUnicornx

  • Захожу иногда
  • 78
  • 0 / 0
Re: Обрезание текста в админке
« Ответ #15 : 13.07.2010, 14:22:13 »
После всех процедур, когда захожу в глакное меню, выскакивает такая страница


function maxsize_str_word($text, $counttext = 100, $sep = ' ') { //$text = iconv("utf-8","windows-1251",$text); if (strlen($text)>$counttext) { if ($text[$counttext+1] != ' ') { $text = substr($text,0,$counttext); $text = substr($text,0,strrpos($text,$sep)); } else { $text = substr($text,0,$counttext+2); $text = substr($text,0,strrpos($text,$sep)); } $text = $text."..."; } //$text = iconv("windows-1251","utf-8",$text); return $text; }
Фильтр: Применить Сбросить    Макс. уровней
№       Пункт меню    По умолчанию    Опубликовано    Порядок Сохранить порядок    Доступ    Системное имя    Itemid
Количество строк:
В начало
Пред.
123
След.
В конец
Страница 1 из 3

*

SpecTR

  • Захожу иногда
  • 105
  • 10 / 0
Re: Обрезание текста в админке
« Ответ #16 : 15.07.2010, 11:05:41 »
прикрепи свой файлик \administrator\components\com_menus\views\list\tmpl\default.php
а то мне что-то кажется что не те ты манипуляции сделал :)
*

SpecTR

  • Захожу иногда
  • 105
  • 10 / 0
Re: Обрезание текста в админке
« Ответ #17 : 27.07.2010, 13:12:06 »
Файлик в студию
« Последнее редактирование: 27.07.2010, 13:15:19 от SpecTR »
*

xUnicornx

  • Захожу иногда
  • 78
  • 0 / 0
Re: Обрезание текста в админке
« Ответ #18 : 01.09.2010, 07:49:31 »
Привет, это я опять, наконец-то руки доросли:)

Проделал первую процедуру - текст обрезался в главном меню

Когда проводил обрезание в родительском меню - то выдаются крякозябры.

Файлик добавлю, когда очиститься папка аплоад
*

SmokerMan

  • Гуру
  • 5293
  • 720 / 26
Re: Обрезание текста в админке
« Ответ #19 : 01.09.2010, 09:07:18 »
Когда проводил обрезание в родительском меню - то выдаются крякозябры.
что не удивительно, т.к. данные функции не работают с кириллицей UTF-8
*

SpecTR

  • Захожу иногда
  • 105
  • 10 / 0
Re: Обрезание текста в админке
« Ответ #20 : 29.09.2010, 13:42:57 »
что не удивительно, т.к. данные функции не работают с кириллицей UTF-8
Странно а у меня на этом сайте работает прекрасно.
Проверить можно на новости с длинным названием.
*

xUnicornx

  • Захожу иногда
  • 78
  • 0 / 0
Re: Обрезание текста в админке
« Ответ #21 : 02.10.2010, 00:56:08 »
Привет, извини что долго не отвечал - опять руки не доходили. Обещанный плюс с меня - уже давно стоит ^-^ Так вот, я все еще тебя чуть поковыряю ;) Сделал я нормально обрезку текста в меню, там все ок. Но уже в каждом отдельно меню, там где пункт "родительское меню" - у меня не выходит. применяю я этот код к 117 строке файла helper.php
Код
foreach ( $list as $item ) {
            $mitems[] = JHTML::_('select.option',  $item->id, '&nbsp;&nbsp;&nbsp;'. maxsize_str_word($item->treename) );
        }
, вставляю в этом же файле в самом вверху функцию

Код
function maxsize_str_word($text, $counttext = 100, $sep = ' ') {
  $text = iconv("utf-8","windows-1251",$text);
  if (strlen($text)>$counttext)
{
if ($text[$counttext+1] != ' ')
{
$text = substr($text,0,$counttext);
$text = substr($text,0,strrpos($text,$sep));
}
else
{
$text = substr($text,0,$counttext+2);
$text = substr($text,0,strrpos($text,$sep));
}
$text = $text."...";
}
 
$text = iconv("windows-1251","utf-8",$text);
   return $text;
}
и у меня выдает такое сообщение

Parse error: syntax error, unexpected $end, expecting T_FUNCTION in /var/www/v001103/data/www/dpsstop.info/administrator/components/com_menus/helpers/helper.php on line 199

В чем может быть проблема?
*

SpecTR

  • Захожу иногда
  • 105
  • 10 / 0
Re: Обрезание текста в админке
« Ответ #22 : 04.10.2010, 10:20:27 »
У тебя проблема в синтаксисе где-то.
Вот прикрепил свой файл, он у меня работает:


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

xUnicornx

  • Захожу иногда
  • 78
  • 0 / 0
Re: Обрезание текста в админке
« Ответ #23 : 04.10.2010, 16:36:50 »
Все, ура. Спасибо, помог:) *DRINK*
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться