В картинках не выводятся теги alt и title
Ответа тогда не последовало по сути, так что присоединюсь к Вашему вопросу в этот раз :)
<?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 это то что будет записано в альт, в данном случае это название страницы. Можно заменить на любое имя поля из типа контента.
Вот этот код выводит урл фото, можно сделать так
Зайти в нужный файл и заменить там вывод фото на это <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 а там код картинки выглядит так:
return '<img src="'.$config->upload_host . '/' . $paths[ $this->getOption('size_full') ].'" border="0" />';
<div class="value"> <?php echo $field['html']; ?> </div>
Я прописал в этот код тег alt="" и он выводится, но пустой, чтобы я туда не вставлял.
return '<img src="'.$config->upload_host . '/' . $paths[ $this->getOption('size_full') ].'" border="0" alt="" />';
Вот этот код выводит урл фото, можно сделать так
Зайти в нужный файл и заменить там вывод фото на это
Вот ещё код вывода картинок:
<div class="image"> <a href="<?php echo $url; ?>"><?php echo html_image($item[$image_field], 'micro'); ?></a> </div>
Остаётся надеяться на разработчиков и на то, что со следующим обновлением проблема с тегами aln и title в картинках всё таки будет решена.
Хотя, конечно, хотелось докопаться до истины раньше. Поэтому вопрос остаётся открытым.
<div class="value"> <?php echo $field['html']; ?> </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); ?>">
Мое решение подходит)). Вы меня не поняли.Вот этот код позволяет в админке типы контента выбрать какое поле здесь выводить, можно автора вывести, можно анонс а можно картинку. То есть она такая чтобы у вас был выбор что туда вставить. Я даю вам готовый код изображения, то есть там будет выводиться именно изображение и только.
Этот код выведет все изображение, ее можно допилить в helper файле и добавить возможность указания дополнительных данных, и этот код формируется не /system/fields/image.php а \system\libs\html.helper.php
этот код выводит ссылку на изображение. Создаем тег в поле для ссылки ставим
Я всё равно не понимаю как реализовать ваше решение.
В файле \system\libs\html.helper.php есть код вывода маленьких картинок где указан вывод тега alt="" и указано выводить его пустым.
function html_image($image, $size_preset='small', $alt=''){ $size = $size_preset == 'micro' ? 'width="32" height="32"' : ''; return '<img src="'.html_image_src($image, $size_preset, true).'" border="0" '.$size.' alt="'.htmlspecialchars($alt).'" />'; }
<div class="image"> <img src="/upload/000/u1/000/0c13e9ac.jpg" alt="" height="32" width="32" border="0"> </div>
Можете показать на примере, я просто в программировании не шарю.
В шаблоне вывода (template\имя_шаблона\content\тип_контента) пропишите там где нужен вывод картинки следующее:Как сделать чтобы он был не пустым?
Можете показать на примере, я просто в программировании не шарю.
<img src="<?php echo html_image_src($item['image'], 'big', true); ?>" alt="<?php html($item['title']); ?>" border="0">
big — размер картинки (из тех вариантов что выбираются в настройках поля)
И удаляете картинку из цикла вывода полей ( <?php foreach($fields as $name=>$field){ ?> ):
<?php if ($name == 'image') { continue; } ?>
прописываем нужные атрибуты скриптом. Добавляем куда нибудь в файл ..\templates\default\content\default_item.tpl.php (отвечает за вывод контента) следующий код
<script type="text/javascript"> $( document ).ready(function() { $('img').each(function(indx){ $(this).attr({"alt":"<?php html($item['title']); ?>", "title":"<?php html($item['title']); ?>"}); }); }); </script>
плюсы метода: правится только файл шаблона, т.е. это не хак (не трогает ядро системы) и не слетит при обновлении))
минусы: сама задача не стоит такого решения =))
P.S. понятно что использовать код можно лишь при сильной необходимости и пока данный функционал не реализуют в движке "из коробки"
Altернативный велосипед:
прописываем нужные атрибуты скриптом. Добавляем куда нибудь в файл ..\templates\default\content\default_item.tpl.php (отвечает за вывод контента) следующий код
Ко всем картинкам на текущей странице будет добавляться атрибут alt и title с параметром равным заголовку текущей страницы.
$( document ).ready(function() { $('img').each(function(indx){ $(this).attr({"alt":"", "title":""}); }); });
плюсы метода: правится только файл шаблона, т.е. это не хак (не трогает ядро системы) и не слетит при обновлении))
минусы: сама задача не стоит такого решения =))
P.S. понятно что использовать код можно лишь при сильной необходимости и пока данный функционал не реализуют в движке "из коробки"
Спасибо, для отдельной статьи помогло, но для страницы категории с анонсами, нет, в каждой картинке выводит одно и тоже название которое берётся из последнего анонса статьи.
Ладно, пускай пока будет так, и на том спасибо.
Последнее слово за разработчиками.
Тему правда пока не закрываю, может ещё у кого-то появится идея реализации данного вопроса.
Подскажите, почему так?
// return '<img src="'.html_image_src($image, $size_preset, true).'" border="0" '.$size.' alt="'.htmlspecialchars($alt).'" />'; return html_image_src($image, $size_preset, true);
Вывел вот так
<div class="image"> <a href="<?php echo $url; ?>"><img src="<?php echo html_image($item[$image_field]); ?>" alt="<? html($item['title']); ?>" ></a> </div>
В общем у меня для каждого типа контента есть поле "изображение аватар", т.е. оно отображается в списке и в записе. Для них я хотел иметь теги альт и тайтл равные названию записи.
/system/libs/html.helper.php строчка 405 сделал вот такой код.
function html_image($image, $size_preset='small', $alt=''){ $size = $size_preset == 'micro' ? 'width="32" height="32"' : ''; $src = html_image_src($image, $size_preset, true); if (!$src) { return false; } if (!$alt) { return '<img src="'.$src.'" border="0" '.$size.'" />'; } else {return '<img src="'.$src.'" border="0" '.$size.' alt="'.htmlspecialchars($alt).'" title="'.htmlspecialchars($alt).'" />';} }
Далее во всех файлах списка, которые я использую. Например для плитки (templates/default/content/default_list_tiles.tpl.php) прописал такой код
<div class="photo"> <?php if ($fields['date_pub']['is_in_list']){ ?> <div class="note" title="<?php echo $fields['date_pub']['title']; ?>"> <?php echo $fields['date_pub']['handler']->parse( $item['date_pub'] ); ?> </div> <?php } ?> <a href="<?php echo href_to($ctype['name'], $item['slug'].'.html'); ?>"> <?php echo html_image($item['photo'], 'big', $item['title']); ?> </a> </div> <?php } ?>
Осталось наладить теги в записи. Правим файл default_item.tpl.php в этой же папке. Строчка 44 сделал вот такой код
<div class="value"> <?php if ($field['type']=='image'){echo html_image($item['photo'], 'big', $item['title']);} else {echo $field['html'];} ?> </div>
<div class="value"> <?php echo $field['html']; ?> </div>
Ну и как всегда попрошайничаю: если кому помог — плюсуйте карму, если ошибся, подправьте.