انجمن


تگ شرطی ساده  (۲۷ نوشته)

  • Azemati

    آفلاین
    عضو
    تعداد نوشته‌ها: ۶۵
    تشکر شده: ۲ بار
    # نوشته شده: ۱۵ سال پیش
    ۱۸ فروردین ۱۳۸۸ - ۰۲:۰۸

    سلام.

    یک سوال داشتم که به نظر سخت نیست.

    چگونه برای تگ های متن اصلی و چکیده همچین شرطی قرار بدم؟ «اگر بخش چکیده (the_excerpt) پر شده بود یعنی مطلبی در آن قرار گرفته بود، آنچه در چکیده موجود است را نمایش بده و اگر بخش چکیده خالی بود، آنچه در بخش متن اصلی (the_content) موجود است را نمایش بده»

  • گناهکار

    آفلاین
    کلیددار
    تعداد نوشته‌ها: ۳۵۳۵
    تشکر شده: ۲۵۴۴ بار
    # نوشته شده: ۱۵ سال پیش
    ۱۸ فروردین ۱۳۸۸ - ۰۲:۵۶

    اینو آزمایش کنین:

    $exc = trim(get_the_excerpt());
    if (!empty($exc)) {
    the_excerpt();
    } else {
    the_content();
    }
  • Azemati

    آفلاین
    عضو
    تعداد نوشته‌ها: ۶۵
    تشکر شده: ۲ بار
    # نوشته شده: ۱۵ سال پیش
    ۱۸ فروردین ۱۳۸۸ - ۱۱:۲۵

    ممنون. تا حدی درسته فقط یک ایراد دارد.

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

    چه کار کنیم که وردپرس این کار رو انجام نده!؟

  • گناهکار

    آفلاین
    کلیددار
    تعداد نوشته‌ها: ۳۵۳۵
    تشکر شده: ۲۵۴۴ بار
    # نوشته شده: ۱۵ سال پیش
    ۱۸ فروردین ۱۳۸۸ - ۱۸:۳۰

    حرف شما درسته من حواس‌م به این موضوع نبود، می‌تونین مثلن ۲۰ حرف اول چکیده و ۲۰ حرف اول متن اصلی رو با هم چک کنین٬ اگه فرق داشتن٬ خب معلومه نویسنده خودش یه چکیده‌ای نوشته٬ اما اگه یکی بودن معلومه خوده وردپرس این کارو انجام داده.

  • Azemati

    آفلاین
    عضو
    تعداد نوشته‌ها: ۶۵
    تشکر شده: ۲ بار
    # نوشته شده: ۱۵ سال پیش
    ۱۸ فروردین ۱۳۸۸ - ۱۸:۳۲

    امکانش هست کدش رو برام بذارین؟ متاسفانه در این حد پی اچ پی بلد نیستم (هنوز البته!)

  • hosseintdk775

    آفلاین
    عضو
    تعداد نوشته‌ها: ۱۰
    # نوشته شده: ۱۵ سال پیش
    ۱۹ فروردین ۱۳۸۸ - ۰۲:۲۱

    بسم الله الرحمن الرحیم
    سلام
    یک کدی برای همین منظور نوشتم ببینید به کارتان می آید:

    ====
    هر کاری کردم نشد کدها رو مستقیم اینجا کپی کنم / متاسفانه کدها بعد از کپی کمی تغییر می کردند / به همین خاطر برایتان آپلود کردم:
    http://rapidshare.com/files/218663818/last.rar.html
    ====

    یک توضیح کوچکی هم درباره the_excerpt بدهم:
    وقتی از تابع the_excerpt استفاه می کنیم این تابع ابتدا از دیتابیس یک سوالی می کند که " ایا چکیده ای از مطلب توسط کاربر در دیتابس ثبت شده است یا خیر" وقتی می بیند هیچ چکیده ای توسط کاربر ثبت نشده است خود سیستم شروع به ایجاد چکیده ای از مطلب می کند / اما در دیتابیس هم ثبت نمی کند.

    من هم به همین خاطر از the_excerpt استفاده نکردم و مستقیم از دیتابیس سوال کردم که "آیا چکیده ای از مطلب در دیتابیس ثبت شده است یا خیر" و اگر ثبت نشده بود که مطلب اصلی نمایش داده می شود در غیر اینصورت همان چکیده نمایش داده خواهد شد.

  • Azemati

    آفلاین
    عضو
    تعداد نوشته‌ها: ۶۵
    تشکر شده: ۲ بار
    # نوشته شده: ۱۵ سال پیش
    ۱۹ فروردین ۱۳۸۸ - ۱۶:۴۸

    سلام. دست شما درد نکنه. به گمونم که درست شد فقط این یه خورده شلوغ پلوغ بود. میشه خلاصه اش رو بگین؟ یعنی بگین که به جای عبارت
    <?php the_content(); ?>
    در کدهای قالب و بین حلقه تکرار، چه چیزی قرار بدهم تا به اون صورتی بشه که می خوام و توضیح دادم.

  • hosseintdk775

    آفلاین
    عضو
    تعداد نوشته‌ها: ۱۰
    # نوشته شده: ۱۵ سال پیش
    ۱۹ فروردین ۱۳۸۸ - ۱۷:۴۰

    بسم الله الرحمن الرحیم
    سلام
    خلاصه فکر نکنم بشه / چون کدها همه با هم در ارتباط هستند و حذف قسمتی باعث از کار افتادن مابقی قسمت ها می شه.

    و اینکه متاسفانه من با توابع وردپرس آشنایی ندارم به همین دلیل دقیق نمی دانم این the_content چه عملیاتی رو انجام می دهد.

    یک کاری هم می تونید انجام بدید:
    این فایل رو در root وردپرس قرار بدهید:
    http://rapidshare.com/files/218872790/last.rar.html

    و بعد در هر فایلی که می خواهید این دستورات بالا اجرا شود از این کد استفاده کنید:

    require_once("last.php");
    
    echo ok_content_or_expert();
  • Azemati

    آفلاین
    عضو
    تعداد نوشته‌ها: ۶۵
    تشکر شده: ۲ بار
    # نوشته شده: ۱۵ سال پیش
    ۱۹ فروردین ۱۳۸۸ - ۱۹:۰۵

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

  • hosseintdk775

    آفلاین
    عضو
    تعداد نوشته‌ها: ۱۰
    # نوشته شده: ۱۵ سال پیش
    ۱۹ فروردین ۱۳۸۸ - ۲۰:۱۷

    بسم الله الرحمن الرحیم
    سلام
    خوب برای آن هم شرط می گذاریم اگر پاسخ page بود / نوشته ها نشان داده نشوند در غیر اینصورت نشان داده شوند.

    سعی میکنم تا یکی 2 ساعت آینده برایتان کد را ویرایش کنم.

  • Azemati

    آفلاین
    عضو
    تعداد نوشته‌ها: ۶۵
    تشکر شده: ۲ بار
    # نوشته شده: ۱۵ سال پیش
    ۱۹ فروردین ۱۳۸۸ - ۲۳:۳۲

    عالیه. ممنون میشم. لطف میکنید.

  • hosseintdk775

    آفلاین
    عضو
    تعداد نوشته‌ها: ۱۰
    # نوشته شده: ۱۵ سال پیش
    ۲۰ فروردین ۱۳۸۸ - ۰۷:۳۰

    بسم الله الرحمن الرحیم
    سلام
    بفرمایید:
    http://tools.rastgo.com/sl/193

    شرمنده دیر شد.

  • Azemati

    آفلاین
    عضو
    تعداد نوشته‌ها: ۶۵
    تشکر شده: ۲ بار
    # نوشته شده: ۱۵ سال پیش
    ۲۱ فروردین ۱۳۸۸ - ۱۲:۱۲

    ممنونم از لطف شما.

    ولی متاسفانه این کدها به گونه ایی است که خود متن یا چکیده را نشان می دهد. وقتی این کدها را درون حلقه نمایش پست ها قرار می دهم، در هر پست کلیه ی متن های اصلی یا چکیده دیده میشود ( و نه فقط متن اصلی یا چکیده همان پست )

    برای خودم عجیبه، وردپرس یه همچین امکان ساده ایی و نه چندان سختی رو چرا نداره.

  • hosseintdk775

    آفلاین
    عضو
    تعداد نوشته‌ها: ۱۰
    # نوشته شده: ۱۵ سال پیش
    ۲۱ فروردین ۱۳۸۸ - ۱۲:۱۹

    بسم الله الرحمن الرحیم
    سلام
    خوب مگر شما نمی خواستید اگر چکیده پر بود آن را نشان دهد در غیر اینصورت متن اصلی رو؟
    الان این اسکریپت هم همین کا رو می کنه.

    و اینکه شما نباید کدنهایی رو داخل حلقه قرار بدید / چون در خود برنامه حلقه تعریف شده است و مطالب مورد نیاز رو نشون میده.

  • Azemati

    آفلاین
    عضو
    تعداد نوشته‌ها: ۶۵
    تشکر شده: ۲ بار
    # نوشته شده: ۱۵ سال پیش
    ۲۱ فروردین ۱۳۸۸ - ۱۲:۲۸

    بله درسته.

    دقیقا مشکل من همینجاست که این کدها داخل حلقه هستند.
    کدها و شکل قالب من که تنها همین متن اصلی نیست. کدهای دیگری هم دارد. (مثل کامنت لینک ثابت و ...)

  • Azemati

    آفلاین
    عضو
    تعداد نوشته‌ها: ۶۵
    تشکر شده: ۲ بار
    # نوشته شده: ۱۵ سال پیش
    ۲۱ فروردین ۱۳۸۸ - ۱۲:۳۱

    hosseintdk775 جان خیلی ممنون ، خیلی زحمت دادم.

    من تونستم با یک تغییر ریز در فایل formatting.php کاری کنم که خود سیستم وردپرس در صورتی که بخش چکیده خالی بود، خودش چکیده نسازه.

    مشکل حل شد.

  • گناهکار

    آفلاین
    کلیددار
    تعداد نوشته‌ها: ۳۵۳۵
    تشکر شده: ۲۵۴۴ بار
    # نوشته شده: ۱۵ سال پیش
    ۲۱ فروردین ۱۳۸۸ - ۱۴:۰۷

    من تونستم با یک تغییر ریز در فایل formatting.php کاری کنم که خود سیستم وردپرس در صورتی که بخش چکیده خالی بود، خودش چکیده نسازه.

    مشکل حل شد.

    دستکاری در پرونده‌های هسته‌ی وردپرس غیراستاندارد هست.

  • Azemati

    آفلاین
    عضو
    تعداد نوشته‌ها: ۶۵
    تشکر شده: ۲ بار
    # نوشته شده: ۱۵ سال پیش
    ۲۱ فروردین ۱۳۸۸ - ۱۴:۱۴

    Gonahkar گفت:

    من تونستم با یک تغییر ریز در فایل formatting.php کاری کنم که خود سیستم وردپرس در صورتی که بخش چکیده خالی بود، خودش چکیده نسازه.
    مشکل حل شد.

    دستکاری در پرونده‌های هسته‌ی وردپرس غیراستاندارد هست.

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

  • گناهکار

    آفلاین
    کلیددار
    تعداد نوشته‌ها: ۳۵۳۵
    تشکر شده: ۲۵۴۴ بار
    # نوشته شده: ۱۵ سال پیش
    ۲۱ فروردین ۱۳۸۸ - ۱۷:۰۷

    اینو توی حلقه امتحان کنین:

    <?php
    if(has_excerpt(get_the_ID())) the_excerpt();
    else the_content();
    ?>
  • Azemati

    آفلاین
    عضو
    تعداد نوشته‌ها: ۶۵
    تشکر شده: ۲ بار
    # نوشته شده: ۱۵ سال پیش
    ۲۴ فروردین ۱۳۸۸ - ۱۹:۴۶

    بسیار ممنون. کار کرد. سر فرصت ممنون میشم در یکخط عملکرد این کد را شرح دهید (برای آموزش بیشتر)

  • امین / iishtar

    آفلاین
    عضو
    تعداد نوشته‌ها: ۵۴۲
    تشکر شده: ۴۴ بار
    # نوشته شده: ۱۵ سال پیش
    ۲۴ فروردین ۱۳۸۸ - ۲۰:۳۰

    معادل فارسی اون کد اینه

    گناهکار با استفاده از تابع get_the_ID ایدی اون مطلب رو میگیره و به تابع has_excerpt میده و تابع has_excerpt هم یه چیزی به طورت yes - no یا 1 - 0 یا true - false برمیگردونه و به دستور شرطی if میده
    دستور شرطی هم در صورت درست بودن شرط (یعنی در صورتی که خروجی تابع has_excerpt ، 1 یا true یا yes بوده باشه) میاد با تابع the_excerpt چکیده رو چاپ میکنه و در غیر اینصورت با تابع the_content متنی رو که تو ادیتور وارد کردید رو چاپ میکنه.

    گناهکار جان من زیاد php بلد نیستم ، اگه تو توضیح اشتباه کردم شما اصلاح بفرمایین

  • Azemati

    آفلاین
    عضو
    تعداد نوشته‌ها: ۶۵
    تشکر شده: ۲ بار
    # نوشته شده: ۱۵ سال پیش
    ۲۴ فروردین ۱۳۸۸ - ۲۰:۵۱

    ممنونم. حالا سوال اینه که با کمک get_the_ID و تابع has_excerpt چطور می فهمه که اون مطلب خودش چکیده داشته؟ چون وردپرس برای بقیه مطالب هم چکیده تولید می کنه خودش.

  • امین / iishtar

    آفلاین
    عضو
    تعداد نوشته‌ها: ۵۴۲
    تشکر شده: ۴۴ بار
    # نوشته شده: ۱۵ سال پیش
    ۲۴ فروردین ۱۳۸۸ - ۲۱:۲۴

    من بیشتر از این نمیتونم توضیح بدم
    به نظم من باید گناهکار خودش بیاد و یه شفاف سازی بکنه

    اما همینو میگم که وردپرس با تابع get_the_ID فقط ایدی یا همون شماره مطلب رو میگیره و در نهایت اونو به تابع has_excerpt میده
    که اگه فرض رو بر این بگیریم که ایدی مطلب 22 هست شکل تابع has_excerpt میشه :
    has_excerpt(22)

    ممنونم. حالا سوال اینه که با کمک get_the_ID و تابع has_excerpt چطور می فهمه که اون مطلب خودش چکیده داشته؟ چون وردپرس برای بقیه مطالب هم چکیده تولید می کنه خودش.

    قاعدتا باید دیتابیس رو چک کنه

  • hosseintdk775

    آفلاین
    عضو
    تعداد نوشته‌ها: ۱۰
    # نوشته شده: ۱۵ سال پیش
    ۲۴ فروردین ۱۳۸۸ - ۲۱:۳۹

    بسم الله الرحمن الرحیم
    سلام
    Azemati عزیز، چند پست قبل هم توضیح دادم / وردپرس به طور پیش فرض اگر در پستی چکیده مطلب رو وارد نکرده باشد به طور پیش فرض چکیده درست نمی کنه.

    مگر انکه از تابع get_the_excerpt() استفاده کنید که در این صورت خودش به طور اتوماتیک چکیده درست می کنه / اما باز هم در دیتابیس ذخیره نمی کنه.

    تنها در صورتی در صورتی در دیتابیس چکیده ذخیره می شه که شما به طور دستی چکیده رو وارد کرده باشید.

    و مابقی رو هم دوست عزیزمان iishtar در 2 پست قبل توضیح دادند که این کدهای فوق چکار می کنند.

  • Azemati

    آفلاین
    عضو
    تعداد نوشته‌ها: ۶۵
    تشکر شده: ۲ بار
    # نوشته شده: ۱۵ سال پیش
    ۲۴ فروردین ۱۳۸۸ - ۲۱:۴۳

    سلام.

    آهان. پس این معنی اش این است که هر وقت که خودمان چکیده را دستی وارد کنیم، بازگشت تایع has_excerpt مثبت خواهد بود دیگه؟

    بقیه اش هم که مشخصه.

  • امین / iishtar

    آفلاین
    عضو
    تعداد نوشته‌ها: ۵۴۲
    تشکر شده: ۴۴ بار
    # نوشته شده: ۱۵ سال پیش
    ۲۴ فروردین ۱۳۸۸ - ۲۱:۴۵

    اره دقیقا

  • Azemati

    آفلاین
    عضو
    تعداد نوشته‌ها: ۶۵
    تشکر شده: ۲ بار
    # نوشته شده: ۱۵ سال پیش
    ۲۴ فروردین ۱۳۸۸ - ۲۱:۴۹

    iishtar گفت:
    اره دقیقا

    اوکی. از همه رفقا ممنونم بابت راهنمایی هاشون ;-)

درباره‌ی این موضوع



برچسب‌ها