امتیاز موضوع:
  • 0 رأی - میانگین امتیازات: 0
  • 1
  • 2
  • 3
  • 4
  • 5
بهترین روش ساخت cms چند زبانه در کدایگنایتر
#1
سلام

دوستان من پروژه‌های چند زبانه با کدایگنایتر ساختم منتها هیچکدوم از اونا مدیریت محتوا نبود! یعنی نیازی نبود که زبان سایت در آدرس هم مشخص باشه!

الان دارم مدیریت محتوای چند زبانه می‌نویسم که میخوام بعد از آدرس دامین اصلی سایت زبان سایت مشخص بشه مانند مثال زیر:

کد:
FarhadHP.ir/fa

FarhadHP.ir/en

همونطور ک میدونید روتینگ تو کد ایگنایتر بر اساس کنترولر هست و من نمیخوام برای هر زبان یک کنترولر جداگونه بسازم!

با فرض اینکه من یک کنترولری با نام post دارم و متدی با نام view برای نمایش پست آدرس مد نظرم بصور زیر هست:

کد:
FarhadHP.ir/fa/post/view/1

FarhadHP.ir/en/post/view/2


دوستانی که تجربه همچین چیزی رو دارند مممنون میشم راهنمایی بفرمایند.
پاسخ
#2
سلام
فرهاد جان کد ایگنایتر تو این زمینه خیلی نتونسته راه کار اساسی بدی. کلا سایت های دو یا چند زبانه یه سری سایت های به نظرم مزخرف هستند که اصلا بازدهی واقعی هم ندارند و بهترین کار اینه که کلا جدا دو نسخه جدا باشند.

اما راه های زیادی وجود داره که بهترینش به نظرم اینه که مثلا اول مشخص کنی چند تا جای سایت میخواد دو زبانه بشه؟ فرضا همه سایت یا اینکه فقط بخش مقالات و صفحات و..؟
اگر فقط یه سری بخش هایی که به محتوا مربوط میشن رو بخوای چند زبانه کنی طبیعتا ساده تره.
مثلا اول باید یه Route مثلا اینطوری تعریف کنی:
کد php:
$route['(fa|en)/article/'] = 'articles/index';
$route['(fa|en)/article/(:num)'] = 'articles/detail/$1'

حالا داخل کنترلرت میتونی بیای چک کنی ببینی اولین پارامتر مقدارش چیه. یه سشن به اسم Lang مثلا تعریف کن مقدار دیفالت رو بزار فارسی و توی کنترلر چک کن اگه مثلا en بود مقدار سشن رو بزار رو انگلیسی.


داخل جدول مقالات هم یه فیلد به اسم Lang بزار که مثلا fa یا en باشه. حالا زمان کوئری زدن هم بیا ببین مقدار سشن چیه. مثلا:
کد php:
$this->db->get_where('articles', array('lang' => $this->session->userdata('lang') ) )->result(); 

کلیت کار اینطوریه معمولا. 
توی ادمین هم میتونی یه فیلد Select بزاری وقتی کاربر مثلا EN را انتخاب کرد سشن رو بزاری رو انگلیسی و کلا وقتی سشن انگلیسی ست شد کل ادمین رو هم انگلیسی کنی و زمان کوئری زدن هم مقدار فیلد lang رو انگلیسی بزاری.

نمیدونم خوب توضیح دادم یا نه اگه جایی رو متوجه نشدی بگو  Tongue
لطفا قبل از ارسال هرگونه پست قوانین سایت را مطالعه کنید.
----
وب سایت میثم محمودی
پاسخ
 سپاس شده توسط farhadhp
#3
ممنون میثم جان.

خوشبخاته تونستم یه حرکتی بزنم و اون چیزی که میخوامو پیاده کنم.
پاسخ


پرش به انجمن:


کاربرانِ درحال بازدید از این موضوع: 1 مهمان