workouse / link-preview-generator
Link preview generator
dev-master
2024-05-22 00:22 UTC
Requires
- ext-dom: *
- symfony/http-client: ^3.4|^4.3
- symfony/templating: ^3.4|^4.3
Requires (Dev)
- phpunit/phpunit: ^8.4
This package is auto-updated.
Last update: 2024-10-22 01:21:49 UTC
README
Its a simple library to generate link preview from html content. Its find all links in html content and generate preview for each link targeted with class name generated-previews
. It will replace anchor tag with content of preview.php file. You can customize preview.php file to change preview design.
the project built by an intern at workouse (@bykclk), its not for production use.
Features
- Generate link preview from html content
- Customize preview design
- Easy to use
Install
composer require workouse/link-preview-generator
Usage
Default usage
<?php require __DIR__ . '/vendor/autoload.php'; use Workouse\LinkPreviewGenerator\LinkPreviewGenerator; $p_generator = LinkPreviewGenerator::create(); $html = <<<'HTML' <!DOCTYPE html> <html> <body> <h1>Hello World</h1> <a href="https://github.com/workouse/link-preview-generator" class="generated-previews">link-preview-generator</a> </body> </html> HTML; echo $p_generator->generatePreview($html);
Custom preview design
- Create your preview.php file in your project root directory
<div style="border: 1px solid blue"> <img height="100" width="100" src="<?= $tag['og_image'] ? $tag['og_image'] : $tag['image'] ?>"/> <h1><?= $tag['og_title'] ? $tag['og_title'] : $tag['title'] ?></h1> <p><?= $tag['og_description'] ? $tag['og_description'] : $tag['description'] ?></p> <a href="<?= $tag['og_url'] ?>">Visit page</a> </div>
-
$tag
variable will be passed your template file with following keystitle
description
image
url
og_title
og_description
og_image
og_url
-
Use
generatePreview
method with second argument as path of your preview.php file
<?php //you can use your template engine, i will use PhpEngine in here $filesystemLoader = new FilesystemLoader(__DIR__ . '/templates/%name%'); $templating = new PhpEngine(new TemplateNameParser(), $filesystemLoader); $p_generator = LinkPreviewGenerator::create($templating,'new_preview.php');//it will be placed inside templates folder $html = ... echo $p_generator->generatePreview($html);