Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 22 additions & 0 deletions gatsby-ssr.js
Original file line number Diff line number Diff line change
Expand Up @@ -55,3 +55,25 @@ export const wrapRootElement = ({ element }) => (
{element}
</>
);

export const onRenderBody = ({ setHeadComponents }) => {
setHeadComponents([
// Google tag (gtag.js)
<script
key="gtag-js"
async
src="https://www.googletagmanager.com/gtag/js?id=AW-17499456338"
/>,
<script
key="gtag-config"
dangerouslySetInnerHTML={{
__html: `
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'AW-17499456338');
`,
}}
/>,
]);
};
19 changes: 19 additions & 0 deletions src/hooks/useGoogleAdsConversion.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
import { useEffect } from "react";

/**
* 自定義 Hook:Google Ads 轉換追蹤
* 在頁面載入時觸發 Google Ads 轉換事件
*/
const useGoogleAdsConversion = () => {
useEffect(() => {
if (typeof window !== "undefined" && window.gtag) {
window.gtag("event", "conversion", {
send_to: "AW-17499456338/RoCwCMr3g4wbENKGsphB",
value: 1.0,
currency: "USD",
});
}
}, []);
};

export default useGoogleAdsConversion;
4 changes: 4 additions & 0 deletions src/pages/club_activities.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,12 @@ import {
VerticalTimelineElement,
} from "react-vertical-timeline-component";
import "react-vertical-timeline-component/style.min.css";
import useGoogleAdsConversion from "../hooks/useGoogleAdsConversion";

const ClubActivities = () => {
// Google Ads 轉換追蹤
useGoogleAdsConversion();

return (
<div>
<AppHeader title="iOS Club - 社團活動" />
Expand Down
4 changes: 4 additions & 0 deletions src/pages/contest.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,12 @@ import * as React from "react";
import Footer from "../components/footer";
import Navbar from "../components/navbar";
import AppHeader from "../components/header";
import useGoogleAdsConversion from "../hooks/useGoogleAdsConversion";

const ContestPage = () => {
// Google Ads 轉換追蹤
useGoogleAdsConversion();

return (
<div className=" bg-iosbgblue">
{/* Header */}
Expand Down
4 changes: 4 additions & 0 deletions src/pages/course.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,12 @@ import Footer from "../components/footer";
import Navbar from "../components/navbar";
import AppHeader from "../components/header";
import ImageWithPlaceholder from "../components/image-with-placeholder";
import useGoogleAdsConversion from "../hooks/useGoogleAdsConversion";

const CoursePage = () => {
// Google Ads 轉換追蹤
useGoogleAdsConversion();

const hideURL =
"https://drive.google.com/drive/folders/1tdW1rLbbGZH0Z-ipcXY_fuhn1kLtHnIn?usp=share_link";

Expand Down
4 changes: 4 additions & 0 deletions src/pages/gallery_list.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,10 +9,14 @@ import openInNew from "@iconify/icons-ic/baseline-open-in-new";
import Pagination from "rc-pagination";
import "../css/pagination.css";
import ImageWithPlaceholder from "../components/image-with-placeholder";
import useGoogleAdsConversion from "../hooks/useGoogleAdsConversion";

const GalleryList = ({ data }) => {
useState(1);
const [currentPage, setCurrentPage] = useState(1);

// Google Ads 轉換追蹤
useGoogleAdsConversion();
const itemCount = data.allGalleryJson.edges.length;
const perPage = 8;
const onPageChange = (page) => {
Expand Down
4 changes: 4 additions & 0 deletions src/pages/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,12 @@ import { Icon } from "@iconify/react";
import loudspeakerIcon from "@iconify/icons-fluent-emoji-high-contrast/loudspeaker";
import chevronUp from "@iconify/icons-akar-icons/chevron-up";
import chevronDown from "@iconify/icons-akar-icons/chevron-down";
import useGoogleAdsConversion from "../hooks/useGoogleAdsConversion";

const IndexPage = (props) => {
// Google Ads 轉換追蹤
useGoogleAdsConversion();

return (
<div className="bg-iosbgblue">
{/* Header */}
Expand Down
4 changes: 4 additions & 0 deletions src/pages/swift_res.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,12 @@ import Navbar from "../components/navbar";
import { Icon } from "@iconify/react";
import baselineDownloadForOffline from "@iconify/icons-ic/baseline-download-for-offline";
import ImageWithPlaceholder from "../components/image-with-placeholder";
import useGoogleAdsConversion from "../hooks/useGoogleAdsConversion";

const SwiftPage = () => {
// Google Ads 轉換追蹤
useGoogleAdsConversion();

return (
<div className=" bg-iosbgblue">
{/* Header */}
Expand Down