我已经成为Joomla开发人员近一年了.我每天都在努力将jQuery导入joomla.Joomla带有mootools.当我导入jQuery时它崩溃了.此外,当我创建模块时,我必须将jQuery导入每个模块,这使得站点变慢.有时它会使整个网站崩溃.我希望mootools和jquery能够携手合作,所以我可以使用它们而不会发生任何崩溃.
将jQuery导入Joomla的最佳方法是什么?是否有特定的位置需要导入以在站点范围内使用一个jquery库(后端和前端)?
谢谢
默认情况下 parent::display($tpl);加载components/com_my_component/views/my_component/tmpl/default.php,但在某些情况下我需要加载其他php文件,它位于相同的文件夹附近default.php(例如components/com_my_component/views/my_component/tmpl/lol.php).如何做到这一点view.html.php.
PS
尝试负载loadTemplate和setLayout方法没有运气.
我正在尝试创建一个使用多个表的组件(前端).我发现1或2个帖子部分回答了这个问题,但没有一个确实如此.对于知道如何做到这一点的人来说,这一点似乎总是很简单明了,但从未真正解释过(或者我错过了正确的帖子).
在我的组件中,用户在一个视图中输入需要存储在两个表中的数据:标准的Joomla User表,即#__users用于存储未包含在Joomla中的数据的附加表,即#__users_complements
我是初学者,所以也许我错了,但我明白joomla的标准功能只能在一个表中保存表单的结果.就我而言,我想我必须覆盖模型中的标准函数:com_component/model/my_model.php.
1)我很困惑,因为我真的不明白哪个函数必须被覆盖:save()?商店()?其他?
2)假设我重写了save()函数,我应该重写所有代码来保存数据(爆炸数据数组并创建所有更新查询),还是应该创建2个标准表对象.
在这种情况下,(2个对象)每次将整个数据数组发送到父函数似乎很奇怪,因为我知道一个部分用于表1而另一部分用于表2.我应该能够在分开之前拆分我呢?
3)当我从表单中获取数据并调用模型的保存功能时,是否应该创建2个模型并从我的控制器管理这些模型?
你能帮我澄清一下如何在多个表中保存吗?我们非常感谢代码示例.谢谢
当用户在网站上注册时,我在密码表中查看数据库joomla_users,有以下格式存储的密码:
$ P $ Do8QrURFT1r0NlWf0X/GRDF/aMqwqK /
$ P $ DH38Lch9z508gJiop3A6u0whTity390
但不是文档中描述的形式(MD5 +":"+ SALT):
我需要为我澄清这一点,因为我正在使用外部脚本检查用户凭据以检查密码匹配.
在我的PHP脚本中,我有代码从数据库中的密码中分离SALT:
$parts = explode( ':', $password_database );
$crypt = $parts[0];
$salt = $parts[1];
Run Code Online (Sandbox Code Playgroud)
但如果没有dobule结(:),我不能这样做
所以,基本上我在Docker php7-fpm容器中运行Joomla,然后我有一个nginx容器,其中一个joomla.conf文件定义如下:
#https://docs.joomla.org/nginx
server {
listen 8081;
error_log /var/log/nginx/error.log;
access_log /var/log/nginx/access.log;
server_name php-docker.local;
root /usr/src/joomla;
index index.php index.html index.htm default.html default.htm;
location / {
try_files $uri $uri/ /index.php?$args;
}
# deny running scripts inside writable directories
location ~* /(images|cache|media|logs|tmp)/.*\.(php|pl|py|jsp|asp|sh|cgi)$ {
return 403;
error_page 403 /403_error.html;
}
location ~ \.php$ {
fastcgi_pass joomla:9000;
fastcgi_index index.php;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
include fastcgi_params;
#include /etc/nginx/fastcgi.conf;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
}
}
Run Code Online (Sandbox Code Playgroud)
这按预期工作...转到http://:8081正确加载所有内容.
现在,8081只是暂时暴露在nginx容器中,我本来想要做的是设置一个反向代理,这样http:/// joomla将成为最终的端点.
为此,我正在努力处理以下conf文件:
server{
listen 80;
server_name _;
location …Run Code Online (Sandbox Code Playgroud) 我已经被要求修复已经设置的Joomla站点的性能.
我查看调试输出,它显示两次相同的查询,一次用于记录的查询,再次显示记录的旧查询.我的猜测是它实际上运行相同的查询两次,每页只有不到900个查询(希望我错了)
Legacy插件已禁用,因此传统模式根本不启用.该站点也使用VirtueMart(如果全局配置中的缓存已打开,则BTW无法正常工作)
除了我认为它不应该运行446个查询这一事实(有时甚至高达每页650个),任何人都遇到过这个问题,我想在哪里解决这个问题.
更新:
回答下面的问题......它正在运行Artio JoomSef,以及System - SEF插件
谢谢
我正在尝试使用GORM和Grails 2.0映射Joomla MySQL数据库(的一小部分).
我正在阅读一本关于论证的书(Grails)并在网上搜索技术文章,但我仍然需要一个很好的参考来将Groovy/Java类型映射到MySQL字段.
我从一张简单的桌子开始jos_bannerclient.
class BannerClient {
String name
String contact
String email
String notes
String editor = ''
static constraints = {
name(blank:false)
contact(nullable:true)
email(nullable:true)
notes(nullable:true)
editor(nullable:true)
}
static mapping = {
datasource 'joomla'
table 'jos_bannerclient'
id column:'cid', type:'int'
notes column:'extrainfo', type:'text'
version false
}
}
Run Code Online (Sandbox Code Playgroud)
此时记录是在数据库中生成的,但如果我保存域,failOnError:true我会收到此错误:java.lang.IllegalArgumentException.
我在映射checked_out TINYINT字段时遇到了问题.GORM验证该字段的唯一方法是将其声明为Boolean,为什么它不起作用Byte?
我对如何映射MySQL TIME字段也有一些疑问checked_out_time.
我还阅读了Hibernate文档的一些部分,但仍然没有获得完成此任务所需的知识!
有人可以帮忙吗?
细节
我可以使用用户状态变量来存储和检索Joomla会话中的数据.
示例设置变量
$app =& JFactory::getApplication();
$app->setUserState( 'myvar', $myvarvalue );
Run Code Online (Sandbox Code Playgroud)
但我也可以使用JFactory/getSession在会话中存储和检索变量.
示例设置变量
$session =& JFactory::getSession();
$session->set('myvar', $myvarvalue);
Run Code Online (Sandbox Code Playgroud)
问题
这两种方法有什么区别?我什么时候应该使用另一个?
我有以下代码:
$db = JFactory::getDbo();
$query = $db->getQuery(true);
$query->select('*');
$query->from('#__users');
$db->setQuery($query);
// Check for a database error.
if ($db->getErrorNum()) {
JError::raiseWarning(500, $db->getErrorMsg());
}
$result = $db->loadResult();
Run Code Online (Sandbox Code Playgroud)
现在不推荐使用getErrorNum和JError.
为了澄清,JError和$ db-> getErrorNum()在Joomla 2.5中不被弃用,但是在Joomla中!3.0.所以这个问题对于那些为2.5开发但希望轻松升级到3.X系列的人来说是有价值的.
那么究竟要更换它们以便我可以正确检查数据库错误?
我的run控制器中有任务.我希望它返回JSON数据.就目前而言,我将我的JSON数据包装在模板HTML中.如何告诉Joomla只从控制器返回JSON数据?这是我的功能:
public function run ( ) {
JFactory::getDocument()->setMimeEncoding( 'application/json' );
JResponse::setHeader('Content-Disposition','attachment;filename="progress-report-results.json"');
JRequest::setVar('tmpl','component');
$data = array(
'foo' => 'bar'
);
echo json_encode( $data );
}
Run Code Online (Sandbox Code Playgroud)
这会返回:
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-gb" lang="en-gb" dir="ltr">
...
</head>
<body class="contentpane">
<div id="system-message-container">
</div>
{"foo":"bar"}
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
我想得到:
{"foo":"bar"}
Run Code Online (Sandbox Code Playgroud) joomla ×10
joomla2.5 ×6
php ×4
joomla3.0 ×2
components ×1
database ×1
docker ×1
grails ×1
grails-orm ×1
joomla3.1 ×1
jquery ×1
json ×1
legacy ×1
map ×1
mysql ×1
nginx ×1
performance ×1
virtuemart ×1