প্রকার অনুসারে নোডের গণনা [বন্ধ]


39

আমি একটি স্নিপেট খুঁজছি যা আমাকে নির্দিষ্ট নোড ধরণের জন্য মোট গণনা প্রদর্শন করতে দেয়, যেমন "পৃষ্ঠাগুলি = 167" বা "পণ্যগুলি = 10630."

এটি অর্জনের জন্য আমার কোন কোড ব্যবহার করা উচিত?

উত্তর:


34

এখানে একটি ফাংশন যা নির্দিষ্ট সামগ্রীর ধরণের জন্য নোডের সংখ্যা ফেরত দেবে:

function YOURTHEME_get_node_count($content_type) {
  $query = 'SELECT COUNT(*) ' .
           'FROM {node} n ' .
           'WHERE n.type = :type';
  return db_query($query, array(
      ':type' => $content_type
  ))->fetchField();
}

আপনার থিমটিতে এই কোডটি ব্যবহার করতে, আপনার মধ্যে ফাংশনটি যুক্ত করুন template.phpএবং তারপরে আপনি ফাংশনটিকে এভাবে কল করতে পারেন:

echo 'Pages: ' . YOURTHEME_get_node_count('page');
echo 'Products: ' . YOURTHEME_get_node_count('product');

56

এটি করতে আপনি ভিউ মডিউলটি ব্যবহার করতে পারেন ।

  1. একটি নতুন দর্শন তৈরি করুন, সাজানোর বিকল্পগুলি, ক্ষেত্রগুলি এবং অন্যান্য ডিফল্ট সেটিংস সরিয়ে দিন
  2. "সামগ্রী: প্রকার" এর জন্য একটি ক্ষেত্র যুক্ত করুন
  3. ডানদিকে "উন্নত" অংশটি প্রসারিত করুন এবং "হ্যাঁ" এ "সমষ্টি ব্যবহার করুন" সেট করুন
  4. "সামগ্রী: প্রকার" এর জন্য আরও একটি ক্ষেত্র যুক্ত করুন
  5. দ্বিতীয় "বিষয়বস্তু: প্রকার" ক্ষেত্রে, "সমষ্টি সেটিংস" ক্লিক করুন
  6. সমষ্টি প্রকারটি "গণনা" তে সেট করুন
  7. দ্বিতীয় "সামগ্রী: প্রকার" এখন "COUNT (সামগ্রী: প্রকার)" এর মতো হওয়া উচিত

এটা হওয়া উচিত! প্রয়োজনে ফিল্ড লেবেল এবং সারি স্টাইল সেটিংসের মতো আরও কিছু সেটিংস সমন্বয় করুন।

এই জাতীয় দৃশ্যের রফতানি এখানে আপনি সহজেই আমদানি করে দেখতে পারেন:

$view = new view;
$view->name = 'nodecounts';
$view->description = '';
$view->tag = 'default';
$view->base_table = 'node';
$view->human_name = 'Node counts';
$view->core = 7;
$view->api_version = '3.0';
$view->disabled = FALSE; /* Edit this to true to make a default view disabled initially */

/* Display: Master */
$handler = $view->new_display('default', 'Master', 'default');
$handler->display->display_options['title'] = 'Node counts';
$handler->display->display_options['group_by'] = TRUE;
$handler->display->display_options['access']['type'] = 'perm';
$handler->display->display_options['cache']['type'] = 'none';
$handler->display->display_options['query']['type'] = 'views_query';
$handler->display->display_options['query']['options']['query_comment'] = FALSE;
$handler->display->display_options['exposed_form']['type'] = 'basic';
$handler->display->display_options['pager']['type'] = 'none';
$handler->display->display_options['style_plugin'] = 'default';
$handler->display->display_options['row_plugin'] = 'fields';
$handler->display->display_options['row_options']['inline'] = array(
  'type_1' => 'type_1',
  'type' => 'type',
);
$handler->display->display_options['row_options']['separator'] = ': ';
$handler->display->display_options['row_options']['hide_empty'] = 0;
$handler->display->display_options['row_options']['default_field_elements'] = 1;
/* Field: Content: Type */
$handler->display->display_options['fields']['type_1']['id'] = 'type_1';
$handler->display->display_options['fields']['type_1']['table'] = 'node';
$handler->display->display_options['fields']['type_1']['field'] = 'type';
$handler->display->display_options['fields']['type_1']['label'] = '';
$handler->display->display_options['fields']['type_1']['alter']['alter_text'] = 0;
$handler->display->display_options['fields']['type_1']['alter']['make_link'] = 0;
$handler->display->display_options['fields']['type_1']['alter']['absolute'] = 0;
$handler->display->display_options['fields']['type_1']['alter']['external'] = 0;
$handler->display->display_options['fields']['type_1']['alter']['replace_spaces'] = 0;
$handler->display->display_options['fields']['type_1']['alter']['trim_whitespace'] = 0;
$handler->display->display_options['fields']['type_1']['alter']['nl2br'] = 0;
$handler->display->display_options['fields']['type_1']['alter']['word_boundary'] = 1;
$handler->display->display_options['fields']['type_1']['alter']['ellipsis'] = 1;
$handler->display->display_options['fields']['type_1']['alter']['strip_tags'] = 0;
$handler->display->display_options['fields']['type_1']['alter']['trim'] = 0;
$handler->display->display_options['fields']['type_1']['alter']['html'] = 0;
$handler->display->display_options['fields']['type_1']['element_label_colon'] = FALSE;
$handler->display->display_options['fields']['type_1']['element_default_classes'] = 1;
$handler->display->display_options['fields']['type_1']['hide_empty'] = 0;
$handler->display->display_options['fields']['type_1']['empty_zero'] = 0;
$handler->display->display_options['fields']['type_1']['hide_alter_empty'] = 1;
$handler->display->display_options['fields']['type_1']['link_to_node'] = 0;
$handler->display->display_options['fields']['type_1']['machine_name'] = 0;
/* Field: COUNT(Content: Type) */
$handler->display->display_options['fields']['type']['id'] = 'type';
$handler->display->display_options['fields']['type']['table'] = 'node';
$handler->display->display_options['fields']['type']['field'] = 'type';
$handler->display->display_options['fields']['type']['group_type'] = 'count';
$handler->display->display_options['fields']['type']['label'] = '';
$handler->display->display_options['fields']['type']['alter']['alter_text'] = 0;
$handler->display->display_options['fields']['type']['alter']['make_link'] = 0;
$handler->display->display_options['fields']['type']['alter']['absolute'] = 0;
$handler->display->display_options['fields']['type']['alter']['external'] = 0;
$handler->display->display_options['fields']['type']['alter']['replace_spaces'] = 0;
$handler->display->display_options['fields']['type']['alter']['trim_whitespace'] = 0;
$handler->display->display_options['fields']['type']['alter']['nl2br'] = 0;
$handler->display->display_options['fields']['type']['alter']['word_boundary'] = 1;
$handler->display->display_options['fields']['type']['alter']['ellipsis'] = 1;
$handler->display->display_options['fields']['type']['alter']['strip_tags'] = 0;
$handler->display->display_options['fields']['type']['alter']['trim'] = 0;
$handler->display->display_options['fields']['type']['alter']['html'] = 0;
$handler->display->display_options['fields']['type']['element_label_colon'] = FALSE;
$handler->display->display_options['fields']['type']['element_default_classes'] = 1;
$handler->display->display_options['fields']['type']['hide_empty'] = 0;
$handler->display->display_options['fields']['type']['empty_zero'] = 0;
$handler->display->display_options['fields']['type']['hide_alter_empty'] = 1;
$handler->display->display_options['fields']['type']['separator'] = '';
$handler->display->display_options['fields']['type']['format_plural'] = 0;

/* Display: Block */
$handler = $view->new_display('block', 'Block', 'block');

এটি সার্ভারের পারফরম্যান্সের জন্য "ভারী" বলে মনে হচ্ছে।
ফেদির আরওয়াইথটিক

7
@ ফেদির, আপনি যদি ভাবেন, আপনার ভিউজ মডিউল সম্পর্কে আরও শিখতে হবে। এটি কেবল রফতানি করা কনফিগারেশন এবং কোনও বস্তুর বৈশিষ্ট্যগুলি সেট করা সার্ভারে মোটেই ভারী নয়। এটি সত্য যে সামগ্রিকভাবে ভিউ মডিউলটি কাস্টম ব্লকের চেয়ে আরও বেশি সংস্থান ব্যবহার করবে তবে এটি এমন কিছু নয় যা সবচেয়ে ছোট ভাগ করা সার্ভার পরিচালনা করতে পারে না। আপনার সাইট জুড়ে দর্শন ব্যবহার করার জন্য ভাল কারণ রয়েছে: রক্ষণাবেক্ষণযোগ্যতা, সুরক্ষা, দ্রুত বিকাশ এবং ক্যাশে বিকল্প। কাস্টম কোডটিও খুব ভাল, তবে কেবলমাত্র একটি রফতানিতে ৮১ টি লাইন লাগে বলে দেখায় তা বাতিল করবেন না।
মার্চভ্যানেজেন্ড

3
আমি সম্মত, ভিউ মডিউলটি অনেক পরিস্থিতিতে বেশ কার্যকর হতে পারে। বর্তমান কাজের জন্য, আমি বস্তুটি গণনা করার জন্য সহজ ক্যোয়ারী ব্যবহার করব, কারণ এটি হালকা হবে। আমি ওটারহেড করতে পছন্দ করি না যেখানে আমি এটি আরও দ্রুত করতে পারি।
ফেদির আরওয়াইকিটিক

11

পছন্দের, প্রোগ্রাম্যাটিক উপায় হ'ল এন্টিফিল্ডকুইয়ার ক্লাসটি ব্যবহার করা । কেন অ্যান্টিফিল্ডকুয়েরি db_query () এর চেয়ে সেরা

নোড টাইপ ব্লগ গণনা করার একটি উদাহরণ এখানে।

$query = new EntityFieldQuery();

$query->entityCondition('entity_type', 'node') // grab nodes
->entityCondition('bundle', 'blog') // filter by blog type
->propertyCondition('status', 1) // filter by published
->count(); // count

$result = $query->execute();

অনুরূপ প্রশ্ন দেখুন ।


7

আমি এটিটিফিল্ডকিউরি ব্যবহার করে করেছি।

$query = new EntityFieldQuery();
$query->entityCondition('entity_type', 'node')
    /* this is the content type machine name */
    ->entityCondition('bundle', 'product')
    /* You can set extra properties using fieldCondition and properties with propertyCondition */
    ->fieldCondition('field_product_status', 'tid', key(taxonomy_get_term_by_name('New')))
    ;

$result = $query->execute();
if (isset($result['node'])){
    $count_of_new_product_nodes = count($result['node']); 
}

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

5

ড্রাশ ব্যবহার করা সহজ এবং দ্রুত।

drush sqlq 'select count(node.nid) as node_count, node_type.type from node inner join node_type on node.type = node_type.type group by node_type.type'

এটি এর মতো আউটপুট দেয়:

node_count  type
17  category_2012
20  category_2013
19  category_2014
3   competition
19  entry_2012_breakthrough
89  entry_2012_digitalother
50  entry_2012_directdirect
19  entry_2012_filmsecscn
17  entry_2012_insights
12  entry_2012_outdoor
31  entry_2012_promo
19  entry_2013_breakthrough
100 entry_2013_digitalother
40  entry_2013_directdirect

এবং তারপরে আপনি যদি কোনও নির্দিষ্ট ধরণের মাধ্যমে ফিল্টার করতে চান তবে কেবল গ্রেপ ব্যবহার করুন:

drush sqlq 'select count(node.nid) as node_count, node_type.type from node inner join node_type on node.type = node_type.type group by node_type.type' | grep 2014

3

আগ্রহী যে কারও জন্যই, আরেকটি সমাধান হ'ল সিলেক্টকোয়ারী ক্লাসের ( ডিবি_সलेक्टের মাধ্যমে ) কাউন্টকিউরি পদ্ধতিটি ব্যবহার করা ।

$count = db_select('node')
  ->condition('type', 'some-type')
  ->countQuery()->execute()->fetchField();

যাইহোক, আমি টাইমোফাই দ্বারা পোস্ট করা অ্যান্টিফিল্ডকিউরি সলিউশনটি পছন্দ করি না। আমি কেবল এটি যুক্তিসঙ্গত বোধগম্য বিকল্প হিসাবে সরবরাহ করছি।


1
SELECT
  COUNT({node}.nid) AS node_count,
  {node_type}.type
FROM {node}
  INNER JOIN {node_type} ON {node}.type = {node_type}.type
GROUP BY {node_type}.type;

এই কোডটি আপনার কোডটিতে ব্যবহার করুন


0

নোড প্রকার গণনা মডিউল একই প্রয়োজন হিসাবে না।

এই মডিউলটি কোনও নির্দিষ্ট সামগ্রী-ধরণের নোডের গণনা এবং নির্দিষ্ট ভূমিকা ধরণের ব্যবহারকারীদের সংখ্যা দেখানোর জন্য ব্যবহৃত হয়।

এই মডিউলটি কেবলমাত্র পরিসংখ্যান এবং দেব উদ্দেশ্যে ব্যবহৃত হবে।


0

ভিউজ মডিউলটি ব্যবহার সম্পর্কে উত্তরের ভিন্নতা হিসাবে , আপনি চার্ট মডিউলটির সাথে দেখা ভিউটি "ব্যবহার" করতে পারেন । কেবল এটি ইনস্টল / সক্ষম করুন, কোনও অতিরিক্ত কনফিগারেশন, কোডিং ইত্যাদি প্রয়োজন নেই। এই দর্শন সম্পর্কে আরও কিছু বিশদ, যা বাক্সের বাইরে-র উদাহরণগুলির মধ্যে অন্তর্ভুক্ত রয়েছে (এই লিঙ্কের উদ্ধৃতি):

... charts/examples/viewsআপনার সাইটে নেভিগেট করুন । তারপরে আপনার একটি কলাম চার্ট এবং পাই চার্ট দেখতে হবে, যা একটি সারণী প্রদর্শনও অনুসরণ করে। চার্ট এবং সারণী প্রদর্শন উভয়ই উপলভ্য সামগ্রীর প্রতিটি ধরণের জন্য নোডের মোট সংখ্যা সম্পর্কে ডেটা ধারণ করে।

নোট:

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

প্রকাশ: আমি এই মডিউলটির রক্ষণাবেক্ষণকারী,
আমি আশা করি এটি স্ব-প্রচারের ক্ষেত্রে সাইটের নীতি লঙ্ঘন করবে না ।

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