Support community for TTG plugins and products.
NOTICE
The Turning Gate's Community has moved to a new home, at https://discourse.theturninggate.net.
This forum is now closed, and exists here as a read-only archive.
You are not logged in.
Yes, for this reason I put collaspsible content
Yes, the add to cart for each image.
On iPad Pro 9,7 inch, OS v 13.3.1
A link to a little video of the problem (was the same before I made the collapsible content):
https://youtu.be/uS2pHO2aeiE
Yes Matt, on my website and my iPad (I think it’s 11 inch model), last version OS installed, the Cart modal windows dosen’t scroll.
But on my iPhone 7 no problem
Hi,
Just to give a simple tip regarding Cart, when you have a fairly large amount of information to write in the product description.
I found this simple solution which consists in creating collapsible content, because on certain browser, like on my iPad, the Cart window was not scrollable.
Here for example, html code to write in the description of your products then the corresponding CSS, no need for javascript.
HTML product description (in 2 languages but you can do what you want):
<div data-lang="fr" >
<p>
<span style="color: #808080; font-family: helvetica; font-size: small;">DESCRPTION FR</span>
</p>
</div>
<br />
<br />
<section data-lang="fr" class="accordionlic">
<input type="checkbox" name="collapse" id="handle1" >
<h2 class="handle">
<label for="handle1">Plus d'infos</label>
</h2>
<div class="contentlic">
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Cras tincidunt arcu ut nunc congue, vitae sagittis quam ultrices. Suspendisse quis ultricies sem. Aenean imperdiet venenatis urna, in convallis dui iaculis ullamcorper. Praesent rhoncus aliquet augue. Suspendisse eu orci ac tortor aliquam accumsan eu ut neque. Duis lacinia tortor eget sem posuere, quis volutpat sapien posuere. Etiam erat augue, consequat nec lorem id, tempor tempor urna. Etiam non vulputate arcu. Fusce molestie accumsan dictum.</p>
</div>
</section>
<div data-lang="en" >
<p>
<span style="color: #808080; font-family: helvetica; font-size: small;">DESCRIPTION EN</span>
</p>
</div>
<br />
<br />
<section data-lang="en" class="accordionlic">
<input type="checkbox" name="collapse" id="handle2" >
<h2 class="handle">
<label for="handle2">More informations</label>
</h2>
<div class="contentlic">
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Cras tincidunt arcu ut nunc congue, vitae sagittis quam ultrices. Suspendisse quis ultricies sem. Aenean imperdiet venenatis urna, in convallis dui iaculis ullamcorper. Praesent rhoncus aliquet augue. Suspendisse eu orci ac tortor aliquam accumsan eu ut neque. Duis lacinia tortor eget sem posuere, quis volutpat sapien posuere. Etiam erat augue, consequat nec lorem id, tempor tempor urna. Etiam non vulputate arcu. Fusce molestie accumsan dictum.</p>
</div>
</section>
All you have to do is to replace "DESCRPTION FR" and "DESCRPTION EN" and the Lorem text.
Don't forget named id with different number for each different product:
id="handle1" and label for="handle1"
id="handle2" and label for="handle2"
id="handle3" and label for="handle3"
....etc...
An the corresponding css:
/* Toggle product description >>
=================================================== */
/*
CSS for the main interaction
*/
.accordionlic > input[type="checkbox"] {
position: absolute;
left: -100vw;
}
.accordionlic .contentlic {
overflow-y: hidden;
height: 0;
transition: height 0.3s ease;
}
.accordionlic > input[type="checkbox"]:checked ~ .contentlic {
height: auto;
overflow: visible;
}
.accordionlic label {
display: block;
}
/*
Styling
*/
.accordionlic {
margin-bottom: 1em;
}
.accordionlic > input[type="checkbox"]:checked ~ .contentlic {
padding: 5px;
border: 1px solid #e8e8e8;
border-top: 0;
}
.accordionlic .handle {
margin: 0;
font-size: 1.125em;
line-height: 1.2em;
}
.accordionlic label {
color: #333;
cursor: pointer;
font-weight: normal;
padding: 5px;
background: #e8e8e8;
}
.accordionlic label:hover,
.accordionlic label:focus {
background: #d8d8d8;
}
.accordionlic .handle label:before {
font : normal normal 14px/1 Font Awesome\ 5 Pro;
content: "\f054";
display: inline-block;
margin-right: 10px;
font-size: .58em;
line-height: 1.556em;
vertical-align: middle;
}
.accordionlic > input[type="checkbox"]:checked ~ .handle label:before {
content: "\f078";
}
That's all!
You can view it on my live website:
https://phototheque.nicolaslogerot.com/
Thank you very much rod
Thanks Rod,
in fact, it seems to me, but I did not try because I do not have a test site and I do not want to upset my site online, that digital packages only work if the option "Enable Offline Digital Purchases" is activated .
Only here, I offer download files for immediate download in several definitions, so that the process is automatic. I don't want to have to send digital files one by one every time.
On the other hand it is apparently impossible to combine these 2 options "packages" and "immediate digital download in several resolutions"
Yes Rod, but for digital download, it seem to be impossible
Hello,
I think I found a small bug in Cart
When, for example, you have added a digital file to the basket and you inadvertently later want to add the same file to the basket, a warning message appears telling you:
Something Went Wrong
This digital purchase has already been added to the cart and can not be added more than once.
So far, no problem, it's completely normal. By cons the thing is that when this message appears, even if we choose another option, such as a photo print, so a physical product, nothing happens. The user must close the Cart window and re-click on the image to add the product to the cart.
Hello,
Is it possible to offer digital download packs with Cart knowing that I offer 3 different file resolutions (Web, Print, Print HD) for immediate download.
When I add a pack, I only see the physical products (prints) but not the files.
Thanks
Hi all,
This is not a post on Backlight itself but rather verification tools that I use and which verify that the site is up to standards in terms of web standards.
If the post disturbs, I will delete it, again my apologies, but these tools allowed me to avoid and resolve a lot of errors.
HTML, CSS, Javascript editors ...:
https://html-online.com/editor/
Markdown editor:
HTML validator:
HTML 5 Validator:
https://html5.validator.nu
Markup Validation Service
HTML editor and validator (I use this one most):
https://jsonformatter.org/html-validator
CSS validator:
https://jigsaw.w3.org/css-validator/
Brocken link checker:
https://www.brokenlinkcheck.com/broken-links.php#status
https://validator.w3.org/checklink
Browser testing (safari, firefox, chrome ....) tryout for 5 min but more than enough
https://app.crossbrowsertesting.com/trial_started
Form of all kinds, simple, with lots of options and free (except mail and payment function) but super practical (see my page for the calculation of the sides of the prints: https://phototheque.nicolaslogerot.com/tarifs):
https://app.calconic.com/signup
Diagram
https://app.diagrams.net
UPDATE:
Character counter, useful for Meta Description:
https://www.charactercountonline.com
Htaccess generator:
For SEO-friendly Redirects:
https://www.danielmorell.com/tools/htac … -generator
And another:
https://www.htaccessredirect.net/
Error Page Generator
https://www.generateit.net/error-pages/
And you, put your suggestions and tips under this post!
Thanks for all, you’re right, I have to look at these solutions
Thank you very much
Hi,
I am installing a modal window for an image but my problem is when we scroll the page, the modal window remains at the top of the page.
I can not find the CSS trick that would make the window appear in full screen instead is place regardless of the position of the scrolling of the page.
Here is an example on my page, scroll down and click on the image:
https://phototheque.nicolaslogerot.com/test
To see the modal window, you can click on the arrow "Scroll to top" at the bottom right
And here is the html code:
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum sodales arcu vitae laoreet luctus. Fusce ullamcorper id nibh eget hendrerit. Phasellus est metus, posuere eu ipsum at, suscipit dapibus massa. Nunc aliquam consectetur velit a porta. Etiam convallis venenatis lorem id porttitor. Etiam et efficitur eros. Sed diam arcu, auctor vel felis nec, pulvinar bibendum eros. Curabitur consequat dui magna, eu vehicula lectus efficitur sit amet. Nullam ut fermentum nulla. Aliquam quis scelerisque ligula, in placerat orci. Pellentesque non elit in sem iaculis euismod eget id odio. Sed consequat massa a pharetra tincidunt.... blablabla.....</p>
<div data-lang="fr">
<img class="myImg" src="https://phototheque.nicolaslogerot.com/backlight/designer/page/image/36" alt="Dimensions des tirages" style="width:100%;max-width:300px">
</div>
<div data-lang="en">
<img class="myImg" src="https://phototheque.nicolaslogerot.com/backlight/designer/page/image/38" alt="Print dimensions" style="width:100%;max-width:300px">
</div>
<!-- The Modal -->
<div id="myModal" class="modal">
<span class="close">×</span>
<img class="modal-content" id="img01">
<div id="caption"></div>
</div>
<script type="text/javascript" src="https://code.jquery.com/jquery-3.3.1.js"></script>
<script type="text/javascript">
$(document).ready(function() {
var modal = $('#myModal')
var span = $(".close")
var modalImg = $("#img01")
var captionText = $("#caption")
var img = $('.myImg')
img.click(function(){
modal.css('display', 'block')
modalImg.attr('src', this.src)
captionText.html(this.alt)
document.body.style.overflow = "hidden"; // ADD THIS LINE
document.body.style.height = "100%"; // ADD THIS LINE
});
span.click(function() {
modal.css('display', 'none')
document.body.style.overflow = "auto"; // ADD THIS LINE
document.body.style.height = "auto"; // ADD THIS LINE
});
});
</script>
and the CSS:
.myImg {
border-radius: 5px;
cursor: pointer;
transition: 0.3s;
}
.myImg:hover {opacity: 0.7;}
/* The Modal (background) */
.modal {
display: none; /* Hidden by default */
position: fixed; /* Stay in place */
z-index: 1; /* Sit on top */
padding-top: 100px; /* Location of the box */
left: 0;
top: 0;
width: 100%; /* Full width */
height: 100%; /* Full height */
overflow: auto; /* Enable scroll if needed */
background-color: rgb(0,0,0); /* Fallback color */
background-color: rgba(255,255,255,0.9); /* Black w/ opacity */
}
/* Modal Content (image) */
.modal-content {
margin: auto;
display: block;
width: 80%;
max-width: 700px;
}
/* Caption of Modal Image */
#caption {
margin: auto;
display: block;
width: 80%;
max-width: 700px;
text-align: center;
color: #000000;
padding: 10px 0;
height: 150px;
}
/* Add Animation */
.modal-content, #caption {
-webkit-animation-name: zoom;
-webkit-animation-duration: 0.6s;
animation-name: zoom;
animation-duration: 0.6s;
}
@-webkit-keyframes zoom {
from {-webkit-transform:scale(0)}
to {-webkit-transform:scale(1)}
}
@keyframes zoom {
from {transform:scale(0)}
to {transform:scale(1)}
}
/* The Close Button */
.close {
position: absolute;
top: 15px;
right: 35px;
color: #000000;
font-size: 40px;
font-weight: bold;
transition: 0.3s;
}
.close:hover,
.close:focus {
color: #00d4d8;
text-decoration: none;
cursor: pointer;
}
/* 100% Image Width on Smaller Screens */
@media only screen and (max-width: 700px){
.modal-content {
width: 100%;
}
}
Thank you
And you can reduce button size on little display like mobil, iPad etc....
html .fa-globe:before {
font-family: Arial, 'Helvetica Neue', Helvetica, Roboto, 'Droid Sans', sans-serif;
font-weight: 700;
font-size: 0.875em;
}
html[lang="fr"] .fa-globe:before {
font-family : Font Awesome\ 5 Pro, Lato, Helvetica, Arial, sans-serif;
content: "\f57d" " FR";
font-weight: 700;
font-size: 0.875em;
}
html[lang="en"] .fa-globe:before {
font-family : Font Awesome\ 5 Pro, Lato, Helvetica, Arial, sans-serif;
content: "\f57d" " EN";
font-weight: 700;
font-size: 0.875em;
}
#language-selector.tb.mouseable.button {
min-width: 50px;
}
#language-selector ul {
width: 75px;
}
@media screen and ( max-width: 992px ) {
html[lang="fr"] .fa-globe:before {
font-family : Font Awesome\ 5 Pro, Lato, Helvetica, Arial, sans-serif;
content: "FR";
font-weight: 700;
font-size: 0.875em;
}
html[lang="en"] .fa-globe:before {
font-family : Font Awesome\ 5 Pro, Lato, Helvetica, Arial, sans-serif;
content: "EN";
font-weight: 700;
font-size: 0.875em;
}
#language-selector.tb.mouseable.button {
min-width: 36px;
}
#language-selector ul {
width: 75px;
}
}
And you can combine fonteawesome icon and text, and extent width of the icon:
html[lang="fr"] .fa-globe:before {
font-family : Font Awesome\ 5 Pro, Lato, Helvetica, Arial, sans-serif;
content: "\f57d" " FR";
font-weight: 700;
font-size: 0.875em;
}
html[lang="en"] .fa-globe:before {
font-family : Font Awesome\ 5 Pro, Lato, Helvetica, Arial, sans-serif;
content: "\f57d" " EN";
font-weight: 700;
font-size: 0.875em;
}
#language-selector.tb.mouseable.button {
min-width: 50px;
}
Thank you Matthew, thank you for the advice, this is rectified, an error on my part!
Thank you Daniel, thank you for all your support and for the delicate coding of php!
Matthew, A suggestion, it would be interesting that you put a demo page of the Backlight client sites on the page of http://theturninggate.net, a sort of "Showcase" gallery for future clients ....
Hi,
I use Backlight from v1 and after an incredible v2, I’ve just updated to v3
Always impressed with the new features!
Still a few details to personalize, but it's rolling, thank you to the authors of Backlight for this great job, and the moderators Daniel Leu and Rod Barbee for for support and troubleshooting...
https://phototheque.nicolaslogerot.com
Nico
But if I disable album or I change with another index page without album, nothing append too
When I put default .htaccess file in my Backlight installation, it put the default page (index page: yes), with the album rendering all image on the same page, and it take very loooonnggg time to load
Daniel you put me on the right way!
Now, I have this message:
The document has moved here.
I think the error comes because I put redirection on my web site in htaccess:
RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} ^www\. [NC]
RewriteCond %{HTTP_HOST} ^(?:www\.)?(.+)$ [NC]
RewriteRule ^ https://%1%{REQUEST_URI} [L,NE,R=301]
RewriteCond %{HTTP_HOST} ^phototheque.nicolaslogerot.com$ [NC]
RewriteCond %{REQUEST_URI} ^/$
RewriteRule ^(.*)$ /galleries/stock/ [L]
and in index.php in my website.com/galleries/index.php
header('Location: ../');
Without all of this redirection, I have now this message:
Array
(
[status] => error
['code'] => 403
[message] => 22: The requested URL returned error: 403
)
In fact the first redirection, is an invisible redirection for user:
"https://phototheque.nicolaslogerot.com/galleries/stock" to "https://phototheque.nicolaslogerot.com/"
and the second redirection is to prevent google users and robots from referencing the page:
"https://phototheque.nicolaslogerot.com/galleries/"
Otherwise it returns to an empty page.
My backlight installation from lightroom contains only one gallery named: "Stock" which is my home page.
To avoid having the home page with a long address like
"https://phototheque.nicolaslogerot.com/galleries/stock"
I made an invisible redirect in order to obtain a simplified address like:
"https://phototheque.nicolaslogerot.com/"
Here, I hope to be quite clear, the explanations are not simple and I am French and my English is limited.
Thank you very much Daniel!
Hi Daniel, thank you very much for your help!
I completely deleted my custom php code to leave only the one you send me, so here is my full PHP file and the error returned:
<?php
/*
* TTG Core Elements "PHPlugins" User Hooks v1.2 - initialization mainline
*
* developed by john bishop images (http://johnbishopimages.com)
* for Matthew Campagna of The Turning Gate (http://theturninggate.net)
*
*/
function user_load($style, $path) {
$g_tsvrl = explode(' ', $style); // Extract gallery type
define ('G_STYLE', strtoupper($g_tsvrl[1])); // and set global for later
$g_path = str_ireplace('\\','/',$path); // change \ to /
$chunks = explode('/',$g_path); // and put into array
define ('G_PATH', strtoupper($chunks[count($chunks)-2])); // gallery folder name is second to last
//define ( 'TTG_SITE', ''); // set new site root for navigation, resources, etc.
}
if (defined('BACKLIGHT_HOOK')) {
require_once(realpath(BACKLIGHT_HOOK).'/modules/module-designer/application/helpers/APHPlugins.php');
}
class PHPlugins extends APHPlugins
{
// Returns the JSON API response as an array. If an error was detected
// an error response is returned
//
// Error response:
// (
// ['status'] => 'error'
// ['code'] => error number
// ['message'] => error description
// )
function dlp_get_wp_rest_response($url){
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_RETURNTRANSFER => 1,
CURLOPT_URL => $url,
CURLOPT_USERAGENT => 'User Agent X',
CURLOPT_FAILONERROR => true
));
$posts = curl_exec($curl);
// Was an error detected?
if(curl_errno($curl)>0){
$posts = Array();
$posts['status'] = 'error';
$posts['code'] = curl_getinfo($curl, CURLINFO_RESPONSE_CODE);
$posts['message'] = curl_errno($curl).': '.curl_error($curl);
} else {
$posts = json_decode($posts, true);
}
curl_close($curl);
return $posts;
}
function footer_bottom() {
$posts = $this->dlp_get_wp_rest_response("https://www.phototheque.nicolaslogerot.com/backlight/api/get_album/343971");
// check for errors
if (array_key_exists('status', $posts)){
// error detected:
echo '<pre>';
print_r($posts);
echo '</pre>';
} else {
echo "Array length: " . count($posts['album']['photos']);
}
}
}
?>
Something went wrong
array_key_exists() expects parameter 2 to be array, null given in perso-home.php on line 63
Line 63 is:
if (array_key_exists('status', $posts))
You're welcome, it doesn't affect the way my links work, just I thought it was weird
Sorry, you can modify the CSS by ftp in Backlight/custom/css/your-custom-css:
#message.success {
background-color: #0091EA;
}
#message {
border: 0 solid rgba(255,255,255,0.15);
border-width: 0 0 0 8px;
border-radius: 3px;
border-top-left-radius: 0;
box-shadow: 1px 1px 3px rgba(0,0,0,0.15);
margin: 1.5rem 0;
max-width: 768px;
padding: 0.75rem 12px;
}
Hi,
you can modify it in:
Backlight>Languages>your language>Manage Language
in "Contact Forms" -> Success Message
Nico
Hi,
I do not know if this is important in terms of functionality, although I do not have any image link concerns and if this is only due to my installation or if it is specific to a Backlight error, but when I upload an image in the Backlight> Designer> Images module, the link obtained has a double slash // just after the domain name.
Here is for example what it gives:
https://mywebsite.com//backlight/designer/page/image/13
Notice the double slashes between "https://mywebsite.com" and "backlight/designer/page/image/13"