Помогите записать hook

Главные вкладки

Аватар пользователя strengerst strengerst 9 июня 2021 в 16:12


Если хукнунуть так

<?php function news_preprocess_field(&$variables){
    
    
$variables['attributes']['class'] = 'col-md-auto';
    } 
?>

то пропишит класс div а как сделать что бы класс прописать P которая следует за div

Комментарии

Аватар пользователя mnigma mnigma 9 июня 2021 в 23:05
1
function THEME_preprocess_node(&$vars){
 if ($vars['node']->getType() == 'MY_TYPE' && $vars['view_mode'] == 'teaser' && isset($vars['content']['body'])){
    $new_text = str_replace('<p>','<p class="MY_CLASS">',$vars['content']['body'][0]['#text']);
    $vars['content']['body'][0]['#text'] = $new_text;
  }
 }
}

Так не пойдет?

Аватар пользователя mnigma mnigma 9 июня 2021 в 23:21
1

или для первого

$new_text = '';
$content_exp = explode('<p>', $text);
foreach ($content_exp as $key => $content_p) {
  if($key == 0){
   $new_text = '<p class="My_CLASS">'.$content_p;
  }else{
  $new_text = '<p>'.$content_p;
  }
}

А вообще не легче сделать как Вы - добавить класс через _preprocess_field. И прописать в стилях ?

.field_class > p
{
  ....
}
Аватар пользователя mnigma mnigma 11 июня 2021 в 7:52

mnigma wrote:   if($key == 0){

Писал без проверки. Тут, наверно, нужно проверять не 0 ключ, а первый. Нулевой, скорее всего, будет пустой.

if($key>0)
{
  if($key == 1){
   $new_text = '<p class="My_CLASS">'.$content_p;
  }else{
  $new_text = '<p>'.$content_p;
  }
}