Jump to content

Tech Support

Administrators
  • Posts

    1,811
  • Joined

  • Days Won

    338

Everything posted by Tech Support

  1. Main tasks queue is executed in 1 thread. If the listed video deletion tasks are not executed, then this means that some other tasks are executed. If video deletion tasks are executed slowly, this is most likely due to the need to update summary numbers in tags / categories for the deleted videos, which may take long time in big databases. For now we don't have any fix for it, but keep this in mind with the future nextgen development.
  2. Search in tags and categories is enabled by default. You can see in the same block that enable_search_on_tags and enable_search_on_categories parameters should be enabled.
  3. Settings -> Video formats -> open any video format and you can find speed limit options.
  4. The search is customizable. I think by default search is not looking into models, but you can enable that in Website UI -> Pages -> Search Content page -> Videos List Search Result block using enable_search_on_models parameter.
  5. No, at the moment we don't have this in plans.
  6. I see, you can change the global access level of premium videos in Settings -> Memberzone settings.
  7. The formats that are played inside player are configured in Settings -> Player settings. Normally you will have the same settings for different user types (e.g. guests, premium). But if you want them to be rendered differently for different types of users, you have to override player settings for specific user type, this can be done from the top of player settings editor:
  8. KVS provides many different functionality around tokens, here is a brief summary. Users can get tokens via: Buying tokens for money using billings (e.g. buy 100 tokens for $1.00) for later use inside KVS. Not all billings support them: Segpay, Paypal, Verotel, Crypto. Getting tokens for activity, see Activity awards section in Settings -> Memberzone settings in KVS admin panel (e.g. get 10 tokens for each 1 approved comment and etc). Selling premium access to their videos, or albums, or channels, or the whole profile (this should be adjusted in templates, as by default no themes support ability for users to specify price for their content or profile). Involving traffic to their videos on your site, e.g. upload some videos and refer them on their other sites, or social networks and engage some new visitors to your site, they can earn N tokens for M number of unique views, see in Settings -> Memberzone settings (for example, 100 tokens for each 100 unique view on each their video). Inviting other users in paid conversions. Receiving donations. Users can spend tokens on: Purchasing access to other videos, albums, channels (then have access to all videos of that channel) or profiles (them have access to all videos and albums of that profile). Giving tips / donations to other users (need template changes, not supported in any themes). Spending tokens on conversations via internal messenger, e.g. pay 1 token for each 1 message. Receiving payouts from you in real money, if you want to pay money for their activity or content. KVS default theme only supports certain subset of these features, because it is not possible to include all features into one theme, many features are designed for different types of sites. Theme supports purchasing videos and albums for tokens, showing token balance, ability to purchase tokens for money via payment processors, e.g. something you actually need for a PPV paysite. Theme doesn't support displaying token flow (e.g. table that explains how many token awarded for each activity or content sale), doesn't support ability to specify price in tokens for content, doesn't support ability to purchase access to channels or profiles, doesn't support donations, and doesn't support payouts (displaying list of payouts with information of how much tokens and $$$ was paid and when). There are other guides for adding some functionality related to tokens: This guide will provide basic steps to display token inflow and outflow at the member's profile. Please note some of its functionality needs at least KVS 6.1.0 version, which is still under development at the moment of writing. This GUI provides 3 filters: Filter by 4 possible token flows (Token spending, token buying, awards and payouts). Filter by month to show only token transactions happened in that month (for the last 12 months). Filter by payout, to see which payouts happened in the past (up to 10 latest). Here you can see all the awards that were paid to you in any specific payout, plus you can filter awards that are not paid yet and are due to be paid in future. Step 1. In Website UI -> Language files -> Default language add the following block of texts: memberzone.tokens_group.0 = Token flow memberzone.tokens_group.1 = Spent tokens memberzone.tokens_group.2 = Purchased tokens memberzone.tokens_group.3 = Awards memberzone.tokens_group.4 = Paid tokens memberzone.tokens_group.5 = Donations memberzone.tokens_label_period = Period memberzone.tokens_label_payout = Payout memberzone.tokens_label_payout_unpaid = Not paid yet memberzone.tokens_label_payout_title = Payout %1% memberzone.tokens_label_payout_title_in_progress = (in progress) memberzone.tokens_label_payout_title_paid = (paid) memberzone.tokens_label_action = Action memberzone.tokens_label_tokens = Tokens memberzone.tokens_label_info = Info memberzone.tokens_label_info_deleted = The object has been deleted memberzone.tokens_label_date = Date memberzone.tokens_flow_types.purchase_video = Video purchased memberzone.tokens_flow_types.purchase_album = Album purchased memberzone.tokens_flow_types.purchase_dvd = Channel subscription purchased memberzone.tokens_flow_types.purchase_user = Member subscription purchased memberzone.tokens_flow_types.purchase_access_package = Premium access purchased memberzone.tokens_flow_types.purchase_tokens = Tokens purchased memberzone.tokens_flow_types.purchase_messages = Internal messages paid memberzone.tokens_flow_types.award_signup = Signup award memberzone.tokens_flow_types.award_login = Login award memberzone.tokens_flow_types.award_avatar = Avatar upload award memberzone.tokens_flow_types.award_cover = Cover upload award memberzone.tokens_flow_types.award_comment = Comment submit award memberzone.tokens_flow_types.award_video_upload = Video submit award memberzone.tokens_flow_types.award_album_upload = Album submit award memberzone.tokens_flow_types.award_post_upload = Post submit award memberzone.tokens_flow_types.award_video_sale = Your video sold memberzone.tokens_flow_types.award_album_sale = Your album sold memberzone.tokens_flow_types.award_user_sale = Your subscription sold memberzone.tokens_flow_types.award_dvd_sale = Your channel subscription sold memberzone.tokens_flow_types.award_referral = Your referral revenue memberzone.tokens_flow_types.award_donation = You were donated memberzone.tokens_flow_types.award_video_traffic = Your video views memberzone.tokens_flow_types.award_album_traffic = Your album views memberzone.tokens_flow_types.award_embed_traffic = Your video embedded memberzone.tokens_flow_types.award_messages = Your earning from messages memberzone.tokens_flow_types.payout = You were paid out memberzone.tokens_flow_types.donation = You've donated Step 2. In Website UI -> Pages open [Memberzone] My Profile page for editing and put the following line into its template code somewhere under <div class="main-container-user">. This DIV renders a list of different blocks (e.g. profile info, fav videos and etc.), so you need to choose where you want token flow to be located on the page structure: {{insert name="getBlock" block_id="list_members_tokens" block_name="My Tokens"}} Save the changes. Step 3. Locate the newly created My Tokens block on this page and open it for editing. Under Block parameters enable these: items_per_page = 10 (or whatever number of items you want to be displayed at a time) var_from = from_tokens sort_by = Date var_flow_group = group var_date_from = date_from var_date_to = date_to var_payout_id = payout_id redirect_unknown_user_to = /?login Put the following code into its block template: {{assign var="list_tokens_title" value=$lang.memberzone.tokens_group.$flow_group|default:$lang.memberzone.tokens_group.0}} {{if $payout.payout_id}} {{assign var="payout_title" value=$payout.added_date|date_format:"%Y-%m-%d"}} {{assign var="list_tokens_title" value=$lang.memberzone.tokens_label_payout_title|replace:"%1%":$payout_title}} {{if $payout.status_id==1}} {{assign var="list_tokens_title" value="`$list_tokens_title` `$lang.memberzone.tokens_label_payout_title_in_progress`"}} {{elseif $payout.status_id==2}} {{assign var="list_tokens_title" value="`$list_tokens_title` `$lang.memberzone.tokens_label_payout_title_paid`"}} {{/if}} {{elseif $payout_unpaid==1}} {{assign var="list_tokens_title" value=$lang.memberzone.tokens_label_payout_unpaid}} {{/if}} <div id="{{$block_uid}}"> <div class="headline"> <h{{$list_tokens_header_level|default:"2"}}>{{$list_tokens_title}}</h{{$list_tokens_header_level|default:"2"}}> {{if count($payouts)>0}} <div class="sort"> <span class="icon type-sort"></span> <strong> {{if $payout.payout_id}} {{$payout.added_date|date_format:"%Y-%m-%d"}} {{elseif $payout_unpaid==1}} {{$lang.memberzone.tokens_label_payout_unpaid}} {{else}} {{$lang.memberzone.tokens_label_payout}} {{/if}} </strong> <ul id="{{$block_uid}}_payout_list"> {{if $payout.payout_id || $payout_unpaid==1}} <li> <a data-action="ajax" data-container-id="{{$block_uid}}_payout_list" data-block-id="{{$block_uid}}" data-parameters="payout_id:">{{$lang.memberzone.tokens_label_payout}}</a> </li> {{/if}} {{if $payout_unpaid!=1}} <li> <a data-action="ajax" data-container-id="{{$block_uid}}_payout_list" data-block-id="{{$block_uid}}" data-parameters="payout_id:0">{{$lang.memberzone.tokens_label_payout_unpaid}}</a> </li> {{/if}} {{foreach from=$payouts item="item" name="payouts"}} {{if $item.payout_id!=$payout.payout_id && $smarty.foreach.payouts.iteration<=10}} <li> <a data-action="ajax" data-container-id="{{$block_uid}}_payout_list" data-block-id="{{$block_uid}}" data-parameters="payout_id:{{$item.payout_id}}">{{$item.added_date|date_format:"%Y-%m-%d"}}</a> </li> {{/if}} {{/foreach}} </ul> </div> {{/if}} <div class="sort"> <span class="icon icon-calendar"></span> <strong> {{if $date_from}} {{$date_from|strtotime|date_format:"%Y-%m"}} {{else}} {{$lang.memberzone.tokens_label_period}} {{/if}} </strong> <ul id="{{$block_uid}}_period_list"> <li> <a data-action="ajax" data-container-id="{{$block_uid}}_period_list" data-block-id="{{$block_uid}}" data-parameters="group:{{$flow_group}};date_from:;date_to:">{{$lang.memberzone.tokens_label_period}}</a> </li> {{section name="calendar" start=0 loop=12}} {{assign var="month1" value=$smarty.section.calendar.index}} {{assign var="month2" value=$smarty.now|date_format:"%m"}} {{assign var="year1" value=$smarty.now|date_format:"%Y"}} {{assign var="month1" value=$month2-$month1}} {{if $month1<1}} {{assign var="month1" value=$month1+12}} {{assign var="year1" value=$year1-1}} {{/if}} {{assign var="month2" value=$month1+1}} {{assign var="year2" value=$year1}} {{if $month2>12}} {{assign var="month2" value=$month2-12}} {{assign var="year2" value=$year2+1}} {{/if}} {{if $month1<10}} {{assign var="month1" value="0`$month1`"}} {{/if}} {{if $month2<10}} {{assign var="month2" value="0`$month2`"}} {{/if}} {{assign var="period_from" value="`$year1`-`$month1`-01"}} {{assign var="period_to" value="`$year2`-`$month2`-01"|strtotime}} {{assign var="period_to" value=$period_to-86400}} {{assign var="period_to" value=$period_to|date_format:"%Y-%m-%d"}} {{if $period_from!=$date_from}} <li> <a data-action="ajax" data-container-id="{{$block_uid}}_period_list" data-block-id="{{$block_uid}}" data-parameters="group:{{$flow_group}};date_from:{{$period_from}};date_to:{{$period_to}}">{{$year1}}-{{$month1}}</a> </li> {{/if}} {{/section}} </ul> </div> <div class="sort"> <span class="icon type-sort"></span> <strong>{{$lang.memberzone.tokens_group.$flow_group|default:$lang.memberzone.tokens_group.0}}</strong> <ul id="{{$block_uid}}_group_list"> {{section name="groups" start=0 loop=5}} {{assign var="group" value=$smarty.section.groups.index}} {{if $flow_group!=$group}} <li> <a data-action="ajax" data-container-id="{{$block_uid}}_group_list" data-block-id="{{$block_uid}}" data-parameters="group:{{$group}};date_from:{{$date_from}};date_to:{{$date_to}}">{{$lang.memberzone.tokens_group[$group]}}</a> </li> {{/if}} {{/section}} </ul> </div> </div> <div class="box"> <div class="list-tokens"> {{if count($data)>0}} <table width="100%"> <tr> <th>{{$lang.memberzone.tokens_label_action}}</th> <th>{{$lang.memberzone.tokens_label_tokens}}</th> <th>{{$lang.memberzone.tokens_label_info}}</th> <th>{{$lang.memberzone.tokens_label_date}}</th> </tr> {{foreach item="item" from=$data}} <tr> <td> {{$lang.memberzone.tokens_flow_types[$item.flow_type]|default:$item.flow_type}} </td> <td>{{$item.tokens}}</td> <td> {{if $item.object_info!=''}} {{$item.object_info}} {{elseif $item.object_id>0}} {{$lang.memberzone.tokens_label_info_deleted}} {{/if}} {{if $item.notes!=''}} ({{$item.notes}}) {{/if}} </td> <td>{{$item.date|date_format:"%Y-%m-%d %H:%M:%S"}}</td> </tr> {{/foreach}} </table> {{else}} <div class="empty-content">{{$lang.common_list.no_data}}</div> {{/if}} </div> </div> {{assign var="pagination_custom_parameters" value="group:`$flow_group`;payout_id:`$payout.payout_id`;date_from:`$date_from`;date_to:`$date_to`"}} {{include file="include_pagination_block_common.tpl"}} </div>
  9. Poster is: {{$flashvars.preview_url}} Video files are: {{foreach from=$data.formats|smarty:nodefaults item="format"}} {{$format.postfix}}: {{$format.file_url}} {{/foreach}} But please note that you have to switch off Enable links obfuscation option in Settings -> Content settings, because this feature only works in KVS player.
  10. You can change embed player template in Settings -> Embed player settings, it will be 100% the same code as inside video_view block template. So just test in one place and then migrate to another. Which variables do you need?
  11. After this block on top: {{if $total_count>0 && $list_videos_show_more_link!='' && $total_count>$items_per_page}} <a class="more" href="{{$list_videos_show_more_link}}"> <span>{{$lang.common_list.link_more_items|replace:"%1%":$total_count}}</span> </a> {{/if}} Yes, at the very beginning of pagination template.
  12. Do you mean you want each word in search request to be considered as tag? I would say, it is possible to have this, but it can't be possible to combine this search into the same block as regular text search. You can have either regular text search (which searches in video title / description, and in tags / categories, but it doesn't split search term into words), or you can have search in tags by splitting search term into words and looking for tags. Or alternatively you can try using Sphinx search: https://www.kernel-scripts.com/en/articles/kvs-and-sphinx-integration/ Sphinx search script is searching in all fields and you can set up weights for them: $sphinx->SetFieldWeights(array ('title' => 20, 'description' => 10, 'categories' => 15, 'tags' => 15, 'models' => 15, 'content_source_title' => 15, 'dvd_title' => 15)); But you need to check with Sphinx docs, KVS does not provide any support for it and while we think it might work from default settings, it actually might not.
  13. We don't have much SEO expertise in KVS, but situations when domain is not indexed at all or very poorly could indicate that either your server / provider / network / domain is blacklisted for some reason (due to spam, or black seo). Try googling into that direction, and if there are any tools that you can use to check it. Other way would be to pay for some premium SEO tool that analyzes your site and provides recommendations. Something like this: https://www.semrush.com/
  14. What you need is to enable var_category_group_id=category on all Index page list_xxx blocks. Then you can pass ?category=1, ?category=2 and etc. to filter index page by category group ID.
  15. I would say it is a bad idea :) You need to separate data from presentation. If you want to have description for video rendered from title + tags, then easy to edit this text: html.video_details_description = %title% %tags_as_string% This would render exactly like video title and set of tags comma-separated. You can use many other variables there to even build some kind of random and constant patterns, please check the guide here:
  16. It can be enabled in Settings -> Customization.
  17. Try adding this CSS: .fancybox-overlay { backdrop-filter: blur(5px); } but it will also affect all popups, not the agecheck. Unfortunately I don't see an option with Fancybox v2 that KVS theme uses to supply custom classname for the given popup, so that CSS can be restricted solely for it.
  18. In template you show this text using some $lang variable: {{$lang.some_key_here}} Then you just need to replace "%TOKENS_COST%" with the actual value, plus in order not to have <em> as a plain text you need to disable default security formatting using |smarty:nodefaults, therefore you should have something like that (you can find similar code in video_view block template): {{$lang.some_key_here|replace:"%TOKENS_COST%":$data.tokens_required|smarty:nodefaults}}
  19. Yes, there is migrator plugin that can pull categorization data from other KVS installation:
  20. KVS has built-in overload protection that will disable some site functionality if your server load gets high. This is needed to prevent further load increase. There are several levels of protection, and KVS tries first to disable some non-important features, then more important and finally it will switch off your site with showing this message: Sorry, the website is temporary unavailable. Please come back later! BTW, you can customize this message by creating https://domain.com/overload.html file with the desired error message layout, in this case KVS will use this file. At the same time it will show some errors in stats on your start page that can highlight how many times overload protection was triggered: If you click into these non-zero values, you will see more detailed stats for them: Normally, a small fraction of errors comparing to your general traffic is fine, indicating that overload protection is working as expected. If you think that it is triggered too often, you may need to adjust limits in Settings -> Website settings. By default KVS uses the lower recommended limits, you can increase them all to upper recommended values.
  21. You can translate all objects in Administration -> Translations section.
  22. Strange, the code looks fine. Is it for members or for channels? The channels would have another block name (list_dvds) and another template code. Please create support ticket if you are not able to find the reason.
×
×
  • Create New...