I'm attempting to write a PHP snippet that will rebuild the cached output for all pages and displays in a specific view. I have a separate process currently clearing out the caches, but then each paged output of my view has to be physically viewed in order to have the contents stored in the cache tables.
Can someone point me in the right direction? I've found the following contrib functions, but they don't seem to be what I'm looking for:
views_cache_set()
views_cache_get()
Any help would be greatly appreciated. Thanks!
If you are only dealing with cache inside of a standard view and want your displayed information to be not only current but pre cached before the first hit (and right after a flush), you can use what my partner and I are doing for our project.
We are using Views Content Cache which is very helpful for flushing the caches set inside of views to keep the information as current as possible.
Our solution is to use views_get_view_result() to invoke the view. We use
views_get_view_result('employee_master');
drupal_goto('');
You can put this code in a snippet or a function in your custom module (not sure about the .tpl files) and make rules or code to execute it.
Related
I have a ecommerce store website running with WordPress. I'd like to include a section with a -random custormer's product review, so that every time someone access the page, there will be a different comment there.
I'm not used to PHP, but I managed to create a shortcode which takes a random comment and returns the proper HTML. It is working fine (in eddition mode, every time I insert the shortcode a different comment appears).
My issue is that when I leave the page and return, the previous one is still there. I believe that it is being caused by cache, but I wouldn't like to disable the cache for the whole page.
How you I force the shortcode run again (I don't know if it is the right way to explain) and make sure that at every access, a different comment appears?
One solution I thought is to have JS code which would do preaty much the same thing my PHP code does, using Woocommerce API to get the data. But I'm wondering if there is a simpler solution to do that, like forcing the specific section not being cached or re-run the shortcode.
Thanks!
JS can't do what PHP does here: at most it can create an AJAX-call to the backend that then runs a query for a random comment and returns it. You need to render it thereafter. It's fairly standard, but overkill for your case.
Instead, you're going to want to check whether your caching mechanism supports ESI or something else that excluded parts of your code from being cached.
i wrote a little sh*tcode that loads data from one accounting program in xml format, parses it and adds it to the database, but there is one big problem: the data is displayed on the page itself in CRM, you need to reload the page 2 times, when you first restart the page, the system turns to the cache, and when the second update actually goes to the database, I need somehow using php or js
make it so that it does not access the cache, but access the database
P.S. Version vTigerCRM 7.1 module Products
There are three solution, A) Make dynamic content in your code B) Clear Smarty Cache in your code C) Disable caching in vTiger
If option A works, it is most effective
one is to put a little footer or header in your code that changes the content to let smarty clear cache itself( for example put Date() or a number.
Second solution is to look for SMARTY to clear cache:
// clear the entire cache
$smarty->clearAllCache();
// clears all files over one hour old
$smarty->clearAllCache(3600);
Third
Look for PS_SMARTY_CACHE under Table prefix_configuration and set it to 0
I'm new to Joomla, but not a new programmer. I've written several applications in PHP that I want to include inside Joomla articles. Simple enough:
<?php include 'file.php'; ?>
The issue is that inside the PHP files I have a bunch of code gathering and creating variables that I need to POST and retrieve. I can get those POST variables inside the Article, but I can't pass them back to the included PHP file.
I've even coded the included PHP files to access the Joomla framework hoping to retrieve Joomla user id for example. This won't run inside the Article either and returns empty. However, if I run the PHP file on its own outside of the Article, I can access all POST data (obviously) and also the Joomla JFactory data. So it runs fine, until it's placed as an included file inside an Article.
The only way I've been able to pass something to the included PHP file is using $_GET url variables like this:
<?php include 'file.php?data=something'; ?>
However, this simply isn't practical as I have too many variables to pass like this. Normally, included PHP files run as part of the parent script and have access to all variables. How can I accomplish this in Joomla??
Much appreciated!
It is not recommended to include php into articles. Try instead one of these approaches:
Load your code in the index.php - file in your template: /templates/yourtemplate/index.php. This file is called every time your page is called.
Make a template override of the component where you want you external php file to be loaded. If this is in an article, you copy /components/com_content/views/article/tmpl/default.php (and possibly also other files there) to /templates/yourtemplate/html/com_content/article. Then add your include-statement here. (info) This file will be loaded each time you view a single article, but you can have further logic to only run it if (whatever)...
Use Jobin Jose's approach if you want to load you php-file inside content in an article. (info)
Some other approach writing a plugin
...or a component
I would say probably the easiest method is 2. (or 1.), but it all depends what you want to do.
Try this,
You have to create a simple module for your requirement, means what you are trying to achieve with included php file.
then place that module within the article with {loadposition module_position}
then you will get all the POST variables to that article and also suppose user_id and all other joomla Factory can be accessed bcoz its a Joomla module.
for a quick tutorial about module creation can be found here.
hope it make sense.
I resolved this using an Extension called Sourcerer
https://www.nonumber.nl/extensions/sourcerer
Variables can be passed without issue now.
Thanks for the input.
Why do not you try to create a new Joomla component and do whatever you want it it?
I am absolutely beginner in php/mysql but managed to do it with my page, following this instructions:
http://www.inmotionhosting.com/support/edu/joomla-3/create-component/helloworld
When you create this component, whatever you write in its "default.php" file, is actually a blank HTML/PHP page, with your joomla design and some other Joomla-features.
Sorry for the amateur answer and terminology :)
I have been going insane trying to figure out how to modify the WET-BOEW distribution of Drupal 7 and have been met with little to no results.
http://drupalwxt.github.io/
I do not have a lot of experience with drupal. I used it many years ago and I hated it as much then as I do now; unfortunately, employment requirements have forced me to dig into it again.
How do I go about modifying the theme? Even just modifying the header would be a massive step in the right direction.
For the record, the files I am modifying are in /profiles/wetkit/themes/wetkit_bootstrap/templates
Modifying system/page.tpl.php has no effect
Modifying system/html.tpl.php has an effect, unfortunately I am met with $page_top, etc and no actual markup for the header.
I am completely and utterly lost.
EDIT 1
I have created a folder under /sites/all/themes called "playground". In this file, I have added my basic info and copied the regions from the original wetkit info file.
I created the structure for <theme>/templates/system and added an html.tpl.php file containing a die() to test if it is overriding the base theme...it does not appear to be.
I make a point of clearing the cache after every change.
EDIT 2 (Solution)
It turns out that I was trying to modify the wrong file all along. For the WET-BOEW Drupal 7 distribution, changing the markup is done through <theme>/templates/panels/page--panels--wet-boew.tpl.php and by adding a custom CSS file to theme_name.info.
I'm sure this is all elementary stuff, but I've been struggling with it for a while now. Thanks for the help.
First, go to appearance page (url: /admin/appearance) and see what theme is used. Maybe you are changing wrong theme.
Then, check if page caching is on on performance page (/admin/config/development/performance). If so, you may need to clear the cache after every change with "Clear all caches" button on same page.
Oh and those system template files are usually overwritten with custom theme files. So don't change them.
Again, theme template files are usually placed in directory:
/sites/all/themes/theme_name/templates
starting from website root, so look for the files there or on some similar location if you have some specific site settings (multisite or something).
I want to understand how to use templating system and permalinks on php websites :D !..
let me describe my self more,
1.currently i have 20 files each have its own php logic (index.php,wizard.php,search.php etc)
ALL use same class's and includes.(install.php include all the required for all class's in my project abd u require_once(install.php) in all files)
i wana remodel my website into.
Analyze URL requested ---> IDENTIFY requested page ---> GET TEMPLATE for THIS PAGE -->MODIFY header(meta) and footer(javascript) ---> add logic ---> display page :D.
can some one put me on right learning track :D !. cuz i hv coded my website fully in oop and made all its content loads dynamically from MYSQL (simple small CMS) but i have no clue how to join template and php into index without repeating my self and create different file for each page in my web ! (each file do different jobs of course like file users.php does login and registration and userprofile etc)
Hope my english wassnt too too bad and u could understand my question :D !
My current approach so far:
Mysql table : page_tbl
columns: pagename,LogicFile,templateFile,MetaTag.
index.php?pagename
will check if not already cached or not listed for chacing it will :
Mysql:SELECT * WHERE pagename='$_GET['page']'
loginfiles = cars.php,search.php (will be exploded with , and included)
Template files = will be also exploded and modified according to MetaTag.
Metatag: Serialized assoc array with ['name']=['value'];
Then i start buffer output , replace template with new descriptions and keywords(auto generated)
include logic files
include footer.php (which include the scripts)
am i near to correct rout or still far away ? or am did i lose my track and over killing
If you are unsure whether you want to write your own, or use an existing one.
It is going to be a quite possibly very rewarding experience but a very time consuming one to write your own.
If you have a task at hand that you need to be solved, use an existing one.
That being said there are plenty of templating systems, smarty being the most long-lived one. You can find a short discussion on 5 popular ones at phpbuilder.
You also have entire Frameworks that you might want to consider. They are more than just a templating system, where database stuff, ajax helpers etc are included. Zend, CakePHP, and Codeigniter being popular ones. You can find comparisons of these at phpframeworks.
The best way is to take this route:
parse request data
determine controller which will be used
in controller select layout and template [layout "includes" template, it hold the contents that are common to all pages and template has the request-specific content]
in controller also fetch the data from database [MVP way]
assign data to array and pass it to the layout, it'll pass the data futher to the template
in layout and template use data from that array and construct view
pass everything to the browser
This is the way the frameworks work, and it isn't that bad. ;]