А такой еще вопрос. Мне надо разбить $date на 2 подстроки... Делаю так: <?php $date=preg_split('/ /', $date);?>
А потом пытаюсь вывести <?phpprint $date[0].' ';?>
Но дата не выводится. А мне надо обязательно переменную разбить на две части, так как у меня строка "18 ноября". И число должно быть одним шрифтом, а месяц - другим..
Боже мой, да предложите вы кому нибудь 300р на пиво и через пару часов у вас вывод даты так, как вы хотите. У вас же явно душа к программированию не лежит. Не насилуйте ни свой, ни коллективный мозг.
То есть если человек что-то не догоняет, то сразу "душа не лежит к программированию"? Мне надо, чтобы мне объяснили. Я из себя гуру не делаю. Мне научиться хочется. А не фрилансерам давать. С друпалом я недавно работаю. Эту бы задачу я спокойно решил бы стандартными PHP-функциями.
1. Я вам скинул ссылку, где описаны все доступные переменные в файле node.tpl.php.
2. Ваш комментарий
"alexbelkevich" wrote:
Получилось вывести с помощью вот такой нехитрой конструкции
<?php print $date; ?>
3. Идем по моей ссылке и смотрим описание этой самой переменной $date
Quote:
$date: Formatted creation date. Preprocess functions can reformat it by calling format_date() with the desired parameters on the $created variable.
Там же описание $created
Quote:
$created: Time the node was published formatted in Unix timestamp.
4. Из описания $date узнаем, что можно в каких-то препроцесс функциях поменять формат даты. поиск по d.org и в гугл легко найдет нужный док для того, чтобы понять, что это такой. По моей ссылку смотрим комменты, там даже есть пример нужной нам препроцесс функции https://api.drupal.org/comment/51188#comment-51188
5. Смотрим описание функции format_date, ссылку вам даже в комментариях скинули.
6. Вам еще нужно разбить дату на две части. В гугле по запросу 'php разбить строку' первой ссылкой идет http://www.php.su/functions/?explode. Но вы же выбрали самый нестандартный вариант. Хотя в описании к preg_split есть примечание
Quote:
Если вам не нужна мощь регулярных выражений, вы можете выбрать более быстрые (хоть и простые) альтернативы наподобие explode() или str_split().
Вы не смогли выбрать всю эту инфу из комментов и доков, поэтому я и сказал, что
"serega111" wrote:
У вас же явно душа к программированию не лежит.
При этом, если перечитать комменты, можно еще с десяток разных способов найти, как вывести вашу дату.
<?php
$date_f = 'format_date';
$date_f($timestamp, 'medium', 'd F', NULL, NULL)
?>
Но это также не работало.
мало того что точку с запятой не поставил , так еще результат выполнения функции никуда не записал
и документацию читать надо- если указываешь medium или другой формат кроме custom , третий параметр не имеет смысла указывать и 2 последних параметра необязательные - их указывают только в случае переопределения
Комментарии
$node->submitted;
https://api.drupal.org/api/drupal/modules!node!node.tpl.php/7
Проблема в том, что мне надо вывести, например, "18 ноября". Забыл это дописать, извиняюсь..
создай в preprocess_node переменную используя https://api.drupal.org/api/drupal/includes!common.inc/function/format_da...
https://api.drupal.org/api/drupal/includes!common.inc/function/format_da...
Поменял в Конфигурации -> Дата и Время вывод даты... В ноде прописываю
и пусто.. ничего нет. По идее же так тоже должно работать?
Получилось вывести с помощью вот такой нехитрой конструкции
<div class="data"><?php print $date; ?></div>
А такой еще вопрос. Мне надо разбить $date на 2 подстроки... Делаю так:
<?php $date=preg_split('/ /', $date);?>
А потом пытаюсь вывести
<?phpprint $date[0].' ';?>
Но дата не выводится. А мне надо обязательно переменную разбить на две части, так как у меня строка "18 ноября". И число должно быть одним шрифтом, а месяц - другим..
А что не так? Локально я так делал, все нормально работает.. Или я где-то упустил что-то? Есть другое решение проблемы?
Хорошо. Спасибо. Просто я с друпалом настолько близко не работал. Не писал хуки и т.п. Думал, это можно как то обойти
Создал файл preprocess-node.inc. Там вписал
case 'small':
$format = variable_get('date_format_short', 'd F');
break;
case 'large':
$format = variable_get('date_format_long', 'd F');
break;
case 'custom':
// No change to format.
break;
case 'medium':
default:
$format = variable_get('date_format_medium', 'd F');
}
Вызываю переменную $date_put. Ничего не получается. Уверен, что сделал что-то не так. Но где?
if (!isset($timezone)) {
global $user;
if (variable_get('configurable_timezones', 1) && $user->uid && strlen($user->timezone)) {
$timezone = $user->timezone;
}
else {
$timezone = variable_get('date_default_timezone', 0);
}
}
$timestamp += $timezone;
switch ($type) {
case 'small':
$format = variable_get('date_format_short', 'm/d/Y - H:i');
break;
case 'large':
$format = variable_get('date_format_long', 'l, F j, Y - H:i');
break;
case 'custom':
// No change to format.
break;
case 'medium':
default:
$format = variable_get('date_format_medium', 'D, m/d/Y - H:i');
}
$max = strlen($format);
$date_put = '';
for ($i = 0; $i < $max; $i++) {
$c = $format[$i];
if (strpos('AaDlM', $c) !== FALSE) {
$date_put .= t(gmdate($c, $timestamp), array(), $langcode);
}
else if ($c == 'F') {
// Special treatment for long month names: May is both an abbreviation
// and a full month name in English, but other languages have
// different abbreviations.
$date_put .= trim(t('!long-month-name ' . gmdate($c, $timestamp), array('!long-month-name' => ''), $langcode));
}
else if (strpos('BdgGhHiIjLmnsStTUwWYyz', $c) !== FALSE) {
$date_put .= gmdate($c, $timestamp);
}
else if ($c == 'r') {
$date_put .= format_date($timestamp - $timezone, 'custom', 'D, d M Y H:i:s O', $timezone, $langcode);
}
else if ($c == 'O') {
$date_put .= sprintf('%s%02d%02d', ($timezone < 0 ? '-' : '+'), abs($timezone / 3600), abs($timezone % 3600) / 60);
}
else if ($c == 'Z') {
$date_put .= $timezone;
}
else if ($c == '\\') {
$date_put .= $format[++$i];
}
else {
$date_put .= $c;
}
}
return $date;
}
наверное все таки вот так правильней... Всю функцию ж надоь изменить. Но тоже толку ноль
Боже мой, да предложите вы кому нибудь 300р на пиво и через пару часов у вас вывод даты так, как вы хотите. У вас же явно душа к программированию не лежит. Не насилуйте ни свой, ни коллективный мозг.
То есть если человек что-то не догоняет, то сразу "душа не лежит к программированию"? Мне надо, чтобы мне объяснили. Я из себя гуру не делаю. Мне научиться хочется. А не фрилансерам давать. С друпалом я недавно работаю. Эту бы задачу я спокойно решил бы стандартными PHP-функциями.
По поводу файлов: взял не из головы, а отсюда http://habrahabr.ru/post/86460/
Пробовал created давно еще. В итоге выходит "1384616506".
$date получается да, выводит уже отформатированную.
Изначально я вызывал функцию и передавал параметры
<?php
$date_f = 'format_date';
$date_f($timestamp, 'medium', 'd F', NULL, NULL)
?>
Но это также не работало.
1. Я вам скинул ссылку, где описаны все доступные переменные в файле node.tpl.php.
2. Ваш комментарий
3. Идем по моей ссылке и смотрим описание этой самой переменной $date
Там же описание $created
4. Из описания $date узнаем, что можно в каких-то препроцесс функциях поменять формат даты. поиск по d.org и в гугл легко найдет нужный док для того, чтобы понять, что это такой. По моей ссылку смотрим комменты, там даже есть пример нужной нам препроцесс функции https://api.drupal.org/comment/51188#comment-51188
5. Смотрим описание функции format_date, ссылку вам даже в комментариях скинули.
6. Вам еще нужно разбить дату на две части. В гугле по запросу 'php разбить строку' первой ссылкой идет http://www.php.su/functions/?explode. Но вы же выбрали самый нестандартный вариант. Хотя в описании к preg_split есть примечание
Вы не смогли выбрать всю эту инфу из комментов и доков, поэтому я и сказал, что
При этом, если перечитать комменты, можно еще с десяток разных способов найти, как вывести вашу дату.
Извините за издевку, но это гениально, я считаю )
можно так:
<?php if ($submitted) { ?>
<div class="date-in-parts">
<span class="day"><?php echo date("j", $node->created); ?></span>
<span class="month"><?php echo date("M", $node->created); ?></span>
<span class="year"><?php echo date("Y", $node->created); ?></span>
</div><!--//date-in-parts -->
<?php } ?>
мало того что точку с запятой не поставил , так еще результат выполнения функции никуда не записал
и документацию читать надо- если указываешь medium или другой формат кроме custom , третий параметр не имеет смысла указывать и 2 последних параметра необязательные - их указывают только в случае переопределения
t()