ইউআরএলগুলি পরিষ্কার করুন - অটোপথের ওরফে - ইউআরএল থেকে অ্যাকসেন্টগুলি (Á É Ó Í Ñ) কীভাবে সরাবেন?


19

আমি ড্রুপাল 9.৯ এবং পাঠাটো x.x-1.0-আরসি 2 ব্যবহার করছি

আমি পাথ থেকে অ্যাকসেন্টগুলি সরাতে এবং এগুলিকে সাধারণ অক্ষর দিয়ে প্রতিস্থাপন করতে চাই

Á=A
É=E
Ó=O
Í=I
Ñ=N

প্রভৃতি

আমি পথটি তৈরির জন্য একটি ট্যাকোনমি ক্ষেত্রের ধরণ এবং নোড শিরোনাম ব্যবহার করছি:

[node:field_provincia]/[node:title]

উদাহরণস্বরূপ অ্যাভিলা / মেরিদা

পাঠাটোতে কি এই জাতীয় ফাংশন প্রয়োগ করতে আমি ব্যবহার করতে পারি?

function removeAccents($str)
{
  $a = array('À', 'Á', 'Â', 'Ã', 'Ä', 'Å', 'Æ', 'Ç', 'È', 'É', 'Ê', 'Ë', 'Ì', 'Í', 'Î', 'Ï', 'Ð', 'Ñ', 'Ò', 'Ó', 'Ô', 'Õ', 'Ö', 'Ø', 'Ù', 'Ú', 'Û', 'Ü', 'Ý', 'ß', 'à', 'á', 'â', 'ã', 'ä', 'å', 'æ', 'ç', 'è', 'é', 'ê', 'ë', 'ì', 'í', 'î', 'ï', 'ñ', 'ò', 'ó', 'ô', 'õ', 'ö', 'ø', 'ù', 'ú', 'û', 'ü', 'ý', 'ÿ', 'Ā', 'ā', 'Ă', 'ă', 'Ą', 'ą', 'Ć', 'ć', 'Ĉ', 'ĉ', 'Ċ', 'ċ', 'Č', 'č', 'Ď', 'ď', 'Đ', 'đ', 'Ē', 'ē', 'Ĕ', 'ĕ', 'Ė', 'ė', 'Ę', 'ę', 'Ě', 'ě', 'Ĝ', 'ĝ', 'Ğ', 'ğ', 'Ġ', 'ġ', 'Ģ', 'ģ', 'Ĥ', 'ĥ', 'Ħ', 'ħ', 'Ĩ', 'ĩ', 'Ī', 'ī', 'Ĭ', 'ĭ', 'Į', 'į', 'İ', 'ı', 'IJ', 'ij', 'Ĵ', 'ĵ', 'Ķ', 'ķ', 'Ĺ', 'ĺ', 'Ļ', 'ļ', 'Ľ', 'ľ', 'Ŀ', 'ŀ', 'Ł', 'ł', 'Ń', 'ń', 'Ņ', 'ņ', 'Ň', 'ň', 'ʼn', 'Ō', 'ō', 'Ŏ', 'ŏ', 'Ő', 'ő', 'Œ', 'œ', 'Ŕ', 'ŕ', 'Ŗ', 'ŗ', 'Ř', 'ř', 'Ś', 'ś', 'Ŝ', 'ŝ', 'Ş', 'ş', 'Š', 'š', 'Ţ', 'ţ', 'Ť', 'ť', 'Ŧ', 'ŧ', 'Ũ', 'ũ', 'Ū', 'ū', 'Ŭ', 'ŭ', 'Ů', 'ů', 'Ű', 'ű', 'Ų', 'ų', 'Ŵ', 'ŵ', 'Ŷ', 'ŷ', 'Ÿ', 'Ź', 'ź', 'Ż', 'ż', 'Ž', 'ž', 'ſ', 'ƒ', 'Ơ', 'ơ', 'Ư', 'ư', 'Ǎ', 'ǎ', 'Ǐ', 'ǐ', 'Ǒ', 'ǒ', 'Ǔ', 'ǔ', 'Ǖ', 'ǖ', 'Ǘ', 'ǘ', 'Ǚ', 'ǚ', 'Ǜ', 'ǜ', 'Ǻ', 'ǻ', 'Ǽ', 'ǽ', 'Ǿ', 'ǿ');
  $b = array('A', 'A', 'A', 'A', 'A', 'A', 'AE', 'C', 'E', 'E', 'E', 'E', 'I', 'I', 'I', 'I', 'D', 'N', 'O', 'O', 'O', 'O', 'O', 'O', 'U', 'U', 'U', 'U', 'Y', 's', 'a', 'a', 'a', 'a', 'a', 'a', 'ae', 'c', 'e', 'e', 'e', 'e', 'i', 'i', 'i', 'i', 'n', 'o', 'o', 'o', 'o', 'o', 'o', 'u', 'u', 'u', 'u', 'y', 'y', 'A', 'a', 'A', 'a', 'A', 'a', 'C', 'c', 'C', 'c', 'C', 'c', 'C', 'c', 'D', 'd', 'D', 'd', 'E', 'e', 'E', 'e', 'E', 'e', 'E', 'e', 'E', 'e', 'G', 'g', 'G', 'g', 'G', 'g', 'G', 'g', 'H', 'h', 'H', 'h', 'I', 'i', 'I', 'i', 'I', 'i', 'I', 'i', 'I', 'i', 'IJ', 'ij', 'J', 'j', 'K', 'k', 'L', 'l', 'L', 'l', 'L', 'l', 'L', 'l', 'l', 'l', 'N', 'n', 'N', 'n', 'N', 'n', 'n', 'O', 'o', 'O', 'o', 'O', 'o', 'OE', 'oe', 'R', 'r', 'R', 'r', 'R', 'r', 'S', 's', 'S', 's', 'S', 's', 'S', 's', 'T', 't', 'T', 't', 'T', 't', 'U', 'u', 'U', 'u', 'U', 'u', 'U', 'u', 'U', 'u', 'U', 'u', 'W', 'w', 'Y', 'y', 'Y', 'Z', 'z', 'Z', 'z', 'Z', 'z', 's', 'f', 'O', 'o', 'U', 'u', 'A', 'a', 'I', 'i', 'O', 'o', 'U', 'u', 'U', 'u', 'U', 'u', 'U', 'u', 'U', 'u', 'A', 'a', 'AE', 'ae', 'O', 'o');
  return str_replace($a, $b, $str);
}

পাঠোউতের কাতারে প্রাসঙ্গিক সমস্যা ।
অ্যাডাম বালসাম

উত্তর:


18

আপনি কি লিপ্যন্তর মডিউলটি দেখেছেন ? প্রকল্পের সংক্ষিপ্তসারটি বলছে যে এটি ইউআরএলগুলির জন্য লিখিত লিপি রচনা ব্যবহার করতে পাঠাটো ২.x ব্যবহার করতে পারে।


এটি ঠিক আমি ব্যবহার করি এবং এটি সুন্দরভাবে কাজ করে। দ্রুপালের মেল ফাংশনটি ব্যবহার করার সাথে সাথে "ŠŒŽšœžŸ ¥ µÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝßàáâãäåæçèéêëìíîïðñòóôõöøùúûüýÿ" নিয়ে আমার আর একটি সমস্যা ছিল এবং ট্রান্সলিটেশন সেগুলিও পরিষ্কার করে দিয়েছে।
সাইট্রিকগুই

2
তবে সমস্যাটি হ'ল এটি ইউআরএল-এ সমস্ত ভাষার বর্ণগুলি ইংরেজী ভাষায় বদলে দেয় যা অদ্ভুত দেখাচ্ছে। উদাহরণস্বরূপ হিব্রু ভাষায় רשימה של מדינות হয়ে যায় / rshymh-shl-mdynvt-bvlm। ওপি জিজ্ঞাসা করছে যে কীভাবে কেবল উচ্চারণকৃত চরগুলি অপসারণ করা যায়।
এজিএ

@ অগা আপনি মডিউলটি নিয়ে আসা ফাইলগুলি হ্যাক করে (বা ওভাররাইডিং, এটি সঠিকভাবে স্মরণ করিয়ে দিলে এটি ওওপি হবে) আপনি যা ট্রান্সপ্লিট করে তা সুর করতে পারেন।
কপি ইথেরিয়েল

14

এটি সম্পাদন করার সহজ উপায় ট্রান্সলিটেশন মডিউলটি রয়ে গেছে ।

" পাঠাটোতে কি কোনও ধরণের হুক রয়েছে যা আমি এই ফাংশনটি প্রয়োগ করতে পারি " এর জবাব দেওয়ার জন্য , আপনি হুক_পথহাতো_লিয়াস_াল্টার () ব্যবহার করতে পারেন :

function YOURMODULE_pathauto_alias_alter(&$alias, &$context){
  $alias = removeAccents($alias);
}

function removeAccents($str){
  $a = array('À', 'Á', 'Â', 'Ã', 'Ä', 'Å', 'Æ', 'Ç', 'È', 'É', 'Ê', 'Ë', 'Ì', 'Í', 'Î', 'Ï', 'Ð', 'Ñ', 'Ò', 'Ó', 'Ô', 'Õ', 'Ö', 'Ø', 'Ù', 'Ú', 'Û', 'Ü', 'Ý', 'ß', 'à', 'á', 'â', 'ã', 'ä', 'å', 'æ', 'ç', 'è', 'é', 'ê', 'ë', 'ì', 'í', 'î', 'ï', 'ñ', 'ò', 'ó', 'ô', 'õ', 'ö', 'ø', 'ù', 'ú', 'û', 'ü', 'ý', 'ÿ', 'Ā', 'ā', 'Ă', 'ă', 'Ą', 'ą', 'Ć', 'ć', 'Ĉ', 'ĉ', 'Ċ', 'ċ', 'Č', 'č', 'Ď', 'ď', 'Đ', 'đ', 'Ē', 'ē', 'Ĕ', 'ĕ', 'Ė', 'ė', 'Ę', 'ę', 'Ě', 'ě', 'Ĝ', 'ĝ', 'Ğ', 'ğ', 'Ġ', 'ġ', 'Ģ', 'ģ', 'Ĥ', 'ĥ', 'Ħ', 'ħ', 'Ĩ', 'ĩ', 'Ī', 'ī', 'Ĭ', 'ĭ', 'Į', 'į', 'İ', 'ı', 'IJ', 'ij', 'Ĵ', 'ĵ', 'Ķ', 'ķ', 'Ĺ', 'ĺ', 'Ļ', 'ļ', 'Ľ', 'ľ', 'Ŀ', 'ŀ', 'Ł', 'ł', 'Ń', 'ń', 'Ņ', 'ņ', 'Ň', 'ň', 'ʼn', 'Ō', 'ō', 'Ŏ', 'ŏ', 'Ő', 'ő', 'Œ', 'œ', 'Ŕ', 'ŕ', 'Ŗ', 'ŗ', 'Ř', 'ř', 'Ś', 'ś', 'Ŝ', 'ŝ', 'Ş', 'ş', 'Š', 'š', 'Ţ', 'ţ', 'Ť', 'ť', 'Ŧ', 'ŧ', 'Ũ', 'ũ', 'Ū', 'ū', 'Ŭ', 'ŭ', 'Ů', 'ů', 'Ű', 'ű', 'Ų', 'ų', 'Ŵ', 'ŵ', 'Ŷ', 'ŷ', 'Ÿ', 'Ź', 'ź', 'Ż', 'ż', 'Ž', 'ž', 'ſ', 'ƒ', 'Ơ', 'ơ', 'Ư', 'ư', 'Ǎ', 'ǎ', 'Ǐ', 'ǐ', 'Ǒ', 'ǒ', 'Ǔ', 'ǔ', 'Ǖ', 'ǖ', 'Ǘ', 'ǘ', 'Ǚ', 'ǚ', 'Ǜ', 'ǜ', 'Ǻ', 'ǻ', 'Ǽ', 'ǽ', 'Ǿ', 'ǿ');
  $b = array('A', 'A', 'A', 'A', 'A', 'A', 'AE', 'C', 'E', 'E', 'E', 'E', 'I', 'I', 'I', 'I', 'D', 'N', 'O', 'O', 'O', 'O', 'O', 'O', 'U', 'U', 'U', 'U', 'Y', 's', 'a', 'a', 'a', 'a', 'a', 'a', 'ae', 'c', 'e', 'e', 'e', 'e', 'i', 'i', 'i', 'i', 'n', 'o', 'o', 'o', 'o', 'o', 'o', 'u', 'u', 'u', 'u', 'y', 'y', 'A', 'a', 'A', 'a', 'A', 'a', 'C', 'c', 'C', 'c', 'C', 'c', 'C', 'c', 'D', 'd', 'D', 'd', 'E', 'e', 'E', 'e', 'E', 'e', 'E', 'e', 'E', 'e', 'G', 'g', 'G', 'g', 'G', 'g', 'G', 'g', 'H', 'h', 'H', 'h', 'I', 'i', 'I', 'i', 'I', 'i', 'I', 'i', 'I', 'i', 'IJ', 'ij', 'J', 'j', 'K', 'k', 'L', 'l', 'L', 'l', 'L', 'l', 'L', 'l', 'l', 'l', 'N', 'n', 'N', 'n', 'N', 'n', 'n', 'O', 'o', 'O', 'o', 'O', 'o', 'OE', 'oe', 'R', 'r', 'R', 'r', 'R', 'r', 'S', 's', 'S', 's', 'S', 's', 'S', 's', 'T', 't', 'T', 't', 'T', 't', 'U', 'u', 'U', 'u', 'U', 'u', 'U', 'u', 'U', 'u', 'U', 'u', 'W', 'w', 'Y', 'y', 'Y', 'Z', 'z', 'Z', 'z', 'Z', 'z', 's', 'f', 'O', 'o', 'U', 'u', 'A', 'a', 'I', 'i', 'O', 'o', 'U', 'u', 'U', 'u', 'U', 'u', 'U', 'u', 'U', 'u', 'A', 'a', 'AE', 'ae', 'O', 'o');
  return str_replace($a, $b, $str);
}

কেবল আপনার নির্দিষ্ট ভাষার প্রয়োজনের সাথে খাপ খাইয়ে removeAccents() নিন ... আপনি সমস্ত ধরণের অ্যাকসেন্টের তালিকা তৈরির চেষ্টা করছেন এমন অনেকগুলি ক্রিয়াকলাপ দেখতে পাবেন, একটি স্ট্রিং থেকে ডায়াক্রিটিক্স সরান দেখুন , তবে আমি আশঙ্কা করছি যে কোনওটিই সর্বজনীন নয়।

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

function YOURMODULE_pathauto_alias_alter(&$alias, &$context){
  setlocale(LC_CTYPE, 'es_ES');//Spanish Spain i.e
  $alias = iconv('UTF-8', 'ASCII//TRANSLIT', $alias);
}

সম্পাদনা: কিছু মন্তব্য পড়ার পরে, আমি এটি যুক্ত করতে দরকারী বলে মনে করি:


ধন্যবাদ .. এগুলি কি পৃথিবীর একমাত্র বর্ণিত চরিত্র? আইকনভি ব্যবহারের ক্ষেত্রে আপনার কি কাজের উদাহরণ রয়েছে?
আগা

পাঠাতো সেটিংসে আমি যোগ করেছি Â, Ã, Ä, À, Á, Å, Å, Ç, È, É, Ê, Ë, Ó, Î, Ï, Ð, হে হে, U, U, U, U, Y, ম, এস এস, এ, এ, এ, এ, এ, এ, æ, সি, ই, ই, ই, ই, আমি, আমি, আমি, আমি , ð,।, ò, ó,।,।, ö, ø,।,।,।,।, ý, þ,।, but, তবে কেন এটি কাজ করছে না তা জানেন না।
এজিএ


@ আগা আমি আপনার মন্তব্যগুলি প্রতিবিম্বিত করতে উত্তর সম্পাদনা করেছি। একাকী পাঠ্য ক্ষেত্রটি 'স্ট্রিং টু রিমুভাল' হওয়ায় পাঠাটো সেটিংস পরিষ্কার করার জন্য অ্যাকসেন্টগুলি নির্দিষ্ট করার জন্য সঠিক জায়গা নয়। মডিউল ট্রান্সলিটেশন যদি আপনার প্রয়োজনের সাথে খাপ খায় না তবে আপনি আরও ভাল চেষ্টা করতে চাইবেন pat আপনি যদি হিন্দি, গ্রীক, সিরিলিক, হিব্রু সমস্ত বর্ণমালা বিবেচনা করেন তবে ক্লিন ইউআরএল একটি বিস্তৃত বিষয়
কোজো

আমি সর্বদা ট্রান্সলিটেশন মডিউলটি ব্যবহার করি,
মনোযোগের

4

এখান থেকে কোজোর পরামর্শ এবং উত্স অনুসারে: /programming/3371697/replacing-accented-characters-php - আমি এই কোডটি ব্যবহার করছি যা দেখে মনে হচ্ছে এটি ঠিক আছে:

function mymodule_pathauto_alias_alter(&$alias, &$context) {        
    removeAccents($alias);        
}

function removeAccents(&$str) {
    $unwanted_array = array('Š' => 'S', 'š' => 's', 'Ž' => 'Z', 'ž' => 'z', 'À' => 'A', 'Á' => 'A', 'Â' => 'A', 'Ã' => 'A', 'Ä' => 'A', 'Å' => 'A', 'Æ' => 'A', 'Ç' => 'C', 'È' => 'E', 'É' => 'E',
        'Ê' => 'E', 'Ë' => 'E', 'Ì' => 'I', 'Í' => 'I', 'Î' => 'I', 'Ï' => 'I', 'Ñ' => 'N', 'Ò' => 'O', 'Ó' => 'O', 'Ô' => 'O', 'Õ' => 'O', 'Ö' => 'O', 'Ø' => 'O', 'Ù' => 'U',
        'Ú' => 'U', 'Û' => 'U', 'Ü' => 'U', 'Ý' => 'Y', 'Þ' => 'B', 'ß' => 'Ss', 'à' => 'a', 'á' => 'a', 'â' => 'a', 'ã' => 'a', 'ä' => 'a', 'å' => 'a', 'æ' => 'a', 'ç' => 'c',
        'è' => 'e', 'é' => 'e', 'ê' => 'e', 'ë' => 'e', 'ì' => 'i', 'í' => 'i', 'î' => 'i', 'ï' => 'i', 'ð' => 'o', 'ñ' => 'n', 'ò' => 'o', 'ó' => 'o', 'ô' => 'o', 'õ' => 'o',
        'ö' => 'o', 'ø' => 'o', 'ù' => 'u', 'ú' => 'u', 'û' => 'u', 'ý' => 'y', 'ý' => 'y', 'þ' => 'b', 'ÿ' => 'y',
        'G' => 'G', 'I' => 'I', 'S' => 'S', 'g' => 'g', 'i' => 'i', 's' => 's', 'ü' => 'u',
        'a' => 'a', 'A' => 'A', '?' => 's', '?' => 'S', '?' => 't', '?' => 'T'
    );
    $str = strtr($str, $unwanted_array);

}

পোস্টের মন্তব্যে আমি তুর্কি ও রোমানিয়ান চরগুলিও যুক্ত করেছি।

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


0

আপনি ইউআরএল থেকে অ্যাকসেন্ট অক্ষর অপসারণ করতে পাঠোটো_ক্লানস্ট্রিং () ব্যবহার করতে পারেন।

function MYMODULE_pathauto_alias_alter(&$alias, &$context) {
  if (isset($context['data']['node'])) {
    // Include the pathauto module.
    module_load_include('module', 'pathauto');
    // Clean up a string segment to be used in an URL alias.
    $alias = pathauto_cleanstring(preg_replace('/\s+/', '', $alias));
  }
}

আমি আপনার মডিউল চেষ্টা করেছি কিন্তু এটি কাজ করছে না
ইউরি

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