1
alain01
Overload the images on the search.php page
  • 2021/10/15 15:41

  • alain01

  • Just can't stay away

  • Posts: 536

  • Since: 2003/6/20


Hi,
I need to change the icons on the /search.php page.

Resized Image


Basic methode :
I change on each module the file /modules/module_name/assets/images/image_search.png
BUT it's a bad method cause when i will update the module, i will erase my customize pictures

Overload method :
I add an new overloaded image in this directory:
/themes/my_theme/modules/module-1/assets/images/image_search.png
But it doesn't work

URL concerned :
1 - /search.php
2 - /modules/profile/userinfo.php?uid=x

Concrete example :
Search page: https://www.monxoops.fr/search.php?query=xswatch4&action=results
Profile page : https://www.monxoops.fr/modules/profile/userinfo.php?uid=3

I want to change this image : [img ]https://www.monxoops.fr/modules/xmnews/assets/images/xmnews_search.png[/img]
to
[img ]https://www.monxoops.fr//themes/mx-theme/modules/xmnews/assets/images/xmnews_search.png[/img] (just an example to view the change)

Any good solution ?

2
alain01
Re: Overload the images on the search.php page
  • 2021/10/17 0:22

  • alain01

  • Just can't stay away

  • Posts: 536

  • Since: 2003/6/20


Ok,
I found a solution but I dont know How to test if a file exist in the template.

My code for the profile_userinfo.tpl overload file (http://mysite.com/themes/my_theme/modules/profile/profile_userinfo.tpl)

<li>
                    <{
assign var="chaine_start" value="$xoops_url/modules/"}>
                    <{
assign var="chaine_surcharge" value=$xoops_imageurl|cat:$result.image|replace:$chaine_start:''}>
                 
                     <{if 
$chaine_surcharge}>
                        <
img src="<{$chaine_surcharge}>" alt="<{$module.name}>"> <a href="<{$result.link}>"><{$result.title}>a> (<{$result.time}>)
                    <{else}>
                        <
img src="<{$result.image}>" alt="<{$module.name}>"> <a href="<{$result.link}>"><{$result.title}>a> (<{$result.time}>)
                    <{/if}>
               li>


I know that
<{if $chaine_surcharge}>
is always true but I dont find a test to test the existence of a file (image)

So the question now is :
How can I test the existence of an image with smarty in a template file ?

3
alain01
Re: Overload the images on the search.php page
  • 2021/10/17 0:27

  • alain01

  • Just can't stay away

  • Posts: 536

  • Since: 2003/6/20


To understand the code :
Code :
<{assign var="chaine_start" value="$xoops_url/modules/"}>
                    
chaine_start = <{$chaine_start}> <br />
                    
                    <{
assign var="chaine_surcharge" value=$xoops_imageurl|cat:$result.image|replace:$chaine_start:''}>
                    
chaine_surcharge = <{$chaine_surcharge}> <br />


result :
Quote:

4
alain01
Re: Overload the images on the search.php page
  • 2021/10/17 21:43

  • alain01

  • Just can't stay away

  • Posts: 536

  • Since: 2003/6/20


Ok, error in my code.

The code should be :
<{assign var="chaine_surcharge" value=$xoops_imageurl|cat:"modules/"|cat:$result.image|replace:"$xoops_url/modules/":''}>

result in a example :
Quote:So with that, I can overload the images...
But same trouble,
i dont know to test the existence of a file (image) with smarty.

5
zyspec
Re: Overload the images on the search.php page
  • 2021/10/19 20:36

  • zyspec

  • Module Developer

  • Posts: 1095

  • Since: 2004/9/21


@alain01

You should be able to just use something like this:
<{if file_exists($chaine_surcharge)}>
Found my file<br>
<{else}>
Unknown file<br>
<{/if}>

6
alain01
Re: Overload the images on the search.php page
  • 2021/10/19 21:38

  • alain01

  • Just can't stay away

  • Posts: 536

  • Since: 2003/6/20


Thank you for the syntax, zyspec,
but it does not work.

<{if file_exists($chaine_surcharge)}>
                            <
div class="d-inline"><img src="<{$chaine_surcharge}>" alt="<{$module.name}>"> <a href="<{$result.link}>"><{$result.title}>a>div>
                            <
div class="d-none d-md-inline "><span class="fas fa-calendar fa-sm ml-2">span> <{$result.time}>div>
                            <
br />
                        <{else}>
                            <
img src="<{$result.image}>" alt="<{$module.name}>"> <a href="<{$result.link}>"><{$result.title}>a> (<{$result.time}>)<br />
                        <{/if}>

The condition is always false... but the file exists

If I delete the test, the image is overloaded.

7
Mamba
Re: Overload the images on the search.php page
  • 2021/10/19 23:33

  • Mamba

  • Moderator

  • Posts: 11409

  • Since: 2004/4/23


Are you using the absolute path? At least that's what they're talking about it here

See also here
Support XOOPS => DONATE
Use 2.5.11 | Docs | Modules | Bugs

8
alain01
Re: Overload the images on the search.php page
  • 2021/10/20 6:16

  • alain01

  • Just can't stay away

  • Posts: 536

  • Since: 2003/6/20


yes, absolute path.
Thank you for the links .

<{assign var="chaine_surcharge" value=$xoops_imageurl|cat:"modules/"|cat:$result.image|replace:"$xoops_url/modules/":''}>
                        
chaine_surcharge : <{$chaine_surcharge}> <br />

                        <{if 
file_exists($chaine_surcharge)}>
                            <
div class="d-inline"><img src="<{$chaine_surcharge}>" alt="<{$module.name}>"> <a href="<{$result.link}>"><{$result.title}>a>div>
                            <
div class="d-none d-md-inline "><span class="fas fa-calendar fa-sm ml-2">span> <{$result.time}>div>
                            <
br />
                        <{else}>
                            <
img src="<{$result.image}>" alt="<{$module.name}>"> <a href="<{$result.link}>"><{$result.title}>a> (<{$result.time}>)<br />
                        <{/if}>


Result:
chaine_surcharge : http://xoops-tests2.local/themes/mx-theme/modules/xmnews/assets/images/xmnews_search.png

and the test is always false so the overloaded does not work.

Quote:
In smarty, you cannot use file_exists() on a URL, but you can use it on a local file

I think, the best way is to check in your controller.

I tried

<{$file_headers = @get_headers($chaine_surcharge)}>
                        
file_headers = <{$file_headers}> <br />


but the result is :
Quote:
file_headers =

9
Mamba
Re: Overload the images on the search.php page
  • 2021/10/20 12:39

  • Mamba

  • Moderator

  • Posts: 11409

  • Since: 2004/4/23


This is how you could do it (this is for the xbootstrap theme and the Publisher module):

1) create directory "images" in "publisher" folder in your theme, e.g.
/themes/xbootstrap/modules/publisher/images/

2) copy the image of your choice to this folder, and name it e.g. "search.png"

Repeat it for all modules that you want to modify.
Note: the name of the file should be the same for all modules!

3) copy the file "system_search.tpl"
from /modules/system/templates/
to /themes/xbootstrap/modules/system/

4) modify the file "system_search.tpl" around line 17:

<{foreach item=data from=$search.module_data}>
            <
img src="<{$data.image_link}>" title="<{$data.image_title}>" alt="<{$data.image_title}>"/> <a href="<{$data.link}>"><{$data.link_title}>a>


to this:

<{foreach item=data from=$search.module_data}>
<{*----------- new 
code start -------------*}>
            <{
assign var="module_name" value=$search.module_name|lower}>
            <{
assign var="image" value="themes/xbootstrap/modules/$module_name/images/search.png"}>
            <{if 
file_exists($image)}>
                   <
img src="<{$image}>"
                   
<{else}>
                   <
img src="<{$data.image_link}>"
            
<{/if}>
                 
title="<{$data.image_title}>" alt="<{$data.image_title}>"/> <a href="<{$data.link}>"><{$data.link_title}>a>
<{*----------- new 
code ends -------------*}>


Now if you go to http://myxoopssite/search.php and do the search, Publisher will show you the new icons.
Support XOOPS => DONATE
Use 2.5.11 | Docs | Modules | Bugs

10
zyspec
Re: Overload the images on the search.php page
  • 2021/10/20 13:35

  • zyspec

  • Module Developer

  • Posts: 1095

  • Since: 2004/9/21


@alain01,

The file you're checking for must be a path, not a URL. So chaine_surcharge should be something like:
/var/www/html/themes/mx-theme/modules/xmnews/assets/images/xmnews_search.png

use something like XOOPS_PATH, not XOOPS_URL to build the file location.

Login

Who's Online

354 user(s) are online (142 user(s) are browsing Support Forums)


Members: 0


Guests: 354


more...

Donat-O-Meter

Stats
Goal: $100.00
Due Date: Nov 30
Gross Amount: $0.00
Net Balance: $0.00
Left to go: $100.00
Make donations with PayPal!

Latest GitHub Commits