기사 날짜 형식 변경


21

Drupal 8의 기사에 사용되는 날짜 형식을 변경하고 싶습니다 Default medium date. 기본적으로 형식을 사용하는 것 같습니다 . 에 나만의 형식을 추가 admin/config/regional/date-time했지만 기사에서 사용하는 형식을 편집 할 위치를 찾을 수 없습니다.

CMS에서이를 수행 할 수있는 방법이 있습니까, 아니면 코드로 수행해야합니까?

답변:


41

그래서 이것을 조사하는 것보다 더 많은 시간을 보낸 후에, 나는 이것에 대한 두 가지 해결책을 생각해 냈습니다.

해결책 1

darol100이 그의 답변에서 언급 한 날짜 기능을 사용하는 것이 한 가지 방법입니다. 내 경우에 대한 그의 예제를 수정하여 node--article.html.twig파일에서 변경했습니다.

{% trans %}Submitted by {{ author_name }} on {{ date }}{% endtrans %}

{% set createdDate = node.getCreatedTime|date('j F Y') %}
{% trans %}Submitted by {{ author_name }} on {{ createdDate }} {% endtrans %}

이 방법의 장점은 쉽고 빠릅니다. 단점은 Drupal의 내장 날짜 형식 시스템을 사용하지 않는다는 것입니다.

해결책 2

Drupal의 날짜 형식 시스템을 사용하기 위해 먼저에서 사용자 지정 형식을 만들었습니다 admin/config/regional/date-time. 그런 node--article.html.twig다음 다음과 같이 편집 했습니다.

{% set createdDate = node.getCreatedTime|format_date('my_custom_format') %}
{% trans %}Submitted by {{ author_name }} on {{ createdDate }} {% endtrans %}

여기서는 사용자 정의 형식의 이름을 " My Custom Format " 이라고 가정 하여 시스템 이름을 생성 my_custom_format합니다.

이 솔루션에는 추가 단계가 필요하지만 더 Drupal 방식이라고 생각합니다.

이 페이지에서 Drupal의 Twig Filters 에 대해 배웠습니다 .


9

기사 컨텐츠 유형 레벨을 기준으로 날짜 형식을 변경하려는 경우. 다음 코드를 편집 / 추가하고 post.published_at|date필터를 사용하여 날짜 형식을 변경할 수 있습니다.

node--article.html.twig

{# Here are few example #}
{{ post.published_at|date(format='j  F  Y') }} {# Output = 10 March 2001#}
{{ post.published_at|date(format="F j, Y, g:i a") }} {# Output = March 10, 2001, 5:16 pm#}
{{ post.published_at|date(format='m/d/Y') }} {# Output 10/3/2001 #}

Twig는 PHP 날짜 형식 과 동일한 이름 코드를 사용 합니다 . 나뭇 가지 날짜 형식에 대한 자세한 내용은 http://twig.sensiolabs.org/doc/filters/date.html을 방문하십시오.


1
엄지 손가락! darol100, Drupal 7 사이트 사용자와 동일한 방식으로 TPL 파일로이 작업을 수행 할 수 있습니까?
JohnDoea

1
예, 그러나 나뭇 가지 구문 대신 PHP 템플릿을 사용합니다. 이것도 이것을 봐야합니다 <?php print format_date($node->created, 'custom', 'm/d/y'); ?>.
itsdarrylnorris

darol100에게 감사합니다. 이것은 나뭇 가지 필터에 대해 배울 때 매우 유용했습니다. 그러나 궁극적으로 Drupal이 제공하는 format_date 필터를 사용했습니다 (내 답변에 표시됨).
Chris

8

나는 Chris의 솔루션 2를 더 좋아합니다.

format_date ()는 더 이상 사용되지 않으며 Drupal 9 이전에 제거됩니다 ... 언젠가 drupal 업데이트를 수행하면 중단됩니다.

대신 전처리 함수의 .theme 파일에서이 작업을 수행하는 것이 좋습니다.

function [theme_name]_preprocess_node(&$variables) {
  $variables['date'] = \Drupal::service('date.formatter')->format($variables['node']->getCreatedTime(), 'my_custom_format');
}

2

듀크의 말에 대한 관찰 :

format_date ()는 더 이상 사용되지 않으며 Drupal 9 이전에 제거됩니다 ...

예. core / includes / common.inc에 정의 된 Drupal 함수 format_date () 는 실제로 더 이상 사용되지 않습니다. 그러나 나뭇 가지 필터 format_date () 를 사용할 때 Drupal이 TwigExtension :: getFilters () 에서 정의한 나뭇 가지 필터를 사용하는 대신 Drupal 함수를 호출하지 않고이 필터는 DateFormatter :: format ()을 호출합니다 .

따라서 나뭇 가지 필터 format_date ()를 사용하는 것이 안전하며 Chris의 솔루션 2가 좋습니다.


2

이미 사용중인 날짜 형식을 찾아서 UI에서 변경할 수도 있습니다. 페이지에 표시되는 내용과 날짜 형식을 비교하십시오.admin/config/regional/date-time/

예를 들어 "기본 중간 날짜"를 변경하면 템플릿 / 트위그 파일을 건드리지 않고이 형식을 사용하여 날짜가 변경됩니다.

다국어 설정을 위해 언어별로 날짜 형식을 설정 / 번역 할 수도 있습니다.


이것이 가장 좋은 대답입니다!
sudoman

1

Display Suite를 사용하여 토큰 필드를 작성하여 고유 한 제출자 필드를 작성할 수 있습니다.

Drupal 8 / 구조 / ds / 필드

그런 다음 html과 같은 토큰을 사용하여 필드를 추가하십시오 ...

By [node:author] on [node:created:custom:F j, Y]

1

다음과 같이 node.html.twig에서 형식을 사용자 정의 할 수 있습니다.

{{ node.createdtime|date(format="Y-m-d") }}

0

날짜 및 시간에 대한 모든 형식의 PHP를 가질 수 있습니다

// Assuming today is March 10th, 2001, 5:16:18 pm, and that we are in the
// Mountain Standard Time (MST) Time Zone

date("F j, Y, g:i a");                 // March 10, 2001, 5:16 pm
date("m.d.y");                         // 03.10.01
date("j, n, Y");                       // 10, 3, 2001
date("Ymd");                           // 20010310
date('h-i-s, j-m-y, it is w Day');     // 05-16-18, 10-03-01, 1631 1618 6 Satpm01
date('\i\t \i\s \t\h\e jS \d\a\y.');   // it is the 10th day.
$today = date("D M j G:i:s T Y");               // Sat Mar 10 17:16:18 MST 2001
date('H:m:s \m \i\s\ \m\o\n\t\h');     // 17:03:18 m is month
date("H:i:s");                         // 17:16:18
date("Y-m-d H:i:s");                   // 2001-03-10 17:16:18 (the MySQL DATETIME format)


{% set createdDate = node.getCreatedTime|date('F j, Y, g:i a') %}
<div class="newsSingleAuthorDate">
      {% trans %}Submitted by <span>{{ author_name }}</span>  on {{ createdDate }} {% endtrans %}
</div>

0

날짜의 문자 만 변경하고 주변 HTML 요소는 변경하지 않으려면 다음 후크를 사용하십시오.

function [theme_name]_preprocess_field(array &$variables) {
  if ($variables['field_name'] === 'created') {
    $timestamp = $variables['element']['#items']->value;
    $markup = \Drupal::service('date.formatter')->format($timestamp, 'html_date');
    $variables['items'][0]['content']['#markup'] = $markup;
  }
}

교체 [theme_name]테마의 이름과 html_date원하는 시간 형식, 당신은 아래에서 찾을 수 그 중 하나 /admin/config/regional/date-time.


-1

node--article--full.html.twig에 다음 코드를 사용했습니다.

<li class="post-date">
    {% set day = node.createdtime|date("d") %}
      <span class="day">{{ day }}</span>
    {% set month = node.createdtime|date("M") %}
        <span class="month">{{ month }}</span>
 </li>


{% set date = node.createdtime|date("M d, Y") %}
   <span>{{ date }}</span>
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.