दिलचस्प पोस्ट
एएसपी.नेट एमवीसी में प्रतिरूपण एक अनप्लग्ड वर्चुअल सीरियल पोर्ट जारी करना Div को पृष्ठभूमि में फ़िट करें IOS – एप्लिकेशन से CPU उपयोग प्राप्त करें HttpUrlConnection के साथ प्रीपेडिव बेसिक एथ? एन एरे को सम्मिलित करने का सबसे कारगर तरीका क्या है? रूबी में 'बंदर पैचिंग' वास्तव में क्या मतलब है? .NET रिएक्टिव फ्रेमवर्क के लिए अच्छी शुरुआत एक पास में MySQL अद्यतन और चयन करें क्रॉस डोमेन आइफ्रेम समस्या IIS7 में स्थिर सामग्री कैश प्रति फ़ोल्डर और एक्सटेंशन को कॉन्फ़िगर कैसे करें? निर्धारित मानदंड कैसे करें matplotlib: अनुपलब्ध डेटा को अनदेखा करने के बीच अंक खींच रहा है उद्देश्य-सी में शून्य के लिए परीक्षण – यदि (एक्स! = शून्य) बनाम बनाम (एक्स) PHP के साथ एक निर्देशिका में सभी फाइलों के नाम प्राप्त करना

साधारण गतिशील ब्रेडक्रंब

मुझे लगता है कि यह स्क्रिप्ट यहां किसी भी नॉयब के लिए बड़ी दिलचस्पी है 🙂 मुझे शामिल है 🙂

मैं क्या बनाना चाहता हूं एक छोटा कोड है जिसे मैं किसी भी फाइल में उपयोग कर सकता हूं और इस तरह एक ब्रेडक्रंब उत्पन्न करेगा:

अगर फ़ाइल को " website.com/templates/index.php " कहा जाता है तो ब्रेडक्रंब को दिखाना चाहिए:

Website.com > Templates 

^^ लिंक ^^ सादा पाठ

यदि फ़ाइल को " website.com/templates/template_some_name.php " कहा जाता है तो ब्रेडक्रंब को दिखाना चाहिए:

 Website.com > Templates > Template Some Name 

^^ लिंक ^^ लिंक ^^ सादा पाठ

वेब के समाधान से एकत्रित समाधान "साधारण गतिशील ब्रेडक्रंब"

हम्म, आपके द्वारा दिए गए उदाहरणों से "$ _SERVER ['REQUEST_URI']" और विस्फोट () फ़ंक्शन आपकी सहायता कर सकता है। आप डोमेन नाम को एक सरणी में निम्नलिखित यूआरएल को तोड़ने के लिए विस्फोट का इस्तेमाल कर सकते हैं, प्रत्येक फॉरवर्ड-स्लैश में इसे अलग कर सकते हैं।

एक बहुत ही बुनियादी उदाहरण के रूप में, ऐसा कुछ लागू किया जा सकता है:

 $crumbs = explode("/",$_SERVER["REQUEST_URI"]); foreach($crumbs as $crumb){ echo ucfirst(str_replace(array(".php","_"),array(""," "),$crumb) . ' '); } 

यह एक सरल ब्रेडक्रंब के लिए अतिरेक हो सकता है, लेकिन यह एक शॉट के लायक है मुझे याद है कि जब मैंने पहली बार शुरुआत की थी, तब मैंने इस मुद्दे को याद किया, लेकिन मैंने इसे कभी हल नहीं किया। यही है, जब तक मैंने अभी तक इसे लिखने का फैसला नहीं किया 🙂

मैंने सर्वश्रेष्ठ रूप में दस्तावेज किया है जो मैं इनलाइन कर सकता हूं, नीचे 3 संभव उपयोग के मामलों हैं का आनंद लें! (जैसे भी सवाल हों आपके पास, बेहिचक पूछिए)

 <?php // This function will take $_SERVER['REQUEST_URI'] and build a breadcrumb based on the user's current path function breadcrumbs($separator = ' &raquo; ', $home = 'Home') { // This gets the REQUEST_URI (/path/to/file.php), splits the string (using '/') into an array, and then filters out any empty values $path = array_filter(explode('/', parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH))); // This will build our "base URL" ... Also accounts for HTTPS :) $base = ($_SERVER['HTTPS'] ? 'https' : 'http') . '://' . $_SERVER['HTTP_HOST'] . '/'; // Initialize a temporary array with our breadcrumbs. (starting with our home page, which I'm assuming will be the base URL) $breadcrumbs = Array("<a href=\"$base\">$home</a>"); // Find out the index for the last value in our path array $last = end(array_keys($path)); // Build the rest of the breadcrumbs foreach ($path AS $x => $crumb) { // Our "title" is the text that will be displayed (strip out .php and turn '_' into a space) $title = ucwords(str_replace(Array('.php', '_'), Array('', ' '), $crumb)); // If we are not on the last index, then display an <a> tag if ($x != $last) $breadcrumbs[] = "<a href=\"$base$crumb\">$title</a>"; // Otherwise, just display the title (minus) else $breadcrumbs[] = $title; } // Build our temporary array (pieces of bread) into one big string :) return implode($separator, $breadcrumbs); } ?> <p><?= breadcrumbs() ?></p> <p><?= breadcrumbs(' > ') ?></p> <p><?= breadcrumbs(' ^^ ', 'Index') ?></p> 

इसके अलावा आरडीएफए (आप माइक्रोडेट या अन्य प्रारूपों का भी उपयोग कर सकते हैं) का उपयोग करके एक छोटी सी स्क्रिप्ट बनाई है। इसे Google पर देखें यह स्क्रिप्ट भी आपकी साइट संरचना को ध्यान में रखता है।

 function breadcrumbs($text = 'You are here: ', $sep = ' &raquo; ', $home = 'Home') { //Use RDFa breadcrumb, can also be used for microformats etc. $bc = '<div xmlns:v="http://rdf.data-vocabulary.org/#" id="crums">'.$text; //Get the website: $site = 'http://'.$_SERVER['HTTP_HOST']; //Get all vars en skip the empty ones $crumbs = array_filter( explode("/",$_SERVER["REQUEST_URI"]) ); //Create the home breadcrumb $bc .= '<span typeof="v:Breadcrumb"><a href="'.$site.'" rel="v:url" property="v:title">'.$home.'</a>'.$sep.'</span>'; //Count all not empty breadcrumbs $nm = count($crumbs); $i = 1; //Loop the crumbs foreach($crumbs as $crumb){ //Make the link look nice $link = ucfirst( str_replace( array(".php","-","_"), array(""," "," ") ,$crumb) ); //Loose the last seperator $sep = $i==$nm?'':$sep; //Add crumbs to the root $site .= '/'.$crumb; //Make the next crumb $bc .= '<span typeof="v:Breadcrumb"><a href="'.$site.'" rel="v:url" property="v:title">'.$link.'</a>'.$sep.'</span>'; $i++; } $bc .= '</div>'; //Return the result return $bc;} 

parse_url उपयोग parse_url और फिर परिणाम एक लूप में परिणाम:

 $urlinfo = parse_url($the_url); echo makelink($urlinfo['hostname']); foreach($breadcrumb in $urlinfo['path']) { echo makelink($breadcrumb); } function makelink($str) { return '<a href="'.urlencode($str).'" title="'.htmlspecialchars($str).'">'.htmlspecialchars($str).'</a>'; } 

(स्यूडोकोड)

मैं डॉमिनिक बार्न्स से कोड के साथ शुरू किया, cWoDeR से प्रतिक्रिया को शामिल किया और जब भी मैं उप-निर्देशिका का इस्तेमाल किया तब तीसरे स्तर पर ब्रेडक्रंबों के साथ समस्याएं थीं इसलिए मैं इसे पुनः लिखता हूं और नीचे दिए गए कोड को शामिल किया है।

ध्यान दें कि मैंने अपनी वेब साइट संरचना की स्थापना की है, जैसे कि पृष्ठ को रूट स्तर पर (पृष्ठ से जुड़ा हुआ) अधीनस्थ होना तय किया गया है:

  • फ़ाइल के रूप में एक ही नाम के साथ एक फ़ोल्डर बनाएँ (कैपिटलाइज़ेशन सहित), शून्य से प्रत्यय, रूट स्तर पर एक फ़ोल्डर के रूप में

  • इस फ़ोल्डर में सभी अधीनस्थ फाइल / पृष्ठों को रखें

(उदाहरण के लिए, अगर ग्राहक के लिए सब्बरर्ड पेज चाहिए। php:

  • ग्राहकों को उसी स्तर पर ग्राहक नामक एक फ़ोल्डर बनाएं, जैसे ग्राहक। PHP

  • ग्राहक फ़ोल्डर में एक index.php फ़ाइल जोड़ें जो फ़ोल्डर के लिए कॉलिंग पृष्ठ पर रीडायरेक्ट करता है (कोड के लिए नीचे देखें)

यह संरचना सबफ़ोल्डर्स के कई स्तरों के लिए काम करेगी।

बस सुनिश्चित करें कि आपने ऊपर वर्णित फ़ाइल संरचना का पालन किया है और प्रत्येक सबफ़ोल्डर में दिखाए गए कोड के साथ एक index.php फ़ाइल डालें।

प्रत्येक सबफ़ोल्डर में index.php पृष्ठ में कोड दिखता है:

 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>Redirected</title> </head> <body> <?php $root_dir = "web_root/" ; $last_dir=array_slice(array_filter(explode('/',$_SERVER['PHP_SELF'])),-2,1,false) ; $path_to_redirect = "/".$root_dir.$last_dir[0].".php" ; header('Location: '.$path_to_redirect) ; ?> </body> </html> 

यदि आप अपने वेब रूट (यानी / var / www / html) के रूप में सर्वर की रूट डायरेक्टरी का उपयोग करते हैं तो $ root_dir = "" सेट करें: (पिछला "/" में न छोड़ें) यदि आप अपनी वेब साइट के लिए एक उपनिर्देशिका का उपयोग करते हैं (यानी / var / www / html / web_root तब $ root_dir = "web_root /" सेट करें; (web_root को अपनी वेब निर्देशिका के वास्तविक नाम के साथ बदलें) (सुनिश्चित करें कि /

किसी भी दर पर, यहां मेरा (व्युत्पन्न) कोड है:

 <?php // Big Thank You to the folks on StackOverflow // See http://stackoverflow.com/questions/2594211/php-simple-dynamic-breadcrumb // Edited to enable using subdirectories to /var/www/html as root // eg, using /var/www/html/<this folder> as the root directory for this web site // To enable this, enter the name of the subdirectory being used as web root // in the $directory2 variable below // Make sure to include the trailing "/" at the end of the directory name // eg use $directory2="this_folder/" ; // do NOT use $directory2="this_folder" ; // If you actually ARE using /var/www/html as the root directory, // just set $directory2 = "" (blank) // with NO trailing "/" // This function will take $_SERVER['REQUEST_URI'] and build a breadcrumb based on the user's current path function breadcrumbs($separator = ' &raquo; ' , $home = 'Home') { // This sets the subdirectory as web_root (If you want to use a subdirectory) // If you do not use a web_root subdirectory, set $directory2=""; (NO trailing /) $directory2 = "web_root/" ; // This gets the REQUEST_URI (/path/to/file.php), splits the string (using '/') into an array, and then filters out any empty values $path = parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH) ; $path_array = array_filter(explode('/',$path)) ; // This line of code accommodates using a subfolder (/var/www/html/<this folder>) as root // This removes the first item in the array path so it doesn't repeat if ($directory2 != "") { array_shift($path_array) ; } // This will build our "base URL" ... Also accounts for HTTPS :) $base = ($_SERVER['HTTPS'] ? 'https' : 'http') . '://' . $_SERVER['HTTP_HOST'] . '/'. $directory2 ; // Initialize a temporary array with our breadcrumbs. (starting with our home page, which I'm assuming will be the base URL) $breadcrumbs = Array("<a href=\"$base\">$home</a>") ; // Get the index for the last value in our path array $last = end($path_array) ; // Initialize the counter $crumb_counter = 2 ; // Build the rest of the breadcrumbs foreach ($path_array as $crumb) { // Our "title" is the text that will be displayed representing the filename without the .suffix // If there is no "." in the crumb, it is a directory if (strpos($crumb,".") == false) { $title = $crumb ; } else { $title = substr($crumb,0,strpos($crumb,".")) ; } // If we are not on the last index, then create a hyperlink if ($crumb != $last) { $calling_page_array = array_slice(array_values(array_filter(explode('/',$path))),0,$crumb_counter,false) ; $calling_page_path = "/".implode('/',$calling_page_array).".php" ; $breadcrumbs[] = "<a href=".$calling_page_path.">".$title."</a>" ; } // Otherwise, just display the title else { $breadcrumbs[] = $title ; } $crumb_counter = $crumb_counter + 1 ; } // Build our temporary array (pieces of bread) into one big string :) return implode($separator, $breadcrumbs) ; } // <p><?= breadcrumbs() ? ></p> // <p><?= breadcrumbs(' > ') ? ></p> // <p><?= breadcrumbs(' ^^ ', 'Index') ? ></p> ?> 

अरे हाइपरिक आपका जवाब अच्छा था, लेकिन अगर आपके पास http: //localhost/project/index.php जैसी साइट है तो 'प्रोजेक्ट' लिंक दोहराया जाता है क्योंकि यह $ बेस का हिस्सा है और $ पथ सरणी में भी दिखाई देता है। इसलिए मैंने $ path array में पहली वस्तु को छू लिया और हटा दिया।

 //Trying to remove the first item in the array path so it doesn't repeat array_shift($path); 

मुझे नहीं पता कि यह सबसे शानदार तरीका है, लेकिन यह अब मेरे लिए काम करता है

मैं उस कोड को 13 या उससे कम पंक्ति पर इस एक से पहले जोड़ता हूं

 // Find out the index for the last value in our path array $last = end(array_keys($path)); 

यहां एक महान सरल गतिशील ब्रेडक्रंब है (आवश्यकतानुसार ट्वीक करें):

  <?php $docroot = "/zen/index5.php"; $path =($_SERVER['REQUEST_URI']); $names = explode("/", $path); $trimnames = array_slice($names, 1, -1); $length = count($trimnames)-1; $fixme = array(".php","-","myname"); $fixes = array(""," ","My<strong>Name</strong>"); echo '<div id="breadwrap"><ol id="breadcrumb">'; $url = ""; for ($i = 0; $i <= $length;$i++){ $url .= $trimnames[$i]."/"; if($i>0 && $i!=$length){ echo '<li><a href="/'.$url.'">'.ucfirst(str_replace($fixme,$fixes,$trimnames[$i]) . ' ').'</a></li>'; } elseif ($i == $length){ echo '<li class="current">'.ucfirst(str_replace($fixme,$fixes,$trimnames[$i]) . ' ').'</li>'; } else{ echo $trimnames[$i]='<li><a href='.$docroot.' id="bread-home"><span>&nbsp;</span></a></li>'; } } echo '</ol>'; ?> 

explode() फ़ंक्शन का उपयोग कर एक बेहतर एक प्रकार है …

हाइपरलिंक href में अपने यूआरएल चर को बदलने के लिए मत भूलना।

 <?php if($url != ''){ $b = ''; $links = explode('/',rtrim($url,'/')); foreach($links as $l){ $b .= $l; if($url == $b){ echo $l; }else{ echo "<a href='URL?url=".$b."'>".$l."/</a>"; } $b .= '/'; } } ?>