زنگ

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

تنظیمات و مقادیر پارامترها را فهمیدیم. امروز می آموزیم که چگونه تنظیمات را در مرورگر نمایش دهیم. و برای اینکه فقط نوشتن html خسته کننده نشود، بیایید موتور قالب Twig را به پروژه متصل کنیم. بخش اصلی مقاله به او اختصاص خواهد یافت.

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

ما Twig را وصل می کنیم و اولین قالب را رندر می کنیم.

می خواستم آخرین نسخه twig-a 2.x را دانلود کنم اما موفق نشدم. از طریق composer نصب میشه ولی من باهاش ​​آشنایی ندارم. من گمان می کنم که آهنگساز تفاوت چندانی با npm یا bower خط مقدم ندارد، اما اکنون به آن نمی پردازیم. کسانی که آگاه هستند این کار را خواهند کرد آهنگساز به "twig/twig:^2.0" نیاز داردو بدون من، و من، مانند یک پسر معمولی PHP، نسخه 1.x را از طریق Download zip دانلود می کنم و نگران نباشید. از اینجا دانلود کنید https://github.com/twigphp/Twig/tree/1.x

ما به دنبال مکانی برای Twig در پروژه هستیم. بیایید یک پوشه admin/lib/Twig ایجاد کنیم و کتابخانه را در آنجا اضافه کنیم. در حالت ایده‌آل، می‌توانیم آن را بدون آهنگساز انجام دهیم.

برو جلو. Twig به یک پوشه کش نیاز دارد که در آن بتواند آزادانه الگوهای رندر شده را بنویسد. سوال قابل بحث این است که بچه های عادی کجا پوشه کش را تعریف می کنند؟ بدون تخیل، آن را مستقیماً در admin ایجاد کردم - admin/cache. خب خدا پشت و پناهش باشه نکته اصلی این است که مطمئن شوید که کاربر www-data مجاز به نوشتن به آن است. اگر از ویندوز استفاده می کنید، پس اهمیت ندهید. و اگر نه، پس مالک را تغییر دهید و اجازه نوشتن به کش بدهید

$ sudo chown -R www-data:www-data ./cache $ sudo chmod -R 755 ./cache/

آخرین چیزی که یک شاخه به آن نیاز دارد این است که بداند از کجا الگوها را تهیه کند. برای انجام این کار، یک پوشه admin/templates بسازید و index.html را با محتوا در آن قرار دهید سلام، ((نام)). بله، ما در حال یادگیری جادو هستیم. مقدار نام به صورت خارجی از فایل php به قالب ارسال می شود.

بیایید twig را به admin/index.php متصل کنیم و قالب را رندر کنیم. از زمان های بسیار قدیم، نویسنده نشانه گذاری را در index.php قرار داده است، اما اکنون این کار را نمی کند. او بالغ شده است. فایل php کاری را که باید انجام می دهد - منطق برنامه. حتی به نظر خوب می رسد، بنابراین زمان اجرای آن فرا رسیده است.

// وصل کردن موتور قالب require_once "./lib/Twig/Autoloader.php"; // راه اندازی Twig Twig_Autoloader::register(); $loader = جدید Twig_Loader_Filesystem("./templates"); $twig = new Twig_Environment($loader, array("cache" => "./cache", "debug" => true)); // Render the template echo $twig->render("index.html", array("name" => "Twig"));

در خط اول خود شاخه را به هم وصل می کنیم. بعدی مقداردهی اولیه است. من در مستندات خواندم که اگر یک رویداد پیش بینی نشده رخ داد و به دلایلی کار نکرد، پس بنویسید Twig_Autoloader::register();
من آدم خوش شانسی هستم و همین شانس را پیدا کردم. آنچه به من گفته شد را نوشتم و همه چیز خوب شد. امیدوارم شانس بیشتری داشته باشید و به جای 10 خط در 9 قرار بگیرید.

در مرحله بعد در $loader و $twig محیط یا چیزی لازم برای موتور قالب را بارگذاری می کنیم. در پارامترها مسیر قالب ها و پوشه های کش و پارامتر مهم debug=true را مشخص می کنیم. در سایت combat، اشکال زدایی را حذف کنید، اما فعلا آن را رها کنید. در غیر این صورت، هنگام تغییر الگو در templates/index.html، شاخه اهمیتی نخواهد داد و فورا قالب رندر شده را از حافظه پنهان می گیرد. و ما تعجب خواهیم کرد که این قالب را ویرایش کنیم، اما در مرورگر تغییر نمی کند.

بنابراین، بیایید صفحه را رفرش کنیم و متن را ببینیم سلام ترکه. تبریک می گوییم، اولین قالب ما کار کرد. اما قبل از پر کردن آن با محتوای مفید، اجازه دهید index.php را کمی تغییر دهیم. یا بهتر است بگوییم، بیایید کلاس admin را به هم متصل کنیم و تنظیمات را به جای name=Twig به قالب اضافه کنیم. اینجوری میشه

// موتور قالب و کلاس ادمین نیاز_once "./lib/Twig/Autoloader.php" را وصل کنید. require_once "./admin.class.php"; // راه اندازی Twig Twig_Autoloader::register(); $loader = جدید Twig_Loader_Filesystem("./templates"); $twig = new Twig_Environment($loader, array("cache" => "./cache", "debug" => true)); // ایجاد یک شیء ادمین $admin = new Admin(); // رندر قالب echo $twig->render("index.html", array("settings" => $admin->getSettings()));

در حال ویرایش قالب

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

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

من قالب را از وب سایت بوت استرپ می گیرم. در هد این را کپی و پیست کنید

و شما باید بدن را خودتان بنویسید.

به نظر می رسد یک فرم بوت استرپ معمولی است، اما با درج های Twig.
بیایید یکی یکی بگیریم.

(% برای مورد در تنظیمات %)

تنظیمات را به صورت حلقه ای مرور می کنیم و برای هر کدام یک برچسب و ورودی در فرم نمایش می دهیم.

item.key هم به عنوان شناسه و هم به عنوان نام ورودی و هم به عنوان مقدار for در برچسب استفاده می شود. چنین کلید ضروری مهم است.
item.title - عنوان تنظیم.

و این یک فیلد متنی با مقدار است.

اکنون صفحه را Refresh می کنیم و لیستی از تنظیمات را با مقادیر مورد نیاز می بینیم. زیبایی! مقادیر فیلد را در config/values.json تغییر دهید. کار می کند، باز هم زیبایی.

نویسنده مقاله را با این جمله مثبت به پایان می رساند، اما غیرممکن است. زیرا یک خواننده با دقت خواهد گفت: بس کنید، اما تصویر یکسان نیست! با نمونه اولیه مطابقت ندارد و خواننده کنجکاو همچنین خواهد پرسید: چرا در درس اول این همه سر و صدا با تنظیمات و انواع داده های مختلف وجود داشت؟ حالا آنها را به طور احمقانه در ورودی ها خروجی بگیریم؟ البته حق با خواننده است. بنابراین نویسنده می رود چای بنوشد و چند پاراگراف دیگر بنویسد.

پس بیایید ادامه دهیم. ما می خواهیم بسته به نوع تنظیم، ورودی های انتخابی مختلفی را خروجی بگیریم. شرایط شاخه و فیلد نوع از تنظیمات تنظیمات به این امر کمک می کند. 4 نوع تنظیمات وجود دارد: متن، شماره، چک باکس و انتخاب. برای هر کدام شرط می گذاریم. بجای

اینجوری مینویسیم

(% if item.type == "text" %) (% endif %) (% if item.type == "number" %) (% endif %) (% if item.type == "checkbox" %)

(% endif %) (% if item.type == "sect" %) (% for option in item.list %) (( option )) (% endfor %) (% endif %)

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

  • ورودی متن به سادگی در مورد شرط پیچیده شد.type == "text"
  • شماره - همان ورودی، فقط با نوع = "شماره"
  • یک طرح جداگانه برای چک باکس وجود دارد. منطقی است، چک باکس فقط یک ورودی نیست.
    ویژگی checked را فراموش نکنید که بسته به item.value (درست یا نادرست) تنظیم می شود.
    جالب اینجاست که خود چک باکس دارای ویژگی name با مقدار item.key نیست. اما ورودی پنهان در کنار چک باکس دارای نام است.
    اسپویلر: این برای ارسال فرم به باطن راحت تر است، در مقاله بعدی خواهیم دید.
  • select دارای یک حلقه است زیرا ما لیستی از مقادیر ممکن را از قسمت item.list نمایش می دهیم
  • حالا بیایید دوباره صفحه را رفرش کنیم. من اینجوری گرفتم

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

    اگر از این شاخه الهام گرفته اید و می خواهید بیشتر بدانید، در اینجا اسناد به زبان روسی است. https://x-twig.ru/intro/

    درس بعدی آخرین درس با موضوع "مدیریت پرونده ها" خواهد بود. ما کد js را می نویسیم که داده ها را به backend ارسال می کند و کد php که این داده ها را ذخیره می کند. به عنوان یک امتیاز، ما اعلان‌ها را پیاده‌سازی می‌کنیم تا کاربر ببیند آیا فراموش کرده است روی دکمه ذخیره کلیک کند یا خیر.

    یک نظرسنجی کوچک در پایان و بعدا می بینمت!

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

    ابتدا با Twig آشنا می شویم. آن چیست؟ – Twig یک موتور قالب PHP نسل جدید است که توسط Fabien Potencier خالق فریمورک Symfony نوشته شده است که آخرین نسخه از آن استفاده می کند.

    همانطور که در وب سایت رسمی این معجزه می گویند:

    سریع - Twig قالب ها را کامپایل می کند و در صورت تمایل آنها را در Cache قرار می دهد، در حالی که کد PHP کامپایل شده کاملاً با OOP مطابقت دارد، بهینه شده است و سرعت عملیات بعدی آن برابر با سرعت کدهای PHP معمولی است.

    امن - Twig دارای حالت ایزوله (حالت جعبه شنی) برای کار با کد قالب غیرقابل اعتماد است. کاربری که به قالب دسترسی داشته باشد و امکان ویرایش آن را داشته باشد، نمی تواند کد دلخواه را بازتولید کند یا به داده هایی که مستقیماً به او مربوط نمی شود دسترسی پیدا کند و به کل سیستم آسیب برساند.

    انعطاف‌پذیر – Twig مجهز به یک واژه‌گر و تجزیه‌کننده کد انعطاف‌پذیر است که به توسعه‌دهنده اجازه می‌دهد تگ‌ها و فیلترهای سفارشی خود را تعریف کند.

    و بسیاری از مزایای دیگر مانند: مختصر بودن، نحو الگو محور، امکانات کامل، یادگیری آسان، پیام های خطا و غیره.

    فکر می کنم خیلی واضح است که چرا تصمیم گرفتم از twig به عنوان موتور قالب برای CMS وردپرس استفاده کنم؛ علاوه بر این، این به سازماندهی کد در قالب کمک می کند. اما دلیل اصلی را می توان کنجکاوی و علاقه به این ایده، ارضای یک میل مقاومت ناپذیر برای پیچاندن یک شاخه به وبلاگ من دانست.

    من واقعاً از ترکیب تگ های HTML و PHP خوشم نمی آید، بنابراین در پروژه های خودنویس ترجیح می دهم از الگوی MVC استفاده کنم، اما در این مورد چنین گزینه ای وجود ندارد. بنابراین، پس از فکر کردن زیاد در مورد نحوه اجرای ایده من، تصمیم گرفتم افزونه ای بنویسم که تمام وظایف لازم را ارائه دهد و امکان استفاده از twig را فراهم کند.

    ابتدا یک پوشه با نام افزونه wp_twig_engine ایجاد کردم، سپس پوشه موتور قالب Lib را در آن کپی کردم، موتور قالب را از حالت خاموش دانلود کنید. سایت، بنابراین ما کل مجموعه اسکریپت های شاخه را به یک افزونه برای WP تبدیل کردیم.

    سپس فایل اصلی افزونه WP-twig.php را با محتویات آن ایجاد می کنیم

    مشاهده کد PHP

    مشاهده کد PHP

    زنگ

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