راکت
حل شده

چگونگی قراردادن مقالات پیشنهادی بین متن مقاله در لاراول

13 پاسخ

سلام خدمت دوستان خسته نباشید.
میخواستم ببینم چطوری میشه مثلا بین متن مقاله ای که داریم میذاریم، مثل خیلی از سایت ها که وسط مقاله مثلا نوشته مقاله پیشنهادی یا این مقاله را هم بخوانید و عنوان اون مقاله نمایش داده میشه و لینک میشه بهش رو پیاده سازی کنیم در لاراول ؟
مثلا توی وردپرس به این صورته که هر مقاله ای که میذاری یه تیکه کدی مثل 5 = [HTML_ID] بهت میده که وقتی اونو هر جایی از ادیتور قرار میدی حالا با یه استایلی میره دقیقا همون مقاله رو با متن و لینک بر میداره میاره
ادیتور هم از TinyMCE استفاده میکنم نمیدونم حالا مهمه یا نه ولی میخواستم ببینم چطور باید اینو پیاده سازی کرد ؟
پیشاپیش ممنون ازتون

@hesammousavi

ثبت پرسش جدید

پاسخ‌ها

13
Muhammad
Muhammad
@muhammad

تخصص: Back-End Developer

بهترین پاسخ

ساده‌ترین راه‌حل اینه که در هنگام نمایش پست، shortcode رو به کد HTML تبدیل کنین:

$content = 'Hello, world! [link-to-post id=44]';

return preg_replace('/\[link-to-post id=(\d+)\]/i', '<a href="https://example.com/posts/${1}">Recommended post</a>', $content);
Muhammad
Muhammad
@muhammad

تخصص: Back-End Developer

سلام. شما می‌تونین با این پکیج
https://github.com/webwizo/laravel-shortcodes

چیزی شبیه shortcodeهای وردپرس رو توی لاراول داشته باشین. روش استفاده هم توی README همین ریپازیتوری توضیح داده شده.

فخرالدین لنگی
فخرالدین لنگی
@fakhraddin

تخصص: برنامه نویس وب، آندروید و سیستم های کامپیوتری

شما برای این قابلیت در واقع سه راهکار دارید من هر سه راهکار رو مختصر براتون توضیح می دم (البته استفاده از پکیج رو دوست گرامیمون محمد اشاره کردن)

  1. شما اگه خودتون دستی بر آتش داری توی زمینه کد نویسی این کار رو می تونید با کد نویسی انجام بدید که بیایید مطالب پیشنهادی یا مرتب رو با تگ هایی که به هم مرتبطن پیاده کنید
  2. می تونید خودتون یک سری شورتکد برای خودتون تعریف کنید مثلا شورت کد [favorite_articles][/favorite_articles] شما توی متنتون هر جا به این کد رسیدید براش کد می زنید که مقالات خاص رو نشون بده
  3. استفاده از پکیج ها که دوست گرامی محمد اشاره کردن
    هر کدوم از این راهکارها یک سری مزیت و معایب داره و شما بسته به نیازتون یکی رو انتخاب می کنید
    بازم نیاز به راهنمایی داشتید من در خدمتتون هستم
    @Waltun

شاید پاسخ شما همین‌جا باشد

پوریا مستعان
پوریا مستعان
@pooriya.mostaan

تخصص: Full-Stack Developer

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

@fakhraddin

همچنین ممنون از شما آقا محمد به خاطر معرفی این پکیج خوب، در آخر اگر نشه باید همین پکیج رو نصب کنم

@muhammad

فخرالدین لنگی
فخرالدین لنگی
@fakhraddin

تخصص: برنامه نویس وب، آندروید و سیستم های کامپیوتری

من یک روش ساده رو این ترتیب خدمتتون ارائه می دم

  1. توی دیتابیس در جدول مقالات یک فیلد اضافه کنید مثلا به اسم suggection یا هر اسم دیگه که دوست داشتید این فیلد فقط دو مقدار می گیره true یا false یا صفر و یک یا بازم می گم هر مقداری که شما دوست داشتید
  2. مرحله بعد توی بخشی که از طریق پنلی که ساختید می خوایید مقالات را ویرایش یا ثبت کنید اونجا یک چک باکس ساده می ذارید اگه مثلا تیک بزنه کاربر این مقاله پیشنهادی اگرم نزده بود یعنی مقاله پیشنهادی نیست و این مقدار رو توی فیلد مرحله 1 که تعریف کردید ثبت کنید مثلا اگر تیک خورده باشه true ثبت بشه و گرنه false
  3. توی این مرحله هر جایی که می خواستید مقالات پیشنهادی رو بذارید کافیه مثلا برای خودتون یک متن دلبخواهی در نظر بگیرید من به عنوان مثال [/suggest_articles] رو به عنوان متن یا کد انتخابیم در نظر می گیرم توی هر متن یا کانتکنتی من از این عنوان استفاده می کنم حالا توی ویرایشگر متنی یا توی یک باکس ورودی متن ساده
  4. مرحله آخر وقتیه که می خوام اون متن مقاله رو نشون بدم کافیه با دستور strpos پی اچ پی توی متن یا محتوام دنبال فرض مثال [/suggest_articles] یا هر عنوان دیگه که گذاشتید بگردم هر وقت به این بخش رسید به جای نمایش اون عنوان می یام از دیتابیش مقالاتی که فیلد مرحله 1 انتخاب شده رو با ظاهری که مدنظر دارید نمایش بدید
    این ساده ترین روش نمایش مقالات پیشنهادی با یک عنوان خاص در هر جای وب سایت یا اپلیکیشن بازم می تونید این قابلیت رو گسترش بدید و برای هر مقاله یک سری مقالات پیشنهادی خاص متناسب با تگ هم بذارید
پوریا مستعان
پوریا مستعان
@pooriya.mostaan

تخصص: Full-Stack Developer

خیلی خیلی ممنونم ازتون خیلی کمکم کرد راهنمایی هاتون میدونم الان دیگه باید دنبال چی باشم
فقط جناب فخرالدین فکر کنم همونطور که آقا محمد بالاتر اشاره کرده باید id رو هم توی اون shortcode پاس بدم چون شاید تو دیتابیس خیلی از مقالات اون فیلدی که میگین true باشن پس باید آیدی رو هم پاس بدیم که متمایز بشن درسته ؟

@fakhraddin
@muhammad

پوریا مستعان
پوریا مستعان
@pooriya.mostaan

تخصص: Full-Stack Developer

محمد جان این کدی که زدی عالی بود درست هم کار میکرد میرفت و اون لینک رو میاورد
فقط واسه پویا سازی بیشتر چطوری میشه با اون آیدی، مقاله رو پیدا کرد، یا حتی چند تا مقاله باشه که به جای اون متنی که دستی نوشتیم عنوان مقاله رو پیدا کنه و بیاره ؟

@muhammad

فخرالدین لنگی
فخرالدین لنگی
@fakhraddin

تخصص: برنامه نویس وب، آندروید و سیستم های کامپیوتری

بله گفتم اون روشی که گفتم ساده ترین حالت ممکنه شما می تونید اون عنوان کد کلی بازی کنید حتما لازم نیست اون مراحلی که گفتم مو به مو عینا اون روش باشه شما می تونید کلی با اون روش بازی کنید و بسطش بدید یا همون طور که گفتم بیاد فقط مقالاتی رو پیشنهاد بدید که موضوع یا محتواش یا دسته بندیش با اون مقاله متناسب باشه
بازم راهنمایی خواستید من در خدمت شما هستم
@Waltun

Muhammad
Muhammad
@muhammad

تخصص: Back-End Developer

شما نمی‌خوایین مقالات مرتبط رو به صورت اتوماتیک بگیرین، می‌خوایین توی هر قسمت از متن مقاله به یه مقاله دیگه لینک بدین. پس آیدی رو خودتون توی shortcode پاس می‌دین. یه چالش براتون می‌مونه که گرفتن عنوان مقاله، تصویر یا بقیه‌ی اتریبیوت‌هاست که دو راه‌حل دارین:

  1. در هنگام نمایش مقاله عنوان هر کدوم که توی متن محتوا بهشون اشاره شده رو از دیتابیس بگیرین. خود این چالشی از لحاظ پرفورمنس به وجود میاره که با کش‌کردن برطرف حل میشه.
  2. یه ستون json روی جدول مقالات داشته باشین که هر shortcode رو یه entity در نظر بگیره و جزئیاتش رو (مثل عنوان پست و غیره) نگه‌داره. اینطوری نیازی به کوئری‌های اضافی نیست. بعد در هنگام فرستادن خروجی، shortcode رو جایگزین می‌کنین.

پیشنهاد می‌کنم کلاسی برای هندل‌کردن shortcodeها بسازین و محتوای پست رو بهش بدین تا رندر کنه و خروجی اون رو به ویو بفرستین، اینطوری بعدا میشه توسعه داد و shortcodeهای بیشتری اضافه کرد. (اصل اول و دوم SOLID)

پوریا مستعان
پوریا مستعان
@pooriya.mostaan

تخصص: Full-Stack Developer

این تیکه کد زیر که داره آیدی رو میگیره :

'/\[link-to-post id=(\d+)\]/i'

نمیشه از این آیدی رو یجوری توی متغیر ذخیره کرد و با اون از دیتابیس پیدا کرد مقاله رو ؟

@muhammad

Muhammad
Muhammad
@muhammad

تخصص: Back-End Developer

این راه‌حل اوله که گفته بودم. با regex میشه آیدی رو گرفت و بعد روی دیتابیس کوئری زد.

پوریا مستعان
پوریا مستعان
@pooriya.mostaan

تخصص: Full-Stack Developer

@muhammad
من میتونم یه راه ارتباطی باهات داشته باشم ؟

Muhammad
Muhammad
@muhammad

تخصص: Back-End Developer

@Waltun
توی پروفایلم، آدرس لینکدن و گیت‌هابم رو گذاشتم.

برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام