انتشار اطلاعاتی

توسط amin, 28 آبان, 1395

سلامی به بزرگی قلبتون (:

در آخرین بخش آموزش قبلی یک ویو داشتیم که محتواهای سایت را (خبرها) در قالب یک آدرس xml انتشار می داد.

در این بخش می خواهیم این آدرس را (مثلا :www.drupalo.ir/exp-news ) داخل یک سایت دیگر وارد کنیم تا به صورت خودکار اطلاعات را دریافت کند و همچنین در صورت بروزشدن این محتواها موارد جدید نیز به صورت اتوماتیک و خودکار منتقل شوند.

مراحل آموزش قبلی روی سایت مبدا که تولید کننده محتوا (خبرها) بود اعمال میشد ولی این بخش روی سایت های مقصد که قرار هست این اطلاعات را نمایش دهند اعمال می شود. مثلا فرض کنید که شما یک سایت خبری برای دانشگاه دارید و می خواهید اخبار منتشر شده در سایت خبری دانشگاه را بر روی سایت اصلی دانشگاه نیز به صورت خودکار و خلاصه نشر دهید. در این جا سایت مبدا همان سایت خبری است (مثلا news.iut.ac.ir ) و سایت مقصد میشه سایت اصلی دانشگاه (مثلا iut.ac.ir)

برای این کار ابتدا افزونه های feeds , feeds extensible parser را نصب می کنیم :

حال به قسمت ساختار (structure) می رویم و وارد تنظیمات Feeds importer می شویم :

در این بخش روی لینک Add importer کلیک می کنیم و یک نام و توضیحات مرتبط برای آن یادداشت می کنیم :

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

گزینه Periodic import زمانی را نشان می دهد که سایت شما به صورت خودکار برای به روز رسانی خبرهای جدید وارد عمل می شود. البته این زمان وابسته به این است که کرون (cron ) سایت شما به درستی اجرا شود که جهت آشنایی با تنظیمات کرون می توانید به این مقاله مراجعه نمایید.

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

دکمه ذخیره را فشار می دهیم و از منوی کناری سمت چپ گزینه Fetcher را برمی گزینیم. در این بخش تنظیمت را روی حالت HTTP Fetcher قرار می دهیم چون قرار هست که ما به سایت خودمان یک آدرس بدهیم تا آخرین خبرها را از آن دریافت کند :

بخش تنظیمات HTTP Fetcher مورد خاصی ندارد و می توانید بدون تغییر رها کنید.

ولی قسمت Parser خیلی مهم است و حتما باید به کمک افزونه Feeds Extensible Parser که نصب کرده ایم گزینه آخر یعنی XML XPath Parser را برگزینید. چون در اصل ما داریم یک فایل xml را که آدرس آن به صورت آنلاین وجود دارد (در آموزش قبل توسط ویو ایجاد کردیم) را فراهم می کنیم :

مهمترین بخش تنظیمات XML Path parser می باشد که با انتخابی که در مرحله قبل داشتید جزییات آن متفاوت خواهد بود :

برای پر کردن این فیلدها می خواهم از محضر شما دوستان خوب اجازه بگیرم و یک یادآوری از آخرین مطلب گفته شده در آموزش قبلی خدمت شما داشته باشم. با اجازه :

ما در آموزش قبل یک ویو ایجاد کردیم و آدرسی برای اون محیا کردیم.

در اصل ما یک آدرس که حاوی یک فایل xml هست ایجاد کردیم ولی به خاطر مبارک داشته باشید که این آدرس در انتهای خود عبارت xml را ندارد. (یعنی آدرس www.drupalo.ir/exp-news.xml نیست ) برای این آموزش خاص به این صورت می باشد: www.drupalo.ir/exp-news

پس ما در این جا یک مقدار اصلی داریم که دروپال و این افزونه بهش میگه بافت (Context) که می بایست وارد بشه : nodes/node/ که حالا این عبارت از همون فایل اصلی xml که ایجاد کردیم به دست میاد :

البته تعیین این مقادیر و سلسله مراتب آن ها در ویو ساخته شده در مرحله قبل و بخش تنظیمات قابل انجام است :

و مقادیر نیز تحت عنوان Add new source وارد می شوند که نام آن ها دلخواه است مثلا title ولی مقدار می بایست همان lable باشد که در ویو آموزش قبل برای هر فیلد ایجاد کردیم و هم اکنون در فایل xml نمایش داده می شود :

و در نهایت برای این مثال خاص آموزشی ما کار به این صورت در می آید :

و به همین صورت تا هر مقدار پارامتر جدید می توانید دریافت کنید و با فشردن دکمه ذخیره کار را ادامه دهید. (برای افزودن مقدار جدید نیز از همان دکمه ذخیره بهره ببرید)

تنظیمات Processor روی گزینه Node Processor باشد چون ما قرار هست این مقادیر دریافتی را در یک نوع محتوای مخصوص این کار ذخیره کنیم.

بخش اصلی بعد تنظیمات Node Processor هست که می بایست یک نوع محتوا برای ورود اطلاعات دریافتی و نمایش آن ها در سایت مقصد انتخاب کنیم که توضیحات مربوط به نوع محتوا و ایجاد آن ها و ایجاد فیلدهای لازم در آموزش های قبلی اشاره شده است.

من قبلا یک نوع محتوا تحت عنوان "خبر تازه" ایجاد کرده ام که سه تا فیلد دارد. یکی "عنوان" و دیگری "آدرس تصویر" و یک فیلد هم به اسم "آدرس اصلی خبر" که همگی از نوع فیلد متنی هستند و قرار هست که مقادیر دریافت شده از طریق این افزونه در این فیلدها ذخیره شوند :

در قسمت تنظیمات Node Processor مقادیر را جایگزین می کنیم :

حال بعد از ذخیره کردن این بخش نوبت به اصلاح قسمت Mapping می رسه :

در این بخش ما باید مشخص کنیم که هر جز از اطلاعات مورد نظر در فایل xml که در بخش تنظیمات XML Xpath parser مشخص کردیم در کدام فیلد از نوع محتوای تازه ساخته شده "خبرتازه" منتقل شود :

همچنین بنده قسمت عنوان را به عنوان فیلد منحصر به فرد انتخاب کرده ام. دلیل این انتخاب این است که قابلیتی وجود دارد که اگر مثلا در آینده بخواهم آدرس خبر یا آدرس تصویر را تعویض کنم می توان با استفاده از این فیلد منحصر به فرد آن را شناسایی و عملیات مورد نظر را روی آن محتوا انجام داد. البته بهتر است که این فیلد منحصر به فرد به صورت رشته متنی نباشد و مثلا یک عدد مانند کد خبر را هم ارسال کنیم و از آن به عنوان فیلد منحصر به فرد استفاده کنیم که دیگه واگذار می کنم به شخص شخیص خودتان (:

تقریبا کار ما تمام شد و برای آزمودن مسیری که پیموده ایم به مسیر www.sitename.com/import می رویم. در آن جا می توانیم گزینه مورد نظر خودمان که در این جا همان import news می باشد را انتخاب کنیم :

مرحله بعدی ورود آدرس دریافت فایل xml است که در آموزش قبلی خدمت شما ارایه دادم :

و در نهایت فشردن دکمه "وارد کردن" پایان بخش کار می باشد.

همه چیز خوب پیش رفته باشه 10 تا از آخرین خبرها را وارد می کنه و از این به بعد هم اگر کرونتون به خوبی اجرا بشه خبرهای جدید به صورت خودکار وارد می شوند که می تونید با ساختن ویو آن ها را به هر شکلی که می خواهید مانند یک محتوای معمولی در سایت خود به نمایش بگذارید :

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

این روش گفته شده یکی از جاهایی که کاربرد داره انتقال اطلاعات از سایت های قدیمی مثلا دروپال 6 و 7 به نسخه های جدیدتر دروپال می تونه باشه.

بدرود

متن ساده

  • No HTML tags allowed.
  • نشانی‌های وب و پست الکتونیکی به صورت خودکار به پیوند‌ها تبدیل می‌شوند.
  • خطوط و پاراگراف‌ها بطور خودکار اعمال می‌شوند.