הכנה ומשלוח של ניוזלטר בדרופל, בעזרת Simplenews ו-RelatedContent

You are here

Contact

Israel Office

+972-52-838-7222

+972-52-430-5252

Europe office

+33-695-805-004

18.05.2008
הכנה ומשלוח של ניוזלטר בדרופל, בעזרת Simplenews ו-RelatedContent
submitted by: Zohar Stolar

בשבוע שעבר מצאתי סוף סוף את הזמן להשקיע בניוזלטר של לינווייט.
המבנה שאליו שאפתי: הקדמה ייחודית לגליון הנוכחי, ולאחריה קבוצות של תכנים מרחבי האתר, מאוגדים עפ"י נושא או מטרה. רציתי גם שיהיה לי קל לבחור את התכנים השונים מהאתר, באופן אינטואיטיבי ומהיר.
המודול שמשמש אותנו לאיסוף כתובות המייל, להרשמה ולהסרה מרשימת התפוצה, וכמובן למשלוח, הוא Simplenews.

בעבר כבר נזקקתי לפתרון דומה. הדרך שאז מצאתי היתה לאסוף ידנית את מספרי התכנים (node ID), ולהוסיפם ל-URL של יצירת הניוזלטר, בכל סדר שהוא. התכנים התווספו אוטומטית לגוף ההודעה, ואז יכולתי לערוך אותם ולהוסיף בינהם כותרות.

מאז עברו הרבה מודולים בנהר, והייתה לי הרגשה שאמצא משהו מתאים. וכך היה. המודול Related Content נכתב בדיוק למטרה זו והוא ממלא את תפקידו מצויין.
לאחר התקנת המודול יש לגשת לעריכת סוג התוכן simplenews, ולהגדיר את ההגדרות הנדרשות. ביחוד יש לבחור שם את החתכים (views) שבהם תרצו להשתמש. כל וויו מאפשר להציג אגד של תכנים בתוך הניוזלטר, תחת כותרת משנה אחת.
כעת גשו ליצירת תוכן וצרו ניוזלטר חדש. לאחר יצירת הניזולטר (אל תשלחו אותו עדיין!) ליחצו על הטאב related content. רשימת קישורים חדשה (secondary tabs) תאפשר לכם לעבור בין ה-views השונים. תחת כל view תראו את רשימת התוצאות ל-view זה, ולידו תיבת סימון. סמנו את התוכן על מנת להוסיפו לניוזלטר.

זהו. פשוט, לא?

האמת היא שיש שלב נוסף. השלב הנוסף נחוץ משלוש סיבות עקריות, ושלושתן קשורות לאופן שבו מוצגים התכנים:

  1. אם התכנים מופיעים כטיזרים (תקצירים), אז מתווספים אליהם קישורים שלא תרצו בהכרח שיופיעו בניוזלטר.
  2. במרבית המקרים הקישורים יהיו יחסיים, ולכן לא יתאימו להצגה מחוץ לאתר
  3. ניוזלטרים צריכים להכיל סגנונות inline, דבר שבאתר אנחנו ננסה להימנע ממנו בכל מחיר.

על כל אלה... נצטרך לשנות את האופן שבו מוצגים התכנים. איך? Theming!

ראשית, עלינו לשנות את הפלט רק כאשר התכנים מוצגים כחלק מהניוזלטר. כאשר הם מוצגים כטיזרים בעמוד הראשי, או בכל רשימה אחרת באתר עצמו, אנחנו מעוניינים שישמר המבנה הרגיל של התקציר, עם הקישורים והכל. בכדי שדרופל תדע להבחין בהבדל עלינו לבצע שינוי קטן (תוספת של שורה בודדת) במודול Related Content. השינוי מתואר כאן: http://drupal.org/node/217130 והוא יכנס לגרסה הבאה של המודול, כך שבעתיד לא נזדקק לו.

לאחר השינוי יש להוסיף את הפונקציה הבאה לקובץ template.php:

<?php
function _phptemplate_variables($hook, $vars) {
switch ($hook) {
case "node":
if ($vars['node']->relatedcontent) {
$vars['template_file'] = "newsletter-teaser";
}
break;
}
return $vars;
}

?>

ובמקביל ליצור את קובץ ה-TPL המתאים: newsletter-teaser.tpl.php
קובץ זה יכיל את מבנה התוכן, כאשר הוא מוצג בתוך ניוזלטר בלבד. לשם הנוחות, נעתיק את הקובץ node.tpl.php, ונשנה אותו בהתאם.
להזכיר, אחת המטרות העיקריות שלנו היא הפיכת הנתיבים לאבסולוטיים, והסרת הקישורים הנלווים. למטרה השניה, די לנו בהסרת הדפסת המשתנה $links מתוך ה-TPL. למטרה הראשונה, ניתן לשנות את הכותרת כך:

nid, NULL, NULL, TRUE) ?>" title="<?php print $title ?>"><?php print $title ?>


כעת הקישור לתוכן יהיה אבסולוטי ויהיה נכון גם כאשר הוא מוצג מחוץ לאתר שלנו.

בהמשך, נוכל לטפל באותו אופן בצורך שלנו להכניס את הסגנונות inline:

nid, NULL, NULL, TRUE) ?>" title="<?php print $title ?>"><?php print $title ?>

זהו. הפעם באמת כל מה שנותר הוא לשלוח... ולקוות לטוב :-)
תמיד כדאי לשלוח מייל נסיון לבדיקה, וחשוב לזכור שהמייל עשוי להיראות שונה בתוכנות דואר שונות - אאוטלוק, ת'אנדרבירד, ג'ימייל, יאהו... כל אחד מפרש את המייל שלכם אחרת... אבל זה כבר סיפור אחר.

Comments

יפה מאוד.

האם אתה מכיר דרך אחרת לשנות את העיצוב שיהיה inline? אולי אפשר להשתמש ביכולות של simplenews כאן?

העיצוב נקבע ע"י פונקציות וקבצי עיצוב (theming functions and tpl files). אתה מכיר בכלל דרך בדרופל, או בכל תוכנה אחרת להקצות לאלמנטים של HTML סגנונות Inline לפי חוקים בקובץ CSS חיצוני?

המודול mimemail כולל את כל ה CSS פנימית (internal) - זה אמנם לא inline, אבל אני חושב שזה יעבוד באותה צורה.

Add new comment