Теги alt и title для двойки

В картинках не выводятся теги alt и title

 
Посетитель
small user social cms
Сообщений: 31
Как решить проблему с выводом тегов alt и title в картинках? Есть пустые теги но хотелось бы чтобы в них хотя бы добавлялось название статьи. Как это можно реализовать в двойке? Может уже кто-то решил эту проблему? Если да, то буду благодарен за подсказку.
Посетитель
no avatar
Сообщений: 62
Энное время назад уже задавал тут подобный вопрос: http://instantcms.ru/forum/thread20513.html
Ответа тогда не последовало по сути, так что присоединюсь к Вашему вопросу в этот раз :)
Редактировалось: 1 раз (Последний: 10 февраля 2015 в 13:32)
Реклама
cms
Посетитель
small user social cms
Медаль
Сообщений: 238
Присоединяюсь. Важный вопрос. Я его поднимал в теме по пожеланиям для 2-ки. Надеюсь что авторы обратят внимание, и в ближайшем обновлении это будет учтено.
Посетитель
small user social cms
МедальКубок зрительских симпатийАвторитет форума
Сообщений: 1842
По разному, уточните где именно вы хотите такое сделать? Title and alt одно и тоже должно быть записано?
Чем меньше знаешь - тем Больше тупой.
OneMinima шаблон ICMS2
Посетитель
small user social cms
МедальКубок зрительских симпатийАвторитет форума
Сообщений: 1842
Код PHP:
  1. <?php echo html_image_src($item[$image_field], $size, true); ?>
Вот этот код выводит урл фото, можно сделать так
Зайти в нужный файл и заменить там вывод фото на это <img alt="<?php html($item['title']); ?>" src="<?php echo html_image_src($item[$image_field], $size, true); ?>">
<?php html($item['title']); ?> title это то что будет записано в альт, в данном случае это название страницы. Можно заменить на любое имя поля из типа контента.
Чем меньше знаешь - тем Больше тупой.
OneMinima шаблон ICMS2
Посетитель
small user social cms
Сообщений: 31
Atid - Gorec:
Вот этот код выводит урл фото, можно сделать так
Зайти в нужный файл и заменить там вывод фото на это <img alt="<?php html($item['title']); ?>" src="<?php echo html_image_src($item[$image_field], $size, true); ?>">
<?php html($item['title']); ?> title это то что будет записано в альт, в данном случае это название страницы. Можно заменить на любое имя поля из типа контента.

Ваше решение не подходит для вывода тега alt в статьях так как код вывода картинок для типа контента статьи, новости, совсем другой.
Код картинки для вывода её в статье берётся в файле /system/fields/image.php а там код картинки выглядит так:
Код PHP:
  1. return '<img src="'.$config->upload_host . '/' . $paths[ $this->getOption('size_full') ].'" border="0" />';
Сама страница статьи формируется в этом файле /templates/default/content/default_item.tpl.php и в неё подтягивается картинка с выше приведённого кода за счёт этого кода:
Код PHP:
  1.  
  2. <div class="value">
  3.  
  4. <?php
  5. echo $field['html'];
  6. ?>
  7.  
  8. </div>
  9.  
Так что ваше решение подходит только в виджетах но не в статьях или новостях.
Я прописал в этот код тег alt="" и он выводится, но пустой, чтобы я туда не вставлял.
Код PHP:
  1. return '<img src="'.$config->upload_host . '/' . $paths[ $this->getOption('size_full') ].'" border="0" alt="" />';
Посетитель
small user social cms
Сообщений: 31
Игорь Lu:

Atid - Gorec:
Вот этот код выводит урл фото, можно сделать так
Зайти в нужный файл и заменить там вывод фото на это

Вот ещё код вывода картинок:
Код PHP:
  1.  
  2. <div class="image">
  3. <a href="<?php echo $url; ?>"><?php echo html_image($item[$image_field], 'micro'); ?></a>
  4. </div>
  5.  
Как здесь прописать alt="" тоже не понятно.

Остаётся надеяться на разработчиков и на то, что со следующим обновлением проблема с тегами aln и title в картинках всё таки будет решена.
Хотя, конечно, хотелось докопаться до истины раньше. Поэтому вопрос остаётся открытым.
Редактировалось: 1 раз (Последний: 10 февраля 2015 в 05:25)
Посетитель
small user social cms
МедальКубок зрительских симпатийАвторитет форума
Сообщений: 1842
Мое решение подходит)). Вы меня не поняли.
Код PHP:
  1. <div class="value">
  2.  
  3. <?php
  4. echo $field['html'];
  5. ?>
  6.  
  7. </div>
Вот этот код позволяет в админке типи контента выбрать какое поле здесь выводить, можно автора вывести, можно анонс а можно картинку. То есть она такая чтобы у вас был выбор что туда вставить. Я даю вам готовый код изображения, то есть там будет выводиться именно изображение и только.
<?php echo html_image($item[$image_field], 'micro'); ?> Этот код выведет все изображение, ее можно допилить в helper файле и добавить возможность указания дополнительных данных, и этот код формируется не /system/fields/image.php а \system\libs\html.helper.php
<?php echo html_image_src($item[$image_field], $size, true); ?> этот код выводит ссылку на изображение. Создаем тег <img > в поле для ссылки тавим <?php echo html_image_src($item[$image_field], $size, true); ?> <img src="<?php echo html_image_src($item[$image_field], $size, true); ?>"> а в поле альт ставим название статьи <img alt="<?php html($item['title']); ?>" src="<?php echo html_image_src($item[$image_field], $size, true); ?>">
Чем меньше знаешь - тем Больше тупой.
OneMinima шаблон ICMS2
Посетитель
small user social cms
Сообщений: 31
Atid - Gorec:

Мое решение подходит)). Вы меня не поняли.
Код PHP:
  1.  
  2.  
  3.  
  4.  
  5.  
Вот этот код позволяет в админке типы контента выбрать какое поле здесь выводить, можно автора вывести, можно анонс а можно картинку. То есть она такая чтобы у вас был выбор что туда вставить. Я даю вам готовый код изображения, то есть там будет выводиться именно изображение и только.
Этот код выведет все изображение, ее можно допилить в helper файле и добавить возможность указания дополнительных данных, и этот код формируется не /system/fields/image.php а \system\libs\html.helper.php
этот код выводит ссылку на изображение. Создаем тег в поле для ссылки ставим

Я всё равно не понимаю как реализовать ваше решение.

В файле \system\libs\html.helper.php есть код вывода маленьких картинок где указан вывод тега alt="" и указано выводить его пустым.
Код PHP:
  1.  
  2. function html_image($image, $size_preset='small', $alt=''){
  3.  
  4. $size = $size_preset == 'micro' ? 'width="32" height="32"' : '';
  5.  
  6. return '<img src="'.html_image_src($image, $size_preset, true).'" border="0" '.$size.' alt="'.htmlspecialchars($alt).'" />';
  7.  
  8. }
  9.  
Результат вывода картинки

Код PHP:
  1.  
  2. <div class="image">
  3. <img src="/upload/000/u1/000/0c13e9ac.jpg" alt="" height="32" width="32" border="0"> </div>
  4.  
Как сделать чтобы он был не пустым?
Можете показать на примере, я просто в программировании не шарю.
Посетитель
no avatar
Сообщений: 62
Игорь Lu:
Как сделать чтобы он был не пустым?
Можете показать на примере, я просто в программировании не шарю.
В шаблоне вывода (template\имя_шаблона\content\тип_контента) пропишите там где нужен вывод картинки следующее:
Код PHP:
  1. <img src="<?php echo html_image_src($item['image'], 'big', true); ?>" alt="<?php html($item['title']); ?>" border="0">
image - системное имя поля с картинкой
big - размер картинки (из тех вариантов что выбираются в настройках поля)

И удаляете картинку из цикла вывода полей ( <?php foreach($fields as $name=>$field){ ?> ):
Код PHP:
  1. <?php if ($name == 'image') { continue; } ?>
Возможно есть и более элегантное решение не завязанное на жестко задание системного имени поля с изображением.
Посетитель
small user social cms
МедальКубок зрительских симпатийАвторитет форума
Сообщений: 1164
Altернативный велосипед:
прописываем нужные атрибуты скриптом. Добавляем куда нибудь в файл ..\templates\default\content\default_item.tpl.php (отвечает за вывод контента) следующий код
Код JS:
  1. <script type="text/javascript">
  2. $( document ).ready(function() {
  3. $('img').each(function(indx){
  4. $(this).attr({"alt":"<?php html($item['title']); ?>", "title":"<?php html($item['title']); ?>"});
  5. });
  6. });
  7. </script>
Ко всем картинкам на текущей странице будет добавляться атрибут alt и title с параметром равным заголовку текущей страницы.

плюсы метода: правится только файл шаблона, т.е. это не хак (не трогает ядро системы) и не слетит при обновлении))
минусы: сама задача не стоит такого решения =))

P.S. понятно что использовать код можно лишь при сильной необходимости и пока данный функционал не реализуют в движке "из коробки"
Посетитель
small user social cms
Сообщений: 31
Val:

Altернативный велосипед:
прописываем нужные атрибуты скриптом. Добавляем куда нибудь в файл ..\templates\default\content\default_item.tpl.php (отвечает за вывод контента) следующий код
Код JS:
  1.  
  2. $( document ).ready(function() {
  3. $('img').each(function(indx){
  4. $(this).attr({"alt":"", "title":""});
  5. });
  6. });
  7.  
Ко всем картинкам на текущей странице будет добавляться атрибут alt и title с параметром равным заголовку текущей страницы.

плюсы метода: правится только файл шаблона, т.е. это не хак (не трогает ядро системы) и не слетит при обновлении))
минусы: сама задача не стоит такого решения =))

P.S. понятно что использовать код можно лишь при сильной необходимости и пока данный функционал не реализуют в движке "из коробки"

Спасибо, для отдельной статьи помогло, но для страницы категории с анонсами, нет, в каждой картинке выводит одно и тоже название которое берётся из последнего анонса статьи.

Ладно, пускай пока будет так, и на том спасибо.
Последнее слово за разработчиками.

Тему правда пока не закрываю, может ещё у кого-то появится идея реализации данного вопроса.
Посетитель
small user social cms
Медаль
Сообщений: 238
Вопрос такой. Пока нет реализации вывода alt и title в поле image, пытаюсь обойтись прописыванием этих тегов в редакторе статьи (добавляю картинку через редактор). При этом тег альт выводится корректно, а title просто пропадает. Иначе говоря, код в редакторе такой: <img alt="Альт картинки" title="Тайтл картинки" src="/images/img.jpg">, а выводится на странице <img alt="Альт картинки" src="/images/img.jpg">.
Подскажите, почему так?
Посетитель
small user social cms
Медаль
Сообщений: 160
В html.helper.php сделал так
Код PHP:
  1.  
  2. // return '<img src="'.html_image_src($image, $size_preset, true).'" border="0" '.$size.' alt="'.htmlspecialchars($alt).'" />';
  3. return html_image_src($image, $size_preset, true);
  4.  
А в выводе к примеру в файле list_basic.tpl.php
Вывел вот так
Код PHP:
  1.  
  2. <div class="image">
  3. <a href="<?php echo $url; ?>"><img src="<?php echo html_image($item[$image_field]); ?>" alt="<? html($item['title']); ?>" ></a>
  4. </div>
  5.  
И так во всех виджетах изменить и будет alt
http://phpfan.ru
Портал Крыма
Посетитель
small user social cms
Медаль
Сообщений: 343
Расскажу и я о своем решении данной проблемы, если что то неправильно сделал, просьба подправить.
В общем у меня для каждого типа контента есть поле "изображение аватар", т.е. оно отображается в списке и в записе. Для них я хотел иметь теги альт и тайтл равные названию записи.

/system/libs/html.helper.php строчка 405 сделал вот такой код.

Код PHP:
  1. function html_image($image, $size_preset='small', $alt=''){
  2.  
  3. $size = $size_preset == 'micro' ? 'width="32" height="32"' : '';
  4.  
  5. $src = html_image_src($image, $size_preset, true);
  6.  
  7. if (!$src) { return false; }
  8.  
  9. if (!$alt) {
  10. return '<img src="'.$src.'" border="0" '.$size.'" />';
  11. }
  12. else {return '<img src="'.$src.'" border="0" '.$size.' alt="'.htmlspecialchars($alt).'" title="'.htmlspecialchars($alt).'" />';}
  13. }
Т.е. у нас есть некий параметр функции alt, который можно задать из шаблона.

Далее во всех файлах списка, которые я использую. Например для плитки (templates/default/content/default_list_tiles.tpl.php) прописал такой код

Код PHP:
  1. <?php if (isset($fields['photo']) && $fields['photo']['is_in_list'] && !empty($item['photo'])){ ?>
  2. <div class="photo">
  3. <?php if ($fields['date_pub']['is_in_list']){ ?>
  4. <div class="note" title="<?php echo $fields['date_pub']['title']; ?>">
  5. <?php echo $fields['date_pub']['handler']->parse( $item['date_pub'] ); ?>
  6. </div>
  7. <?php } ?>
  8. <a href="<?php echo href_to($ctype['name'], $item['slug'].'.html'); ?>">
  9. <?php echo html_image($item['photo'], 'big', $item['title']); ?>
  10. <?php unset($item['photo']); ?>
  11. </a>
  12. </div>
  13. <?php } ?>
  14.  
Т.е. прописал этот параметр альт, где мне нужно в шаблоне. Что там было первоначально, уже не помню, давно менял.

Осталось наладить теги в записи. Правим файл default_item.tpl.php в этой же папке. Строчка 44 сделал вот такой код
Код PHP:
  1.  
  2. <div class="value">
  3.  
  4. <?php
  5. if ($field['type']=='image'){echo html_image($item['photo'], 'big', $item['title']);}
  6. else {echo $field['html'];}
  7. ?>
  8.  
  9. </div>
  10.  
До этой правки в этом файле был такой код
Код PHP:
  1.  
  2. <div class="value">
  3.  
  4. <?php
  5. echo $field['html'];
  6. ?>
  7.  
  8. </div>
  9.  
Надеюсь понятно описал, то что мне нужно добился. Осталось только одна проблема, не знаю как буду обновляться на новую версию. Не помню что и где изменял уже.

Ну и как всегда попрошайничаю: если кому помог - плюсуйте карму, если ошибся, подправьте.
Редактировалось: 1 раз (Последний: 12 июля 2015 в 01:27)
В начало страницы
Предыдущая темаСледующая тема Перейти на форум:
Быстрый ответ
Чтобы писать на форуме, зарегистрируйтесь или авторизуйтесь.