xUnicornx
Осваиваюсь на форуме
 
Репутация: +0/-0
Offline
Сообщений: 82
|
 |
« : 06.07.2010, 16:07:26 » |
|
Здраствуйте. Добавляю в админку новые меню, но они имеют очень длинные названия. Из за этого, у меня смещаются блоки панель в сторону. Как сделать, чтоб текст в меню обрезался до заданной величины? 
|
|
|
|
|
Записан
|
|
|
|
SpecTR
Осваиваюсь на форуме
 
Репутация: +9/-0
Offline
Пол: 
Сообщений: 121
|
 |
« Ответ #1 : 06.07.2010, 16:20:38 » |
|
могу предложить свой вариант ( тут), там функция обрезки по словам я ее написал для обрезки названия тем, думаю и тебе подойдет.
|
|
|
|
|
Записан
|
|
|
|
xUnicornx
Осваиваюсь на форуме
 
Репутация: +0/-0
Offline
Сообщений: 82
|
 |
« Ответ #2 : 06.07.2010, 17:03:56 » |
|
Впринципе подойдет, ток я не знаю куда ее вставлять. Ты не поможешь нащет этого?
|
|
|
|
|
Записан
|
|
|
|
SpecTR
Осваиваюсь на форуме
 
Репутация: +9/-0
Offline
Пол: 
Сообщений: 121
|
 |
« Ответ #3 : 06.07.2010, 17:09:54 » |
|
тебе обрезать название меню, то что на сайте отображается или то что в админке?
|
|
|
|
|
Записан
|
|
|
|
xUnicornx
Осваиваюсь на форуме
 
Репутация: +0/-0
Offline
Сообщений: 82
|
 |
« Ответ #4 : 06.07.2010, 17:29:32 » |
|
То что в админке, главное меню. У меня там длинные названия пунктов меню, и соответственно, все боковые колонки смещаются за боковой экран. Мне б их подрезать чуть. А еще когда заходишь в любой пункт меню, там тоже есть список меню и он тоже на всю длинну показывает текст. И там тоже блоки выходят за основные рамки старницы из за этого. Сделаешь?
|
|
|
|
|
Записан
|
|
|
|
SpecTR
Осваиваюсь на форуме
 
Репутация: +9/-0
Offline
Пол: 
Сообщений: 121
|
 |
« Ответ #5 : 06.07.2010, 17:45:44 » |
|
С меня помощь а с тебя "+" в файле \administrator\components\com_menus\views\list\tmpl\default.php 85 строчка <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; ?> меняем на <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; ?> Но есть проблема если есть вложение, то есть подпункты они сразу превращаются в ... (подправил нужно просто увеличить количество символов для отображения - грубо но работает) и поменял немного функцию на 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
Осваиваюсь на форуме
 
Репутация: +0/-0
Offline
Сообщений: 82
|
 |
« Ответ #6 : 06.07.2010, 18:01:20 » |
|
Ок, договорились
|
|
|
|
|
Записан
|
|
|
|
SpecTR
Осваиваюсь на форуме
 
Репутация: +9/-0
Offline
Пол: 
Сообщений: 121
|
 |
« Ответ #7 : 06.07.2010, 18:29:08 » |
|
если нужно чтобы название меню обрезалось в "Родительский пункт меню:" при редактировании пункта меню, то нужно применить еще эту функцию в файле \administrator\components\com_menus\helpers\helper.php в строчке 117 к $item->treename foreach ( $list as $item ) { $mitems[] = JHTML::_('select.option', $item->id, ' '. maxsize_str_word($item->treename) ); }ну вот так навскидку за часик обрезали названия меню в админке 
|
|
|
|
|
Записан
|
|
|
|
SpecTR
Осваиваюсь на форуме
 
Репутация: +9/-0
Offline
Пол: 
Сообщений: 121
|
 |
« Ответ #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
Осваиваюсь на форуме
 
Репутация: +0/-0
Offline
Сообщений: 82
|
 |
« Ответ #9 : 09.07.2010, 13:40:46 » |
|
если нужно чтобы название меню обрезалось в "Родительский пункт меню:" при редактировании пункта меню, то нужно применить еще эту функцию в файле \administrator\components\com_menus\helpers\helper.php в строчке 117 к $item->treename foreach ( $list as $item ) { $mitems[] = JHTML::_('select.option', $item->id, ' '. [b]maxsize_str_word[/b]($item->treename) ); }ну вот так навскидку за часик обрезали названия меню в админке  maxsize_str_word - Это насколько я понял ты вводишь вручную количество символов в строке? или этот параметр где-то задается?
|
|
|
|
|
Записан
|
|
|
|
SpecTR
Осваиваюсь на форуме
 
Репутация: +9/-0
Offline
Пол: 
Сообщений: 121
|
 |
« Ответ #10 : 09.07.2010, 14:58:57 » |
|
это функция с 3 параметрами maxsize_str_word (текст, количество символов которое надо вывести, разделитель слов) количество символов которое надо вывести = по умолцанию 100 , а разделитель слов = ' ' 2 и 3 параметры можно не указывать (то есть применяться те что поумолчанию), а можно и указывать
|
|
|
|
|
Записан
|
|
|
|
xUnicornx
Осваиваюсь на форуме
 
Репутация: +0/-0
Offline
Сообщений: 82
|
 |
« Ответ #11 : 12.07.2010, 13:34:45 » |
|
Вставил твою функцию, и у меня начали страницы плохо отображатся, выдает абра-кадабру какую-то
|
|
|
|
|
Записан
|
|
|
|
SpecTR
Осваиваюсь на форуме
 
Репутация: +9/-0
Offline
Пол: 
Сообщений: 121
|
 |
« Ответ #12 : 12.07.2010, 18:30:01 » |
|
Попробуй закоментировать $text = iconv("utf-8","windows-1251",$text); и $text = iconv("windows-1251","utf-8",$text); и проверь поддерживает ли твой PHP функцию iconv
|
|
|
|
|
Записан
|
|
|
|
xUnicornx
Осваиваюсь на форуме
 
Репутация: +0/-0
Offline
Сообщений: 82
|
 |
« Ответ #13 : 13.07.2010, 00:29:24 » |
|
Я в программировании дуб-деревом  Когда - то пытался научится, но я не знаю как это проверить. Закоментировать, это поставить два слэша, или решетку?
|
|
|
|
|
Записан
|
|
|
|
SpecTR
Осваиваюсь на форуме
 
Репутация: +9/-0
Offline
Пол: 
Сообщений: 121
|
 |
« Ответ #14 : 13.07.2010, 11:08:10 » |
|
два слеша вот так: //$text = iconv("utf-8","windows-1251",$text);
|
|
|
|
|
Записан
|
|
|
|
xUnicornx
Осваиваюсь на форуме
 
Репутация: +0/-0
Offline
Сообщений: 82
|
 |
« Ответ #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
Осваиваюсь на форуме
 
Репутация: +9/-0
Offline
Пол: 
Сообщений: 121
|
 |
« Ответ #16 : 15.07.2010, 11:05:41 » |
|
прикрепи свой файлик \administrator\components\com_menus\views\list\tmpl\default.php а то мне что-то кажется что не те ты манипуляции сделал 
|
|
|
|
|
Записан
|
|
|
|
SpecTR
Осваиваюсь на форуме
 
Репутация: +9/-0
Offline
Пол: 
Сообщений: 121
|
 |
« Ответ #17 : 27.07.2010, 13:12:06 » |
|
Файлик в студию
|
|
|
|
« Последнее редактирование: 27.07.2010, 13:15:19 от SpecTR »
|
Записан
|
|
|
|
xUnicornx
Осваиваюсь на форуме
 
Репутация: +0/-0
Offline
Сообщений: 82
|
 |
« Ответ #18 : 01.09.2010, 07:49:31 » |
|
Привет, это я опять, наконец-то руки доросли:)
Проделал первую процедуру - текст обрезался в главном меню
Когда проводил обрезание в родительском меню - то выдаются крякозябры.
Файлик добавлю, когда очиститься папка аплоад
|
|
|
|
|
Записан
|
|
|
|
|
SmokerMan
|
 |
« Ответ #19 : 01.09.2010, 09:07:18 » |
|
Когда проводил обрезание в родительском меню - то выдаются крякозябры.
что не удивительно, т.к. данные функции не работают с кириллицей UTF-8
|
|
|
|
|
Записан
|
|
|
|
SpecTR
Осваиваюсь на форуме
 
Репутация: +9/-0
Offline
Пол: 
Сообщений: 121
|
 |
« Ответ #20 : 29.09.2010, 13:42:57 » |
|
что не удивительно, т.к. данные функции не работают с кириллицей UTF-8
Странно а у меня на этом сайте работает прекрасно. Проверить можно на новости с длинным названием.
|
|
|
|
|
Записан
|
|
|
|
xUnicornx
Осваиваюсь на форуме
 
Репутация: +0/-0
Offline
Сообщений: 82
|
 |
« Ответ #21 : 02.10.2010, 00:56:08 » |
|
Привет, извини что долго не отвечал - опять руки не доходили. Обещанный плюс с меня - уже давно стоит  Так вот, я все еще тебя чуть поковыряю  Сделал я нормально обрезку текста в меню, там все ок. Но уже в каждом отдельно меню, там где пункт "родительское меню" - у меня не выходит. применяю я этот код к 117 строке файла helper.php foreach ( $list as $item ) { $mitems[] = JHTML::_('select.option', $item->id, ' '. 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
Осваиваюсь на форуме
 
Репутация: +9/-0
Offline
Пол: 
Сообщений: 121
|
 |
« Ответ #22 : 04.10.2010, 10:20:27 » |
|
У тебя проблема в синтаксисе где-то. Вот прикрепил свой файл, он у меня работает:
|
|
|
|
|
Записан
|
|
|
|
xUnicornx
Осваиваюсь на форуме
 
Репутация: +0/-0
Offline
Сообщений: 82
|
 |
« Ответ #23 : 04.10.2010, 16:36:50 » |
|
Все, ура. Спасибо, помог:) 
|
|
|
|
|
Записан
|
|
|
|
|