জুমলায় $ এটি-> বেসুরল সংজ্ঞায়িত কোথায়?


14

আমি এই প্রশ্নটি প্রথমে স্ট্যাকওভারফ্লো ডটকম এ জিজ্ঞাসা করেছি ( এখানে প্রশ্ন )। মন্তব্যে আপনি পড়তে পারেন যে আমি যদি এখানে প্রশ্নটি জিজ্ঞাসা করি তবে এটি ভাল হবে।

আমার জুমলা ওয়েবসাইটে আমি ব্যবহার করছি echo $this->baseurl;তবে এটি "/index.php" যুক্ত url দেয়। বেসুরল থেকে "/index.php" অপসারণ করতে আমি এটি পরিবর্তন করতে চাই। তবে এর সংজ্ঞা রেখাটি আমি খুঁজে পাচ্ছি না $this->baseurl;

আমি এই থ্রেডটি পেয়েছি তবে এটি প্রশ্নের মালিকের টেমপ্লেটের উপর ভিত্তি করে এবং আমার টেম্পলেটে এর মতো কিছু নেই।

পরামর্শগুলি খুব প্রশংসা করেছেন :)

উত্তর:


14

$this->baseurl;মূলত এর শর্টকাট JUri::base()। এটি live_siteআপনার কনফিগারেশন.এফপি ফাইলে ভেরিয়েবল হিসাবে নির্দিষ্ট করা URL টি পায় । যদি এর কোনও মূল্য না থাকে তবে এটি কয়েকটি ভেরিয়েবলের উপর ভিত্তি করে কিছু পিএইচপি যাদু ব্যবহার করবে।

সুতরাং, কয়েক পরীক্ষা চালানো যাক। ফলাফলগুলি আবার রিপোর্ট করুন:

পরীক্ষা 1:

<?php
  echo 'Rule 1: ' . JUri::base() . '\n';
  echo 'Rule 2: ' . $_SERVER['PHP_SELF'] . '\n';
  echo 'Rule 3: ' . $_SERVER['REQUEST_URI'] . '\n';
  echo 'Rule 4: ' . $_SERVER['SCRIPT_NAME'] . '\n';
?>

পরীক্ষা 2:

<?php
    echo JUri::base();
    echo JUri::base(true);
?>

পরীক্ষা 3:

গ্লোবাল কনফিগারেশন (জুমলা ব্যাকএন্ড) সালে সেট করার চেষ্টা rewriting URL টি থেকে হ্যাঁ । এই তারপর কাজ করেন তাহলে না ধাপ পড়া 1 , 2 এবং 5 এর এই পৃষ্ঠায় এ্যাপাচি অধ্যায় , এবং আবার চেষ্টা করুন।


পরীক্ষা 4:

আপনার টেমপ্লেটের সূচি.এফপি ফাইলের শীর্ষে , নিম্নলিখিতগুলি যুক্ত করুন

<?php
    $this->baseurl = JUri::base();
?>

হাই, আপনার উত্তরের জন্য ধন্যবাদ। আমি live_siteকনফিগারেশন.এফপি ফাইলের ভেরিয়েবলটি আমার ইউআরএলে পরিবর্তন করেছি (কিছুই পরিবর্তন হয়নি)। এখানে ফলাফলগুলি: বিধি 1: my-url.com বিধি 2: /index.php বিধি 3: / বিধি 4: /index.php
থার্ক

@ থার্ক - ঠিক আছে, এবং আপনার গ্লোবাল কনফিগারেশনে আপনার কি ইউআরএল পুনর্লিখন বন্ধ আছে?
লডর

@ থার্ক - আমার উত্তরে পরীক্ষা 2 দেখুন
লড্ডার

আপনি মোড_উইরাইট মানে? এটি জুমলা কনফিগারেশনে বন্ধ করা আছে।
থার্ক

পরীক্ষা 2: echo JUri::base()" myurl.com " echo JUri::base(true)ফিরিয়ে দেয় এবং কিছুই দেয় না
থের্ক

8

$this->baseurl;একটি শর্টকাট একটি টেমপ্লেট ভিতর থেকে ব্যবহার করা হবে, পরিবর্তে কলিং হয় JURI:base();পদ্ধতি, জুড়ী ক্লাসের। এটি মূল অংশ এবং আপনি এটি খুঁজে পেতে পারেন/libraries/joomla/environment/uri.php (~line 218).

আপনি যদি পদ্ধতিটি দেখুন, আপনি দেখতে পাবেন এটি $live_urlভেরিয়েবলটি সংজ্ঞায়িত হয়েছে কিনা তা কনফিগারেশন ফাইলে পরীক্ষা করে । যদি হ্যাঁ এটি এই URL টি ফেরত দেবে, অন্যথায় এটি বেশ কয়েকটি অন্যান্য চেকের মধ্য দিয়ে যাবে এবং আপনার আসল বেস ইউআরআই ফিরিয়ে দেবে।

সম্ভবত আপনি live_url পরিবর্তনশীল সংজ্ঞায়িত আপনার configuration.phpযে অন্তর্ভুক্ত index.phpশেষে। সেখানে পরীক্ষা করুন ...

আরেকটি সম্ভাবনা হ'ল আপনার বর্তমান টেম্পলেট / টেম্পলেট সিস্টেমটি কোথাও কোথাও $this->baseurlসম্পত্তি সংজ্ঞায়িত করেছে । আপনি $this->baseurlনিজের টেম্পলেটটির index.phpফাইলের শীর্ষে এটি পুনরায় সংজ্ঞায়িত করে সহজেই আপনার টেম্পলেটটির অভ্যন্তরে ওভাররাইড করতে পারেন , যেমন:$this->baseurl = JURI::base();

*হালনাগাদ:

  • আমি উল্লেখ করেছি যে আপনি কোথায় পদ্ধতিটি খুঁজে পেতে পারেন তবে এর অর্থ এই নয় যে আপনার সেখানে যাওয়া উচিত এবং কোনও মূল পরিবর্তন করতে হবে। এটি ছিল কেবল তথ্যমূলক উদ্দেশ্যে।

2 আপডেট করুন - ভবিষ্যতের রেফারেন্সের জন্য

এই পোস্টে প্রদত্ত তথ্য সম্পূর্ণ করতে JURI::base($pathonly boolean), একটি আর্গুমেন্ট গ্রহণ করে, $pathonlyযা একটি বুলিয়ান ডেটা টাইপ - falseএটি ডিফল্ট।

এর সাথে $pathonly = true, এটি কেবল সাইটের পথে ফিরে আসবে।

উদাহরণ:

<?php echo JURI::base(); ?> Would echo something like: http:://localhost/joomla25/
<?php echo JURI::base(true); ?> Would echo: /joomla25

মনে রাখবেন যে যখন $ প্যাথোনালি = সত্য হয় , ইউআরআই পথের শেষে থাকা স্ল্যাশ বাদ দেওয়া হয়।


আপনার উত্তরের জন্য ধন্যবাদ, আমি পদ্ধতিটি খুঁজে পেয়েছি। আমি কি সেখানে কোনও পরিবর্তন এড়ানো উচিত? কনফিগারেশন.এফপি ফাইলে আমি ভেরিয়েবলটিকে live_siteআমার ইউআরএল হিসাবে সংজ্ঞায়িত করি এবং আরও কিছু না (আমি কোথাও index.php যোগ করি নি)।
থার্ক

হ্যাঁ মূল পরিবর্তন করতে কিছুই নেই। ব্যতিক্রম কেবলমাত্র যদি এর আগে অন্য কেউ ইতিমধ্যে কিছু করে থাকে ... যার ফলে এই কাজটি ফাংশনটিতে কাজ করার কারণ হয়েছে। আপনার কনফিগারেশনে লাইভ_আরএল ভেরিয়েবলটি কি সত্যিই সংজ্ঞায়িত করা দরকার? সাধারণত প্রয়োজন হয় না।
FFrewin

ঠিক আছে :) আমি live_url ভেরিয়েবলটি সংজ্ঞায়িত করি তা বিবেচ্য নয়। এটি কোনও পরিবর্তন করে না ... সূচক.এফপি সর্বদা সামনে আসে। আমি কোড ব্যবহার করে সমস্যাটি সমাধান করতে পারতাম তবে এটি খুব হ্যাকি এবং অত্যন্ত কুৎসিত হবে এবং আমি এটি করতে চাই না। সুতরাং আমি বেসুরলটি সংশোধন করতে চাই যে সূচি.এফপি এতে নেই।
থার্ক

একটি বিকল্প এবং দ্রুত উপায় হ'ল আপনার টেমপ্লেটের অভ্যন্তরে আপনার কাস্টম বেসুরল ভেরিয়েবলটি সংজ্ঞায়িত করা এবং এটি ব্যবহার করা। $ mybaseurl = জুরি: বেস (সত্য); প্রতিধ্বনি $ mybaseurl;
এফফ্রেইন

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