অনুবাদিত নোডের পথ কীভাবে পাবেন?


10

আমি ড্রুপাল in এ একটি বহুভাষা সাইট স্থাপন করেছি a একটি টেমপ্লেটে আমাকে একটি নির্দিষ্ট সামগ্রী নোডের লিঙ্ক যুক্ত করতে হবে। এই নোডে এর মতো অনুবাদ এবং পথের উপাধি রয়েছে:

node/42 = pathalias_de (german version)
node/43 = pathalias_en (english version)

টেমপ্লেটে আমি url()বর্তমান ভাষায় সামগ্রী নোডের অ্যালাইজড সংস্করণটির লিঙ্কটি পেতে কল করতে চাই ।

জার্মান পৃষ্ঠায় এটি সংযুক্ত থাকবে /de/pathalias_deইংরাজী থেকে পৃষ্ঠাতে/en/pathalias_en

আমি বেশ কয়েকটি প্রকারের চেষ্টা করেছি, যেমন এনআইডি কল করা, উপনামকে কল করা, বর্তমান ভাষার অবজেক্টটিকে পাস করা url()

এটি কি কিছু url()করতে সক্ষম হবে বা আমার একটি আলাদা ফাংশন প্রয়োজন? ধন্যবাদ!

উত্তর:


14

"বিষয়বস্তু অনুবাদ" মডিউলটির উত্সটি দেখার পরে আমি এই সমাধানটি নিয়ে এসেছি:

    global $language;
    $translations = translation_path_get_translations("node/42");
    /*
    Returns the paths of all translations of a node, based on its Drupal path:
    array(2) {
        ["de"]=>string(7) "node/42"
        ["en"]=>string(7) "node/43"
    }
    */
    print l(t('Link Title'), $translations[$language->language]); //l() will return the alias to node/42

এটি সঠিক নোড ওরফে লিঙ্কটি আউটপুট দেবে। কাজ করে এবং অত্যধিক জটিল নয় - এখনও অবাক হন যে কোনও ফাংশন রয়েছে যা ইতিমধ্যে এটি করে।


2
অথবা $translations = translation_path_get_translations(drupal_get_normal_path("pathalias_de","de"));নোড আইডির পরিবর্তে উপন্যাসটি অনুসন্ধান করতে ব্যবহার করুন এটি আরও নমনীয়। আপনাকে যদিও সঠিক ভাষাটি পাস করতে হবে।
ডুডেরু

5
global $language;

$translation_node = translation_path_get_translations("42");

$nid = $translation_node[$language->language]->nid;

$path = "node/{$nid}";

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

4

দ্রুপাল_গেট_পথ_লিয়াস ফક્શનটি একবার দেখুন

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

যদি কোনও পথ সরবরাহ করা না থাকে তবে ফাংশনটি বর্তমান পৃষ্ঠার উপন্যাসটি ফিরিয়ে দেবে।

পরামিতি

$ পথ: একটি অভ্যন্তরীণ দ্রুপাল পথ।

$ পথ_ ভাষা: পথটি সন্ধান করার জন্য একটি alচ্ছিক ভাষা কোড।

যেহেতু আপনি এটি তৈরি করতে পারেন এটি একটি পথ_ ভাষা প্যারামিটার লাগে। সুতরাং আপনি বর্তমান ভাষাটি সন্ধান করতে পারেন এবং তারপরে এই ফাংশনে প্রেরণ করতে পারেন।

অথবা কেবল মুলটিলিংক মডিউলটি ব্যবহার করুন

  1. বহু ভাষা সাইটের জন্য ডিজাইন করা। বিশেষত সেই সাইটের জন্য প্রাসঙ্গিক যেখানে সমস্ত কন্টেন্ট সমস্ত ভাষায় উপলভ্য নয় বা পরবর্তী সময়ে উপলভ্য (অনুবাদ) করা যেতে পারে।
  2. আপনাকে সহজেই অন্যান্য নোডগুলিতে অন-লিঙ্ক লিঙ্ক তৈরি করতে দেয় এবং সেই লিঙ্কগুলি স্বয়ংক্রিয়ভাবে আপডেট হয়ে যায় যখন উপলভ্য নোডগুলির উপযুক্ত অনুবাদিত সংস্করণে নির্দেশ করে।

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

3

উপরের উত্তরের কোনওটিই আই 18 এন_পথের সঠিক ব্যবহার করতে পারে বলে মনে হচ্ছে না। আপনি যদি অনুবাদকৃত নোডের সাথে লিঙ্ক করতে চান তবে আপনাকে কেবল i18n_path মডিউলটি সক্ষম করতে হবে এবং এইভাবে পথটি বিন্যাস করতে হবে,

drupal_get_path_alias('node/'.$node->nid, $node->language);

2

আপনার সম্ভবত লিঙ্ক ফাংশনটি ব্যবহার করা উচিত । এটি আপনাকে প্যারামিটার হিসাবে ভাষাটি পাস করার অনুমতি দেয় এবং ড্রুপালের সাথে একটি লিঙ্ক তৈরি করার উপযুক্ত ফাংশন।


l()url()অভ্যন্তরীণভাবে ব্যবহার করে তাই এটি এক্ষেত্রে বিবেচনা করে না।
ডুডেরু

1

অনুবাদ পুনর্নির্দেশ ব্যবহার করে আপনি ভাষা উপসর্গ সহ নোডগুলিতে লিঙ্ক করতে পারেন।

এটি এটি যা বলে:

অনুবাদ পুনর্নির্দেশ মডিউলটি বেনামে ব্যবহারকারীদের (ওয়েব ক্রলারগুলি সহ) অনুরোধকৃত ভাষায় পৃষ্ঠাটির অনুবাদে পুনর্নির্দেশ করে, যদি এটি উপস্থিত থাকে, 301 পুনর্নির্দেশ কোড ব্যবহার করে। উদাহরণস্বরূপ, অনুরোধটি যদি / ডি / নোড / 23 এর জন্য হয় এবং নোড / 23 কোনও ইংরেজি পৃষ্ঠার সাথে মিলে যায় তবে ব্যবহারকারী যদি ইংরেজী নোডের উপস্থিত থাকে তবে জার্মান অনুবাদে পুনঃনির্দেশিত করা হবে। যদি অনুবাদটি বিদ্যমান না থাকে তবে উত্স নোড সামগ্রী প্রদর্শিত হবে।

উদাহরণস্বরূপ, যদি এনডি 22 ইংরেজি সংস্করণের জন্য হয় এবং এতে ফরাসি এবং জার্মান ভাষা থাকে তবে আপনি কেবল এটিকে fr / node / 22 এবং de / node / 22 হিসাবে লিঙ্ক করতে পারেন। এই 22 টি অনুবাদকৃত সংস্করণটির কোনও নিডও হতে পারে।

যদি আপনি জাপানিদের জন্য যোগ না করে থাকেন তবে উদাহরণস্বরূপ যদি বিশেষ অনুবাদ না পাওয়া যায় তবে ja / node / 22 বেনামী ব্যবহারকারীদের জন্য 404 দেবে।


0

সঠিক উপসর্গের পথটি পেতে, আমি ব্যবহার করি:

$node_url = url(drupal_get_path_alias('node/' . $row->nid));

দ্রুপাল_জেট_পাথ_লিয়াস () কেবলমাত্র উপনামটি ফেরত দেয়, ইউআরএল () হ'ল এটি উপসর্গ যুক্ত করে ("এনএন /")।

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