কেবল 24 ঘন্টা আগের চেয়ে টাইমাগো তারিখের ফর্ম্যাটটি ব্যবহার করুন


8

আমি তারিখের ফর্ম্যাট হিসাবে টাইমাগো মডিউলটি ব্যবহার করতে চাই । যাইহোক, যখন সময়টি 24 ঘন্টা ছাড়িয়ে গেছে, আমি এটি টুইটার বা ড্রিবল ব্যবহারের মতো আরও একটি ফর্ম্যাট (উদাহরণস্বরূপ 4 ফেব্রুয়ারী, 2013) দেখাতে চাই।

আমি কোডটি টুইঙ্ক করার চেষ্টা করেছি, তবে আমার দক্ষতা আমাকে ছাড়িয়ে দিয়েছে: /

এই কারণে সম্ভবত আরও ভাল মডিউল আছে? নাকি আমার নিজের তৈরি করতে হবে?

আমি এই কোডটি পেয়েছি যা দেখায় যে আমি এটি কীভাবে কাজ করতে চাই, তবে কীভাবে এটি ড্রুপাল রূপে বাস্তবায়ন করতে হয় সে সম্পর্কে আমার কোনও ধারণা নেই।

কোন সাহায্য প্রশংসা করা হয়, ধন্যবাদ।


এটি যদি টাইমাগো মডিউলের জন্য ইতিমধ্যে অনুরোধ না করা হয় তবে এটি একটি দুর্দান্ত বৈশিষ্ট্যের অনুরোধ।
বেথ

@ তবে আমি কেবল মডিউলটির জন্য বিষয়গুলি দেখেছি এবং এটির অনুরোধ করা হয়েছে বলে মনে হয় না। যদি আপনি এটি না করতে চান তবে আমি আগামীকাল একটি ইস্যু তৈরি করব (আজকের জন্য এটির সময় নেই) :)
অ্যালেক্স

আপনি কোডটিতে কি টুইটগুলি করার চেষ্টা করেছেন? এই তারিখটি আপনার সাইটে কোথায় প্রদর্শিত হচ্ছে?
বেথ

@ তবে আমি jquery.Timeago.js ফাইলে কোডটি কেবলমাত্র চালানোর চেষ্টা করলে সেকেন্ডের ভেরিয়েবল 86400 (24 ঘন্টা) এর চেয়ে কম হয়ে থাকে was যাইহোক, আমাকে চালানোর জন্য পুরো মডিউলটি তৈরি করতে হবে, অন্যথায় এটি অন্যান্য ফর্ম্যাটগুলি প্রদর্শন করবে না, কারণ এটি এখনও তাদের ওভাররাইড করছে।
অ্যালেক্স

উত্তর:


1

ব্যবহারকারীরা কি সত্যিই কোনও পৃষ্ঠায় দীর্ঘ সময় ধরে বসে থাকেন যে এই তারিখগুলি জাভাস্ক্রিপ্টের মাধ্যমে আপডেট করা দরকার? তাদের বেশিরভাগই কিছুতে ক্লিক করবে এবং কোনও সময়ে পুরো পৃষ্ঠাটি পুনরায় লোড করবে। সুতরাং সম্ভবত, একটি পিএইচপি সমাধান একটি বিকল্প?

আপনি কাস্টম ফর্ম্যাটর মডিউলটি ব্যবহার করে পিএইচপি সমাধান অর্জন করতে পারেন ।

যদি আপনি নিম্নলিখিত কোড সহ একটি নতুন পিএইচপি টাইপ কাস্টম ফর্ম্যাটার তৈরি করেন (নিশ্চিত করুন এটি একটি ডেটস্ট্যাম্পের ধরণ):

$element = array();
foreach ($variables['#items'] as $delta => $item) {
  $unixstamp = $item['value'];
  $time_since = mktime() - $unixstamp;
  if ($time_since < 86400) {
    $date_str = format_interval($time_since);
  }
  else {
    $date_str = format_date($unixstamp, 'custom', 'jS F Y');
  }

  $element[$delta] = array(
    '#type' => 'markup',
    '#markup' => $date_str,
  );
}
return $element;

ফর্ম্যাটর তৈরি করার সময়, আপনি ক্ষেত্রের ধরণ 'ডেটস্ট্যাম্প' নির্বাচন করেছেন তা নিশ্চিত করুন। একবার ফর্ম্যাটারটি তৈরি হয়ে গেলে, আপনার সামগ্রীর ধরণের পরিচালনা ট্যাবটিতে, এই ফর্ম্যাটরটি ব্যবহারের জন্য ক্ষেত্রটি সেট করুন।

যদি আপনার তারিখটি পৃথক ক্ষেত্র হিসাবে সঞ্চিত না থাকে তবে আপনি ডিসপ্লে স্যুট মডিউলটি ইনস্টল করে নোড পরিবর্তিত সময়ের জন্য কাস্টম ফর্ম্যাটরটি প্রয়োগ করতে সক্ষম হতে পারেন ।

আপনি যদি এই মডিউলগুলির কোনওটি ব্যবহার করতে না চান তবে আপনার থিম বা কোনও কিছুতে পিএইচপি হ্যাক করতে চান তবে আপনি এখনও উপরে একই লজিকটি format_interval এবং format_date ফাংশন সহ ব্যবহার করতে পারেন।

আশা করি যে সাহায্য করতে পারে।


0

আপনি যেখানে টাইমগো ব্যবহার করছেন সেখানে কোনও ফর্ম্যাটেড তারিখ দেখানোর জন্য, নীচের মতো একটি স্নিপেট কি আপনার জন্য কৌশলটি ব্যবহার করবে?

// Assume $timestamp has the raw Unix timestamp that I'd like to display using
// the "timeago" date format supposing it is within the last 24 hrs and another date
// format - "my_date_format" otherwise.
$rule = ((REQUEST_TIME - $timestamp) <= 24 * 60 * 60);
$fallback = format_date($timestamp, 'my_date_format');
return ($rule ? timeago_format_date($timestamp, $fallback) : $fallback);

এটি কি একটি। Module ফাইলের জন্য প্রয়োগ করার কথা? আমি এটি কোথায় রাখব তা সত্যিই বুঝতে পারি না।
অ্যালেক্স

আপনার টাইমগোতে কোথায় তা খুঁজে পাওয়া দরকার। নতুন তারিখগুলি প্রয়োগ করার সময় মডিউল ফাইল করা উচিত এবং তারপরে আপনি @ অমরনাথের পরামর্শ যা ছিল তা চেষ্টা করতে পারেন বা নতুন কিছু তারিখের প্রকৃত প্রয়োগকে ঘিরে লিখিত বিবৃতি এবং শর্তটি কিছু হওয়া সেরকম কিছু ছিল like গণিত বলছে যদি 24 ঘন্টা আগে তারিখ বেশি হয় তবে এটি করুন।
CR47

0

একটি মাইক্রাস্টম মডিউল তৈরি করুন

myCustom.module রয়েছে

/**
 * Implements hook_date_formats().
 */
function myCustom_date_formats() {
  $formats = array('g:i a', 'H:i', 'M j', 'j M', 'm/d/y', 'd/m/y', 'j/n/y', 'n/j/y');
  $types = array_keys(myCustom_date_format_types());
  $date_formats = array();
  foreach ($types as $type) {
    foreach ($formats as $format) {
      $date_formats[] = array(
        'type' => $type,
        'format' => $format,
        'locales' => array(),
      );
    }
  }
  return $date_formats;
}

/**
 * Implements hook_date_format_types().
 */
function myCustom_date_format_types() {
  return array(
    'myCustom_current_day' => t('MyCustom: Current day'),
    'myCustom_current_year' => t('MyCustom: Current year'),
    'myCustom_years' => t('MyCustom: Other years'),
  );
}

/**
 * Formats a timestamp according to the defines rules.
 *
 * Examples/Rules:
 *
 * Current hour: 25 min ago
 * Current day (but not within the hour): 10:30 am
 * Current year (but not on the same day): Nov 25
 * Prior years (not the current year): 11/25/08
 *
 * @param $timestamp
 *   UNIX Timestamp.
 *
 * @return
 *   The formatted date.
 */
function myCustom_format_date($timestamp) {
  if ($timestamp > ((int)(REQUEST_TIME / 3600)) * 3600) {
    return t('@interval ago', array('@interval' => format_interval(abs(REQUEST_TIME - $timestamp), 1)));
  }
  if ($timestamp > ((int)(REQUEST_TIME / 86400)) * 86400) {
    return format_date($timestamp, 'myCustom_current_day');
  }
  if ($timestamp > mktime(0, 0, 0, 1, 0, date('Y'))) {
    return format_date($timestamp, 'myCustom_current_year');
  }
  return format_date($timestamp, 'myCustom_years');
}

MyCustom.install তৈরি করুন এবং এতে রয়েছে

/**
 * @file
 * Install file for myCustom.module
 */

/**
 * Implements hook_install().
 */
function myCustom_install() {
  // Define default formats for date format types.
  variable_set("date_format_myCustom_current_day", 'g:i a');
  variable_set("date_format_myCustom_current_year", 'M j');
  variable_set("date_format_myCustom_years", 'n/j/y');
}

/**
 * Implements hook_uninstall().
 */
function myCustom_uninstall() {
  variable_del('date_format_myCustom_current_day');
  variable_del('date_format_myCustom_current_year');
  variable_del('date_format_myCustom_years');  
}

ব্যবহার:

echo myCustom_format_date(1392532844);

2
হ্যালো. আপনি একটি ব্যাখ্যা পোস্ট করতে পারেন? এই সাইটটি কোডের জন্য নয়, উত্তরগুলির জন্য ।
Mołot

হ্যা অবশ্যই. আমি আরও উত্তরের জন্য এটি যত্ন করব।
রূপেশ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.