ryan

Module: Video embed for YouTube/Vimeo (TextformatterVideoEmbed)

Recommended Posts

Agreed with Martijn, that's probably better in most (if not all) cases. If you really want to use this module, something like this should work too:

if ($page->your_field) {
    $value = "<p>" . $page->your_field . "</p>";
    $modules->get('TextformatterVideoEmbed')->format($value);
    if (strpos($value, "<p>") !== 0) echo $value;
}

Only benefits of that approach would be having a common way to present videos on your site, and using oEmbed instead of relying on your own case-by-case embed codes. Other than that, I don't really see much value in it :)

  • Like 1

Share this post


Link to post
Share on other sites

The other option would be to change the regex in the module. This is what I use in Get Video Thumbs and it works fine with plain text (URL) and Textarea fields:

/\s*(?:http(?:s)?:\/\/)?(?:www\.)?(?:youtu\.be\/|youtube\.com\/(??:watch)?\?(?:.*&)?v(?:i)?=|(?:embed|v|vi|user)\/))([^\?#&\"'<>]+)/

That said, I agree with Martijn's approach :)

  • Like 1

Share this post


Link to post
Share on other sites

Hi everyone, 

I wrote, after install module and format Video embed in details.

Could I write a php line to see video on my browser page of Processwire?

Like:

. . .

<div class="video-container"><?php echo $page->video_field->url; ?></div>
. . .
 
Thanks

Share this post


Link to post
Share on other sites

Don't use the formatter. Why not simply use:

<iframe width="560" height="315" src="<?php echo $page->your_field; ?>" frameborder="0" allowfullscreen></iframe> 

But that doesn't help much with inline Videos which are put somewhere, whereever in whatever textarea?

Unless in combination with Hanna Code ... !

Btw. I made this module to be able to adjust some youtube embed options (my very first module btw.) ... https://github.com/blynx/TextformatterVideoEmbedOptions

Not super useful - but for now it works in my project. I am thinking about how to make this thing actually useful considering real use cases.

edit:

I already found some stupid elementary glitches in my module I will fix soon.

And also as an reply to below: But what about many different videos pasted into one single articel‽ : )

Edited by blynx
  • Like 2

Share this post


Link to post
Share on other sites

But that doesn't help much with inline Videos which are put somewhere, whereever in whatever textarea?

Unless in combination with Hanna Code ... !

Aenean lacinia bibendum nulla sed consectetur. Nullam quis risus eget urna mollis ornare vel eu leo. Cras justo odio, dapibus ac facilisis in, egestas eget quam. {video} Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus.
$search = '{video}';
$replace = "<iframe width='560' height='315' src='$page->your_field' frameborder='0' allowfullscreen></iframe>";

str_replace($search, $replace, $page->body);
  • Like 3

Share this post


Link to post
Share on other sites

This module doesn't work with URLs with format http://www.youtube.com/watch?v=<video-id>, because oembed service doesn't recognize such URLs. I changed in module source the way of building $oembedURL:

$videoID = $matches[2][$key]; 
$oembedURL = "http://www.youtube.com/oembed?url=" . urlencode("http://youtube.com/watch?v=" . $videoID) . "&format=json&maxwidth={$this->maxWidth}&maxheight={$this->maxHeight}"; 
  • Like 1

Share this post


Link to post
Share on other sites

Hi there,

This has always worked without a hitch, but I'm a bit stumped now. I'm using this for the body field, I have a youtube URL in a paragraph, but I can't get the player to show, just the URL text as is.

I then tried with a Vimeo video, no luck there either, but in that case it creates the TextformatterVideoEmbed div (<div class="TextformatterVideoEmbed"></div>), but the div has no content. I'm running PW 2.6.1 and the latest version of TextformatterVideoEmbed. 

Any idea what's going on here?

Share this post


Link to post
Share on other sites

Hi @nikoka,

my setup (PW 2.6.10 / TextformatterVideoEmbed 1.0.9) delivers the same effect. Did you find a solution outputting the oembed code?

Cheers, Chris

Share this post


Link to post
Share on other sites

Hi @inspeCTor,

I'm afraid I didn't, remains a mystery, I haven't had this problem before or after. Spent some time figuring out what could be different with this one installation, but there shouldn't be anything special there.

Please do report if you find some clues, thanks!

Share this post


Link to post
Share on other sites

Diagnostics module shows

textformatter_video_embed
InnoDB / latin1_swedish_ci Rows: 24
Data: 16.00 KB
Index: 0 bytes Warning Character set mismatch with connection. This might lead to data corruption. Sanitise your data to match latin1 before sending it to the DB.

 any ideas how to fix this?

Share this post


Link to post
Share on other sites

Hi there,

This has always worked without a hitch, but I'm a bit stumped now. I'm using this for the body field, I have a youtube URL in a paragraph, but I can't get the player to show, just the URL text as is.

Same here. PW 2.6.17 

It still works with my local server, but stopped working on the web server.

That's why I switched to "Hanna Code" for YouTube embeds now.

(I had to, because by using the text editor source-button as a workaround, the HTML Purifier seems to strip out iframes inside of inline editor fields. And I couldn't figure out how to allow this with the HTML Purifier settings.)

Share this post


Link to post
Share on other sites

..(I had to, because the HTML Purifier seems to strip out iframes inside of inline editor fields. And I couldn't figure out how to allow this with the HTML Purifier settings.)

Have a read here...but good to read the whole thread

Share this post


Link to post
Share on other sites

Thanks! @kongondo

I already stumbled over this thread and your helpful post.

In my case I couldn't disable the HTML Purifier, because it is mandatory with inline editor fields. 

But I'm happy with the Hanna Code workaround so far. 

P.s. For everyone, who also wants to embed responsive videos manually. You can use the html and style like the video embed module does:

<div class="VideoEmbed" style="position:relative;padding:30px 0 56.25% 0;height:0;overflow:hidden;">
<iframe style="position:absolute;top:0;left:0;width:100%;height:100%;" width="640" height="360" src="https://www.youtube.com/embed/yourvideoidhere" frameborder="0" allowfullscreen=""></iframe>
</div>
  • Like 2

Share this post


Link to post
Share on other sites

When I open a page with video embedded, I get this: 

Error: Class 'mysqli' not found (line 23 of /home/gocinet/public_html/wire/core/Database.php) 

Same error when I access the module settings page in the backend.

PW 2.7.0. This only happens on the live server, not on my dev machine. So it seems to be server related.

Any pointers on how to solve this would be great. Thank you.

EDIT: I just discovered that mysqli support is not installed on the live server (godaddy VPS). Installing it should solve the problem.

Share this post


Link to post
Share on other sites

That error says that you don't have the mysqli php extension installed on the server. I can't see the source for this module right now as Github is down, but I expect it is using mysqli instead of PDO which is what the PW core now uses.

So I am guessing this module needs an update to use PDO. Change any instances of $db to $database. Although I am surprised that this module uses any direct db calls. Are you sure it's actually this module that is the problem?

Share this post


Link to post
Share on other sites

thank you adrian. I will give the renaming a try.

Yes, I'm sure that it is this module because the error throws only on pages with embedded video and on the settings page for the module in the backend.

The module officially supports PW only up to 2.4. That may be why it is not using PDO. 

EDIT: rnaming $db to $database didn't help.

$db is initialized in the module with

$db = wire('db');

Share this post


Link to post
Share on other sites

Did you try:

$database = wire('database');

You may also need to modify the sql queries to work with PDO. If you're not familiar with the needed changes, a quick google should get you going :)

Once you get it working, a PR for Ryan might nice :)

Share this post


Link to post
Share on other sites

I have converted the relevant db query code to PDO and will issue a pull request.

  • Like 2

Share this post


Link to post
Share on other sites

I am having a problem getting this to work inside a repeater.  Is that a known issue?  It is just printing out the url.

Share this post


Link to post
Share on other sites

I really love the TextformatterVideoEmbed module.

I was wondering, Ryan, if you could modify the module to handle both youtube video id's and youtube playlist id's?

Before I dig into the code on the module, I figured I would ask if you could consider making this an upgrade to the module as it would be very handy. Rather than fork it to a new module, it looks like a simple addition you could make to the 'official' module that would be very beneficial:

A good example, where this is handy, is like on a news site I've built, the reporters may take 3 videos of a two hour county commission meeting and upload them to YouTube and instead of dropping in 3 videos into a news page, they could drop in a youtube playlist.

Thanks a bunch for the consideration!

Edited by LostKobrakai
Moved to the correct support topic of the module

Share this post


Link to post
Share on other sites

Hello holmescreek,

With people having such busy schedules these days, why not fork the module & make any necessary changes to your GitHub repository. You don't have to advertise your fork, or even enter it into the module repository. You could, instead, issue a pull request to the original repository so that Ryan could then see how much/little needs to be done to add your change back into the official module. Once the changes get incorporated, it is then just a matter of deleting your GitHub repository.

Best wishes,

Steve

  • Like 2

Share this post


Link to post
Share on other sites

I forked the module to make the module settings maxWidth and maxHeight work in Responsive mode:

https://github.com/rolandtoth/TextformatterVideoEmbed

Basically it adds an extra wrapper div which max-width and max-height inline CSS is set to what you put in module settings. Also the hard-coded 56.25% aspect ratio is calculated from these values.

Share this post


Link to post
Share on other sites

I have used Ryan's VIDEO EMBED FOR YOUTUBE/VIMEO numerous times in various projects and I always love it. However, I went to install it on a 3.0.15 fresh install, and it is saying it cant install it due to it already existing. Has anyone else run into this before? For the life of me, I can not find it in the database.

Share this post


Link to post
Share on other sites

I can't seem to get this module to load in the backoffice module section, I downloaded and put it in my module folder, then in the backoffice it does not recognise it? Do I need to change file extion name or? any help would be great!

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Recently Browsing   0 members

    No registered users viewing this page.

  • Similar Content

    • By Robin S
      Another little admin helper module...
      Template Field Widths
      Adds a "Field widths" field to Edit Template that allows you to quickly set the widths of inputfields in the template.

      Why?
      When setting up a new template or trying out different field layouts I find it a bit slow and tedious to have to open each field individually in a modal just to set the width. This module speeds up the process.
      Installation
      Install the Template Field Widths module.
      Config options
      You can set the default presentation of the "Field widths" field to collapsed or open. You can choose Name or Label as the primary identifier shown for the field. The unchosen alternative will become the title attribute shown on hover. You can choose to show the original field width next to the template context field width.  
      https://github.com/Toutouwai/TemplateFieldWidths
      https://modules.processwire.com/modules/template-field-widths/
    • By horst
      Croppable Image 3
      for PW 3.0.20+
      Module Version 1.1.16
      Sponsored by http://dreikon.de/, many thanks Timo & Niko!
      You can get it in the modules directory!
      Please refer to the readme on github for instructions.
       
      -------------------------------------------------------------------------
       
      Updating from prior versions:
       
      Updating from Croppable Image 3 with versions prior to 1.1.7, please do this as a one time step:
      In the PW Admin, go to side -> modules -> new, use "install via ClassName" and use CroppableImage3 for the Module Class Name. This will update your existing CroppableImage3 module sub directory, even if it is called a new install. After that, the module will be recogniced by the PW updater module, what makes it a lot easier on further updates.
      -------------------------------------------------------------------------
       
      For updating from the legacy Thumbnail / CropImage to CroppableImage3 read on here.
       
      -------------------------------------------------------------------------
       
    • By MoritzLost
      UPDATE: I have published a stable version of this module!
      Discussion thread:
      Github: https://github.com/MoritzLost/TextformatterPageTitleLinks
      ---
      Hello there,
      I'm working on a tiny textformatter module that searches the text for titles of other pages on your site and creates hyperlinks to them. I'm not sure if something like this exists already, but I haven't found anything in the module directory, so I wrote my own solution 🙂
      It's not properly tested yet and is still missing some functionality I would like to implement, so at the moment it should be considered in BETA. Features include limiting the pages that will get searched by template, and adding a custom CSS class to the generated hyperlinks. As I'm writing this I noticed that it will probably include unpublished and hidden pages at the moment, so yeah ... it's still in development alright 😅
      You can download the module from Github:
      https://github.com/MoritzLost/TextformatterPageTitleLinks
      There's some more information in the readme as well.
      Anyway, let me know what you think! I'm happy about any feedback, possible improvements or ideas on how to improve the module. Cheers.
    • By blad
      Hi guys!
      I just uploaded a module to explore files based on elFinder. By default it will show the "Files" folder.
      Screenshots:

      Video:
       
      To do:
       More options To fix:
       The function of rotating or scaling an image fails  Image editors V 1.01 (view issue)
      Fixed the bug working with the Multi-Language support ( translation of folders ). Fixed the name of elfinder.en  Github:
      https://github.com/LuisSantiago/ProcessElFinder/
      I hope you like it.
    • By BitPoet
      I'm really in love with FormBuilder, but the one thing missing to match all my end users' expectations were repeatable field groups. Think repeaters, in ProcessWire terms. Our primary application of PW is our corporate intranet, so "lines" of fields are quite common in the forms I build. We have all kinds of request forms where the information for a varying number of colleagues needs to be entered (from meal order to flight booking request) and where it is simply impractical to send a form for each, and I don't want to clutter my forms with multiple instances of fields that may only get used ten percent of the time.
      That's why I started to build FormBuilderMultiplier (link to GitHub).
      What it does:
      Adds an option to make a regular Fieldgroup repeatable Lets you limit the number of instances of a Fieldgroup on the form Adds an "Add row" button the form that adds another instance of the Fieldgroup's fields Adds a counter suffix at the end of every affected field's label Stores the entered values just like regular fields Makes the entered values available in preview and email notifications Supports most text based fields, textareas and selects (really, I haven't had enough time to test all the available choices yet) What it doesn't do (yet):
      Support saving to ProcessWire pages (i.e. real Repeaters) I haven't tested all the validation stuff, Date/Time inputs etc. yet, but since I'm utterly swamped with other stuff at work, I didn't want to wait until I have it polished. Any feedback is welcome. There might also be some issues with different output frameworks that I haven't encountered yet. The forms I work with mostly use UIKit.
      Status:
      Still alpha, so test well before using it in the field.
      Known issues:
      When rows are added, the form's iframe needs to be resized, which isn't completely clean yet.
      How it works:
      The Fieldgroup settings are added through regular hooks, as is the logic that adds the necessary field copies for processing the form and displaying previews.
      "Multiplied" field instances are suffixed with _NUM, where NUM is an incremental integer starting from 1. So if you have add two fields named "surname" and "givenname" to a fieldgroup and check the "multiply" checkbox, the form will initially have "surname_1" and "givenname_1" field (I'm still considering changing that to make the risk to shoot oneself into the foot by having a regular "surname_1" field somewhere else in the form less likely).
      When a "row" is added, the first row is cloned through JS and the counter in the fields' IDs, names and "for" attributes as well as the counter in the label are incremented before appending the copies to the Fieldset container in the form.
      To keep backend and frontend in sync, a hidden field named [name of the fieldset]__multiplier_rows is added to the form. Both the backend and the frontend script use this to store and retrieve the number of "rows".
      ToDo:
      Naturally, add the option to store the data in real repeaters when saving to pages. Do a lot of testing (and likely fixing). Make a few things (like the "Add row" button label etc.) configurable in field(set) context. Add a smooth API to retrieve the multiplied values as WireArrays. The mandatory moving screenshot: