' .''; $url = trim($m[1])); $html = str_replace('{$url}', rawurlencode($url), $fmt); return Keep($html); } From https://developers.facebook.com/docs/plugins/page-plugin/ The Page plugin lets you easily embed and promote any public Facebook Page on your website. Just like on Facebook, your visitors can like and share the Page without leaving your site. You can use the Page plugin for any Page that is not restricted, for example, by country or age. + Step 1: Include the JavaScript SDK on your page once, ideally right after the opening body tag.
+ Step 2: Place this code wherever you want the plugin to appear on your page. + Revision History metadata element \SDV($HTMLStylesFmt[EMBEDFBID], '.embedfb {font-family: monospace;}' . '.embedfbdebug {font-family: monospace;}'); # set debug flag \SDV($EmbedFacebookDebug, false); # set default debug setting if not defined in a configuration file $EmbedFacebook_debugon = (bool) $EmbedFacebookDebug; # if on writes input and output to $MessagesFmt # Version date $RecipeInfo[EMBEDFBNAME]['Version'] = '2022-02-12' . EMBEDFBNEW; # PmWiki version numbering is done by date # recipe version page variable $FmtPV['$EmbedFacebookVersion'] = "'" . EMBEDFBNAME . ' version ' . $RecipeInfo[EMBEDFBNAME]['Version'] . "'"; // return version as a custom page variable if ($EmbedFacebook_debugon) dmsg('
' . __FILE__, $RecipeInfo[EMBEDFBNAME]['Version']); # declare $EmbedFacebook for (:if enabled EmbedFacebook:) recipe installation check $EmbedFacebook = true; # enabled # // Initialise constants DEFINE ('NL', "\n"); DEFINE ('BR', '
' . NL); DEFINE ('FBURL', 'https://www.facebook.com/'); DEFINE ('FBAPIURL', FBURL . 'plugins/page.php?'); ## Add a PmWiki custom markup # (:EmbedFacebook page= height= width= tabs=timeline,events,messages :) $markup_pattern = '/\\(:embedfacebook(?: (.*?))?:\\)/i'; # see https://regex101.com/r/HNkxC5/2 \Markup('embedfacebook', 'directives', $markup_pattern, __NAMESPACE__ . '\EmbedFacebook_Parse' ); # i = case insensitive # uses lazy evaluation, preserves leading and trailing white space // return; # completed EmbedFacebook replacement recipe setup /*-----------------------------------------------------------------------------------------------------------*/ # /** Main EmbedFacebook parser * /param arguments as documented above * /return The HTML-formatted information wrapped in a
of class "embedfacebook". */ function EmbedFacebook_Parse (array $m):string { global $EmbedFacebook_debugon; # import variables $opt = \ParseArgs(strtolower($m[1])); # case insensitive if ($EmbedFacebook_debugon) dmsg('opt', $opt); $retval = '<:block>
' . NL; # start a block-level element, i.e. break out of the paragraphs if(empty ($opt['name'])) { # no parameters supplied $retval .= EMBEDFBNAME . ' parameters are name= tabs={timeline,events,messages} width=340 height=500 header={true|false} cover={true|false}'; return \Keep($retval . '
'); } $width = "width=" . ((bool) $opt['width'] ? intval($opt['width']) : '340'); # parameter $height = "height=" . ((bool) $opt['height'] ? intval($opt['height']) : '500'); # parameter $src = FBAPIURL; $src .= 'href=' . rawurlencode(FBURL . $opt['name'] . '/'); # Facebook page name $src .= '&tabs=' . ((bool) $opt['tabs'] ? $opt['tabs'] : 'timeline'); # parameter $src .= '&' . $width; # parameter min 180, max 500 $src .= '&' . $height; # parameter min 70 $src .= '&adapt_container_width=true'; $src .= '&show_facepile=false'; $src .= '&small_header=' . ((bool) $opt['header'] ? ! var_export(! boolval($opt['header']), true) : 'true'); $src .= '&hide_cover=' . ((bool) $opt['cover'] ? ! var_export(! boolval($opt['cover']), true) : 'true'); $src .= '&hide_cta=true'; $src .= '&lazy=true'; $retval .= '