The goal is to create a site easily, fast,without dependencies and without sacrify performance.
https://github.com/EFTEC/AMPGeneratorOne
<?php
use eftec\AmpGeneratorOne\AmpGeneratorOne;
use eftec\AmpGeneratorOne\ButtonModel;
use eftec\AmpGeneratorOne\FooterModel;
use eftec\AmpGeneratorOne\HeaderModel;
use eftec\AmpGeneratorOne\HeadModel;
use eftec\AmpGeneratorOne\LinkModel;
use eftec\AmpGeneratorOne\SectionModel;
use eftec\AmpGeneratorOne\StructureModel;
include "lib/AmpGeneratorOne.php";
$canonical="https://www.canonical.com";
$base='http://localhost/currentproject/ampgeneratorone/example/MediumExample';
$amp=new AmpGeneratorOne($canonical,$base);
$amp->startAmp(new HeaderModel("Example","AMP Generator One"));
// sidebar menu
$menu=array();
$menu[]=new LinkModel("Cupcakes", $base."/detail.php?id=cupcake", "");
$menu[]=new LinkModel("Muffins", $base."/detail.php?id=muffin", "");
$amp->sidebar($menu);
$amp->head(new HeadModel("Cupcakes","/resources/logo/logo.png"),70,70);
$amp->render();
Explanation
$canonical="https://www.canonical.com";
$base='http://localhost/currentproject/ampgeneratorone/example/MediumExample';
$canonical is your original non-amp page.
$base is where your amp will be located. It could change!. After all, Google may cache your page, so the location could be different.Let’s say that your site is called www.mysite.com and your amp is located at www.mysite.com/amp then:
$canonical="https://www.mysite.com";
$base='http://www.mysite.com/amp';
$amp=new AmpGeneratorOne($canonical,$base);
$amp->startAmp(new HeaderModel("Example","AMP Generator One"));
We created a list of links (the first value is the text, the second is the link. The link could be everything. In this case, it points to detail.php that it’s not yet created.
// sidebar menu
$menu=array();
$menu[]=new LinkModel("Cupcakes", $base."/detail.php?id=cupcake", "");
$menu[]=new LinkModel("Muffins", $base."/detail.php?id=muffin", "");
$amp->sidebar($menu);
(the upper “menu”). The name of the site is called “Cupcakes”, I also added a logo. The size of the logo is 70x70 pixels.
$amp->head(new HeadModel("Cupcakes","/resources/logo/logo.png"),70,70);
And finally, we render (show) the page
$amp->render();
Right now, there are three modifiers:
$amp=new AmpGeneratorOne($canonical,$base,"red","blue","text-black"); // where red is the background color of the sidebar, blue is the color of the text of head and burger (menu) and text-black is the class of the color of the sidebar.
The modifier could be stacked. For example
$amp->setClassTextColor(‘text-white’)
->setBackgroundColor(‘black)
->…
Let’s modify the constructor and add default colors.
$amp=new AmpGeneratorOne($canonical,$base,"#ECE9C7","white","text-black");
$amp->setDefault("#FC9D9A","text-white");
Where
without the slider
with the slider open
$amp->sectionFirst(new SectionModel("Cupcakes"));
Yep, it’s fine but the color is the same than the head. Let’s add a modifier
$amp->setBackgroundColor("#F9CDAD") // change background
->sectionFirst(new SectionModel("Cupcakes"));
$amp->setBgImage("resources/pexels-photo-585581.jpeg") // change background image
->setClassTextColor("text-black") // change text color
->sectionFirst(new SectionModel("Cupcakes"));
Let’s add more stuff
//second buttons
$sec2=new SectionModel();
$sec2->buttons[]=new ButtonModel("Button1","#");
$sec2->buttons[]=new ButtonModel("Button2","#","danger");
$amp->setBackgroundColor("white")
->sectionButtons($sec2);
// section text
$sec3=new SectionModel("Cupcakes","The earliest extant description of what is now often called a cupcake was in 1796");
$amp->setBackgroundColor("white")
->setClassTextColor("text-black")
->sectionText($sec3);
// section images
$images=[];
$images[]=new SectionModel("Cupcake","The earliest extant description of what is now often called a cupcake was in 1796","/resources/cupcake_square.jpg");
$images[]=new SectionModel("Cupcake","The earliest extant description of what is now often called a cupcake was in 1796","/resources/cupcake_square.jpg");
$images[]=new SectionModel("Cupcake","The earliest extant description of what is now often called a cupcake was in 1796","/resources/cupcake_square.jpg");
$amp->setBackgroundColor("white")
->setClassTextColor("text-black")
->sectionColImage($images,400,400,3); // 3 indicates the number of columns.
There are several section to play, including google analytics, images with text, google maps and such
// # navigation
$sbnav=new SectionModel("Cupcakes","The earliest extant description of what is now often called a cupcake was in 1796");
$sbnav->buttons[]=new ButtonModel("primary","#","primary");
$navCol1=[];
$navCol1[]=new LinkModel("Cupcakes","#","",true);
$navCol1[]=new LinkModel("Easy Little Pandas","#");
$navCol1[]=new LinkModel("Apple Pie Cupcakes","#");
$navCol1[]=new LinkModel("Chocolate","#");
$navCol2=[];
$navCol2[]=new LinkModel("Muffins","#","",true);
$navCol2[]=new LinkModel("Apple-Cinnamon","#");
$navCol2[]=new LinkModel("Banana","#");
$amp->setBackgroundColor("black")->setClassTextColor("text-white")->sectionNavigation($sbnav,"",0,0,$navCol1,$navCol2);
// #5 footer
$amp->setPadding(0,0)
->sectionFooter(new FooterModel("Copyright something(c)","See as desktop"));
You should add a link to your amp site. It must be added in the header of the canonical (non amp) site.
<link rel="amphtml" href="https://www.mysite.com/amp/" />
<?php
use eftec\AmpGeneratorOne\AmpGeneratorOne;
use eftec\AmpGeneratorOne\ButtonModel;
use eftec\AmpGeneratorOne\FooterModel;
use eftec\AmpGeneratorOne\HeaderModel;
use eftec\AmpGeneratorOne\HeadModel;
use eftec\AmpGeneratorOne\LinkModel;
use eftec\AmpGeneratorOne\SectionModel;
use eftec\AmpGeneratorOne\StructureModel;
include "../../lib/AmpGeneratorOne.php";
$canonical="https://www.canonical.com";
$base='http://localhost/currentproject/ampgeneratorone/example/MediumExample';
$amp=new AmpGeneratorOne($canonical,$base,"#ECE9C7","white","text-black");
$amp->setDefault("#FC9D9A","text-white");
$amp->startAmp(new HeaderModel("Example","AMP Generator One"));
// sidebar menu
$menu=array();
$menu[]=new LinkModel("Cupcakes", $base."/detail.php?id=cupcake", "");
$menu[]=new LinkModel("Muffins", $base."/detail.php?id=muffin", "");
$amp->setClassTextColor("text-white")
->sidebar($menu);
$amp->head(new HeadModel("Cupcakes","/resources/logo/logo.png"),60,60);
// first section
$amp->setBgImage("resources/pexels-photo-585581.jpeg")
->setClassTextColor("text-black")
->sectionFirst(new SectionModel("Cupcakes"));
//second buttons
$sec2=new SectionModel();
$sec2->buttons[]=new ButtonModel("Button1","#");
$sec2->buttons[]=new ButtonModel("Button2","#","danger");
$amp->setBackgroundColor("white")
->sectionButtons($sec2);
// section text
$sec3=new SectionModel("Cupcakes","The earliest extant description of what is now often called a cupcake was in 1796");
$amp->setBackgroundColor("white")
->setClassTextColor("text-black")
->sectionText($sec3);
// section images
$images=[];
$images[]=new SectionModel("Cupcake","The earliest extant description of what is now often called a cupcake was in 1796","/resources/cupcake_square.jpg");
$images[]=new SectionModel("Cupcake","The earliest extant description of what is now often called a cupcake was in 1796","/resources/cupcake_square.jpg");
$images[]=new SectionModel("Cupcake","The earliest extant description of what is now often called a cupcake was in 1796","/resources/cupcake_square.jpg");
$amp->setBackgroundColor("white")
->setClassTextColor("text-black")
->sectionColImage($images,400,400,3);
// # navigation
$sbnav=new SectionModel("Cupcakes","The earliest extant description of what is now often called a cupcake was in 1796");
$sbnav->buttons[]=new ButtonModel("primary","#","primary");
$navCol1=[];
$navCol1[]=new LinkModel("Cupcakes","#","",true);
$navCol1[]=new LinkModel("Easy Little Pandas","#");
$navCol1[]=new LinkModel("Apple Pie Cupcakes","#");
$navCol1[]=new LinkModel("Chocolate","#");
$navCol2=[];
$navCol2[]=new LinkModel("Muffins","#","",true);
$navCol2[]=new LinkModel("Apple-Cinnamon","#");
$navCol2[]=new LinkModel("Banana","#");
$amp->setBackgroundColor("black")->setClassTextColor("text-white")->sectionNavigation($sbnav,"",0,0,$navCol1,$navCol2);
// #5 footer
$amp->setPadding(0,0)
->sectionFooter(new FooterModel("Copyright something(c)","See as desktop"));
$amp->render();
Why AMP Site?.The AMP Project is an open-source initiative aiming to make the web better for all. The project enables the creation of websites and ads that are consistently fast, beautiful and high-performing across devices and distribution platforms.