প্রোগ্রাম থেকে অপ্রকাশিত নোডগুলি কীভাবে প্রকাশ করবেন


15

আমার কিছু অপ্রকাশিত নোড রয়েছে, যার জন্য তাদের নোড আইডি রয়েছে। আমি কীভাবে প্রোগ্রামগুলি তাদের প্রকাশ করতে পারি? নীচের মত একটি কোয়েরি ব্যবহার করে কাস্টম মডিউলে এটি অর্জন করা সঠিক?

db_query("UPDATE {node} SET status = 1 WHERE nid = %d", $nid)

যদিও এটি সবচেয়ে পরিষ্কার নয় এটি দ্রুততর একটি।
ওসকার ক্যালভো

3
এই পদ্ধতির মূল সমস্যাটি এটি আপডেট হয় না node_revision, সুতরাং এটি অসঙ্গতি সৃষ্টি করবে cause
আর্টফুলবোট

উত্তর:


20

ব্যবহার db_query()করা একটি ড্রুপাল method পদ্ধতি, যা দ্রুপাল 7. এ ব্যবহৃত হয় না your আপনার কাজ অর্জনের জন্য আমি এই কোডটি প্রস্তাব করি (কোনও ম্যানুয়াল কোয়েরি ছাড়াই)।

// load the node object
$node = node_load($nid);
// set status property to 1
$node->status = 1;
// re-save the node
node_save($node);

আপনার যদি আরও নোড আইডি থাকে এবং আপনি এই সমস্ত নোড প্রকাশ করতে চান তবে আপনি নীচের কোডটি ব্যবহার করতে পারেন।

$nids = array();
// Load all nodes in one go for better performance.
$nodes = node_load_multiple($nids);
foreach ($nodes as $node) {
  // set status property to 1
  $node->status = 1;
  // re-save the node
  node_save($node);
}

3
তাই না? db_queryএকটি ড্রুপাল 7 পদ্ধতিও। শুধু বিভিন্ন যুক্তি লাগে।

@ অ্যান্ড্রুটউবার, হ্যাঁ এখন এটি ড্রুপালের একটি অংশ তবে ড্রুপাল of এর প্রথম সংস্করণটি দেখুন এবং তারপরে দাবি করুন !!!
ইউসুফ

আমি কোন হুকটি ব্যবহার করব? আমি হুক_নোড_ সাবমিটের ভিতরে যুক্ত করেছি তবে আমি একটি ত্রুটি নিচ্ছি ny কোন সাহায্য?
sokratis

হুক_ফর্ম_ল্টারে @ সোক্রেটিস submitআপনার তখন থেকে কাস্টম সাবমিট হ্যান্ডলার আপনি একটি কাস্টম হ্যান্ডলার যুক্ত করুন আপনি এই জাতীয় কিছু ব্যবহার করতে পারেন।
ইউসুফ 23'15

উদ্ধৃতিগুলি ভুলে যাবেন না। ode নোড-> স্থিতি = "1";
সেলওয়েন পলিটিকাল

7

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

প্রশ্নগুলি হ'ল:

db_query("UPDATE {node} SET `status` = '1' WHERE `nid` =:nid ;"
    ,array(':nid'=>$node->nid));

db_query("UPDATE {node_revision} SET `status` = '1' WHERE `nid` =:nid AND  `vid` =:vid;"
    ,array(':nid'=>$node->nid,'vid'=> $node->vid));

কেবলমাত্র উপরের কোডটি ব্যবহার করুন যদি নোড_লোড () বা নোড_লোড_ মাল্টিপল () উপলভ্য স্মৃতিশক্তি শেষ না হওয়ার কারণে কাজ করে না।

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