پوریا مستعان
4 سال پیش توسط پوریا مستعان مطرح شد
13 پاسخ

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

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

@hesammousavi


ثبت پرسش جدید
Muhammad
تخصص : Back-End Developer
@muhammad 4 سال پیش مطرح شد
0

ساده‌ترین راه‌حل اینه که در هنگام نمایش پست، 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
تخصص : Back-End Developer
@muhammad 4 سال پیش مطرح شد
0

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

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


فخرالدین لنگی
تخصص : برنامه نویس وب، آندروید و سیست...
@fakhraddin 4 سال پیش مطرح شد
0

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

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

پوریا مستعان
تخصص : Full-Stack Developer
@pooriya.mostaan 4 سال پیش مطرح شد
0

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

@fakhraddin

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

@muhammad


Muhammad
تخصص : Back-End Developer
@muhammad 4 سال پیش مطرح شد
0

ساده‌ترین راه‌حل اینه که در هنگام نمایش پست، 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);

فخرالدین لنگی
تخصص : برنامه نویس وب، آندروید و سیست...
@fakhraddin 4 سال پیش مطرح شد
0

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

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

پوریا مستعان
تخصص : Full-Stack Developer
@pooriya.mostaan 4 سال پیش مطرح شد
0

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

@fakhraddin
@muhammad


پوریا مستعان
تخصص : Full-Stack Developer
@pooriya.mostaan 4 سال پیش مطرح شد
0

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

@muhammad


فخرالدین لنگی
تخصص : برنامه نویس وب، آندروید و سیست...
@fakhraddin 4 سال پیش مطرح شد
0

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


Muhammad
تخصص : Back-End Developer
@muhammad 4 سال پیش مطرح شد
0

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

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

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


پوریا مستعان
تخصص : Full-Stack Developer
@pooriya.mostaan 4 سال پیش مطرح شد
0

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

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

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

@muhammad


Muhammad
تخصص : Back-End Developer
@muhammad 4 سال پیش مطرح شد
0

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


پوریا مستعان
تخصص : Full-Stack Developer
@pooriya.mostaan 4 سال پیش مطرح شد
0

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


Muhammad
تخصص : Back-End Developer
@muhammad 4 سال پیش مطرح شد
0

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


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

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