Здравствуйте. Подскажите кто знает, как сделать автозаполнение ALT и TITLE у изображения?
Т.е. есть тип материала, там поле image и поля ALT и TITLE. Хлопотно руками каждый раз набивать.
Вообще автору посоветал бы. Поднять локалку у себя. подключить Xdebug-ер использовать какую либо ИСР(IDE) как вариант PHPStorm. и отлавливать все шаги работы того или иного процесса. "Мозги" сразу поставите на место.
Разобралась. Вот что получилось в файле
/sites/all/themes/xxxxx/template.php:
//Заполняем alt и title автоматически Названием, если они не заданы function xxxxx_image($variables){ $node = menu_get_object(); $attributes = $variables['attributes']; $attributes['src'] = file_create_url($variables['path']); foreach(array( 'width', 'height', 'alt', 'title', )as$key){ if(isset($variables[$key])){ $attributes[$key] = $variables[$key]; if(!$attributes[$key]){ if((($key=='title')||($key=='alt'))&&($node->title<>'')) $attributes[$key] = $node->title; } } }
Комментарии
- https://api.drupal.org/api/drupal/includes%21theme.inc/function/theme_im...
- В теме (template.php) используйте myTheme_image
https://www.drupal.org/project/imagefield_tokens
«https://www.drupal.org/project/imagefield_tokens»
Будьте осторожны: не очень удобный модуль, если использовать в связке с https://www.drupal.org/project/insert
<?php
function YOURMODULE_node_presave($node) {
if(isset(
$node->field_image)) {$node->field_image[LANGUAGE_NONE][0]['alt']=$node->title;
$node->field_image[LANGUAGE_NONE][0]['title']=$node->title;
}
}
?>Не вариант? или вот еще варианты гугл
theme_image Это ведь просто изменение вывода при рендере
Вообще автору посоветал бы. Поднять локалку у себя. подключить Xdebug-ер использовать какую либо ИСР(IDE) как вариант PHPStorm. и отлавливать все шаги работы того или иного процесса. "Мозги" сразу поставите на место.
Вместо $node->field_image[LANGUAGE_NONE][0]['title']. использовали бы готовые функции из Field API
что там за готовые функции? знаю entity_wrapper только
Вы сейчас про entity API.
да, я в курсе. так что там за функции для работы с field_api. как например присвоить значение, погуглил все как и раньше через [und][0][value]
https://api.drupal.org/api/drupal/modules%21field%21field.module/group/f...
съезжаете )))
Мда
Воспользуйтесь модулем Rules
Событие (events) - создание материала
Действие (actions) - заполнение альт, тайтл
Это очень просто, гугл в помощь, ну а не разберёшься пиши - там два пальца об асфальт
Подскажите пожалуйста, кто знает. Как внутри функции "достать" название ноды, в которой я хочу задать alt, title изображениям?
$attributes = $variables['attributes'];
$attributes['src'] = file_create_url($variables['path']);
foreach (array(
'width',
'height',
'alt',
'title',
) as $key) {
if (isset($variables[$key])) {
$attributes[$key] = $variables[$key];
$attributes['alt'] = 'ALT'; // КАК достать название материала?
$attributes['title'] = 'TITLE'; // КАК достать название материала?
}
}
return '<img' . drupal_attributes($attributes) . ' />';
}
Devel включите и внутрь функции:
kpr($variables);
или в отладчике посмотрите, если работаете в IDE
Вообще говоря menu_get_object(). Но выше есть и более верные подходы, чем задавать один и тот же alt всем изображениям на странице.
Не понимаю о чем речь. Поясните пожалуйста.
https://www.drupal.org/project/devel
Разобралась. Вот что получилось в файле
/sites/all/themes/xxxxx/template.php:
function xxxxx_image($variables) {
$node = menu_get_object();
$attributes = $variables['attributes'];
$attributes['src'] = file_create_url($variables['path']);
foreach (array(
'width',
'height',
'alt',
'title',
) as $key) {
if (isset($variables[$key])) {
$attributes[$key] = $variables[$key];
if(!$attributes[$key]){
if((($key=='title') || ($key=='alt')) && ($node->title<>''))
$attributes[$key] = $node->title;
}
}
}
return '<img' . drupal_attributes($attributes) . ' />';
}