איך מוסיפים קוד HTML בכל עמוד בלי לערוך את קוד האתר?

אחד הלקוחות שלי ביקש ממני להוסיף קוד מעקב של גוגל אנליטיקס לאתר שלו,

המתכנת של האתר, מסיבותיו שלו, תכנן את הקוד כמו מבצר, לא ניתן לערוך שום דבר באתר שלו, וחלק מהאתר מקודד ב-Ioncube.

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

יש פונקציה שמאפשרת ביצוע של קוד דינאמי/סטאטי ולהציגו ב-Header (לא רצוי), או אחרי ה-FOOTER (מומלץ), באמצעות auto_append_file.

הפונקציה הזו מבצעת require() לקובץ שאנו מגדירים.

כתבתי את קוד האנליטיקס כ-HTML והצבתי אותו בספריית הלקוח (הפונקציה מוגבלת ל-include_path), בנוסף, הגדרתי הרשאות קריאה בלבד והוספתי הגדרה ב-htaccess:

php_value auto_append_file "/path/to/file"

לאחר מכן הבנתי שתיתכן התנגשות מאחר והאתר משתמש ב-POST וב-AJAX, להחזיר תשובה לבקשות אלה עם קוד JavaScript יכול לשבור את התהליך.

אז ערכתי את הקוד והוספתי קוד PHP שקוד ה-HTML יתווסף רק במידה ומדובר בבקשת GET:

(הערה: אני יודע שוורדפרס מעוות את הקוד, ניתן להעתיק את כולו ולצפות בכתבן עד אשר יימצא פתרון לבעיה).
<?
if($_SERVER['REQUEST_METHOD'] == 'GET') {
?>
<script type="text/javascript">
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-XXXXXX-XX']);
_gaq.push(['_trackPageview']);
(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();
</script>
<?
} else {
exit(); } ?>

הפתרון הזה הוא זמני, עד אשר אני אמצא פתרון יעיל יותר, שיאפשר ליישם את הפונקציה רק על בקשות GET באמצעות Htaccess (אשמח אם מישהו יגיב עם פתרון). 

אבי

פורסם בקטגוריה כללי. אפשר להגיע לכאן עם קישור ישיר.

כתיבת תגובה

האימייל לא יוצג באתר. שדות החובה מסומנים *