Автозаполнение ALT и TITLE

Аватар пользователя RusBel RusBel 16 мая 2017 в 21:41

Здравствуйте. Подскажите кто знает, как сделать автозаполнение ALT и TITLE у изображения?
Т.е. есть тип материала, там поле image и поля ALT и TITLE. Хлопотно руками каждый раз набивать.

Комментарии

Аватар пользователя BatKor BatKor 18 мая 2017 в 15:33
<?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;
  }

}

?>

Не вариант? или вот еще варианты гугл

Аватар пользователя BatKor BatKor 18 мая 2017 в 15:37

Вообще автору посоветал бы. Поднять локалку у себя. подключить Xdebug-ер использовать какую либо ИСР(IDE) как вариант PHPStorm. и отлавливать все шаги работы того или иного процесса. "Мозги" сразу поставите на место.

Аватар пользователя BatKor BatKor 18 мая 2017 в 15:38

Вместо $node->field_image[LANGUAGE_NONE][0]['title']. использовали бы готовые функции из Field API

Аватар пользователя mozh mozh 19 мая 2017 в 14:10

да, я в курсе. так что там за функции для работы с field_api. как например присвоить значение, погуглил все как и раньше через [und][0][value]

Аватар пользователя smeshariki smeshariki 19 мая 2017 в 23:27

Воспользуйтесь модулем Rules

Событие (events) - создание материала
Действие (actions) - заполнение альт, тайтл

Это очень просто, гугл в помощь, ну а не разберёшься пиши - там два пальца об асфальт

Аватар пользователя marigolu marigolu 2 апреля 2018 в 11:54

<a href="mailto:sas@drupal.org">sas@drupal.org</a> wrote:

В теме (template.php) используйте myTheme_image

Подскажите пожалуйста, кто знает. Как внутри функции "достать" название ноды, в которой я хочу задать alt, title изображениям?

function bootstrap_business_image($variables) {
        $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) . ' />';
  }

Аватар пользователя vlucas vlucas 2 апреля 2018 в 11:57

Devel включите и внутрь функции:
kpr($variables);
или в отладчике посмотрите, если работаете в IDE

Аватар пользователя fairrandir fairrandir 2 апреля 2018 в 12:06

Вообще говоря menu_get_object(). Но выше есть и более верные подходы, чем задавать один и тот же alt всем изображениям на странице.

Аватар пользователя marigolu marigolu 3 апреля 2018 в 13:41

lukasss-vs wrote:

Devel включите и внутрь функции:

Не понимаю о чем речь. Поясните пожалуйста.

Аватар пользователя marigolu marigolu 3 апреля 2018 в 14:18

Разобралась. Вот что получилось в файле
/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;
                        }
                }
        }
       
        return '<img' . drupal_attributes($attributes) . ' />';
}