21からまでを表示 (計36) |
使用バージョン:concrete5.6.3.4
PHP Version 5.6.3RC1
IIS 8.0
表記の通りです。
カスタム属性種類にページ内リンクを追加したいのですが、
その際、フルサイトマップから選べるようにしたいです。
※現在はテキスト形式で相対パス指定したのちにページリストやオートナビ側でアドレスを解決していますが、フルサイトマップから選べたら更にスマートかなと思い投稿させていただきました。
実装方法、もしくはフリーで配布されているパッケージ等で似たような事をしている方がいらっしゃれば、情報をご提供していただけませんか?
Posted on 2月 03, 2016 at 4:51 午後
|
ありがとうございます。
私が開発しているパッケージに下記を加えることで解決いたしました。
public function on_start()
{
$env = Environment::get();
/* システムページのオーバーライド */
//ログイン
$env->overrideCoreByPackage('controllers/login.php', $this);
$env->overrideCoreByPackage('single_pages/login.php', $this);
//ユーザー一覧
$env->overrideCoreByPackage('controllers/members.php', $this);
$env->overrideCoreByPackage('single_pages/members.php', $this);
//ユーザー登録ページ
$env->overrideCoreByPackage('controllers/register.php', $this);
$env->overrideCoreByPackage('single_pages/register.php', $this);
//ユーザーマイページ
$env->overrideCoreByPackage('controllers/profile/controller.php', $this);
$env->overrideCoreByPackage('single_pages/profile/view.php', $this);
$env->overrideCoreByPackage('controllers/profile/avatar.php', $this);
$env->overrideCoreByPackage('single_pages/profile/avatar.php', $this);
$env->overrideCoreByPackage('controllers/profile/edit.php', $this);
$env->overrideCoreByPackage('single_pages/profile/edit.php', $this);
$env->overrideCoreByPackage('controllers/profile/friends.php', $this);
$env->overrideCoreByPackage('single_pages/profile/friends.php', $this);
$env->overrideCoreByPackage('controllers/profile/messages.php', $this);
$env->overrideCoreByPackage('single_pages/profile/messages.php', $this);
}
Posted on 2月 03, 2016 at 2:38 午後
|
使用バージョン:concrete5.6.3.4
PHP Version 5.6.3RC1
IIS 8.0
■ログインページ
concrete/controllers/login.php
concrete/single_pages/login.php
■会員登録ページ
concrete/controllers/register.php
concrete/single_pages/register.php
■会員一覧
concrete/controllers/members.php
concrete/single_pages/members.php
■マイページ関連
concrete/controllers/profile/○○○.php
concrete/single_pages/profile/○○○.php
上記ファイルをパッケージからオーバーライドしてコントローラには、ある機能を追加したり
シングルページ(ビューファイル)の方に表示する項目を増やしたり、
レイアウトや、HTML構造を変更したいのですが、
1、そもそもオーバーライドでどうこうできる話でしょうか?
2、別のシングルページを追加して対応するほうがいいのか?
3、オーバーライドして対応できるのできるのであれば、どうやって実装すべきか?
4、やり方等ご存じであればご指導おねがいいたします。
よろしくお願いいたします。
Posted on 2月 03, 2016 at 10:51 午前
|
使用バージョン:concrete5.6.3.4
PHP Version 5.6.3RC1
IIS 8.0
タイトルの通りです。
タイトルと要約の方を選択した後表示すると
要約の最後が文字化け?(アルファベット)が表示されます。
表示するのに必要なコールされているメソッド
テキストヘルパー(text.php)192行目
function shortText($textStr, $numChars = 255, $tail = '…')
{
if (intval($numChars) == 0) {
$numChars = 255;
}
$textStr = strip_tags($textStr);
if (function_exists('mb_substr') && function_exists('mb_strlen')) {
if (mb_strlen($textStr, APP_CHARSET) > $numChars) {
$textStr = mb_substr($textStr, 0, $numChars, APP_CHARSET) . $tail;
/* ↑↑↑↑↑↑ */
}
} else {
if (strlen($textStr) > $numChars) {
$textStr = substr($textStr, 0, $numChars) . $tail;
}
}
return $textStr;
}
矢印の箇所の変換のところには特に問題はなさそうなんですが・・・。
(ifの分岐が矢印のところに来ていることは確実です)
問題の箇所に心当たりのある方はいらっしゃいますか?
Posted on 1月 22, 2016 at 3:08 午後
|
返信ありがとうございます!
ユーザー定義スタックの中のブロック一覧は下記で取得できました!
$db = Loader::db();
$v = array( Stack::ST_TYPE_USER_ADDED );
$rs = $db->GetCol('select stName from Stacks where Stacks.stType = ?', $v );
$blocks_stack = array();
if (count($rs) > 0) {
$pcp = new Permissions($this);
foreach($rs as $garHandle) {
if ($pcp->canViewPageVersions()) {
$s = Stack::getByName($garHandle, 'RECENT');
} else {
$s = Stack::getByName($garHandle, 'ACTIVE');
}
if (is_object($s)) {
$blocksTmp = $s->getBlocks(STACKS_AREA_NAME);
$blocks_stack = array_merge($blocks_stack, $blocksTmp);
}
}
}
var_dump($blocks_stack);
Posted on 12月 18, 2015 at 7:50 午前
|
バージョン : concrete5.6.3.3
タイトルの通り、現在表示しているページに配置してある、スタックの中にあるブロックのIDの取得方法を教えていただけませんか。
用途はデバッグに使います。
よろしくお願いいたします
Posted on 12月 17, 2015 at 4:12 午後
|
解決しました。
Posted on 11月 18, 2015 at 3:36 午後
|
使用バージョン:concrete5.6.3.3
表記の通り、記事ブロックでリンクを追加ボタンを押し、
サイトマップからリンク先ページを選択すると、コード整形?が入り、
公開時にリンク先URLを確認すると
href="{CCM:CID_154}"
このようにhrefのパラメータがページIDに置き換わったまた公開され、移動できなくなっています。
※編集モードで編集中にhtmlを確認したときは、正しいリンクURLで表示されています
原因がお分かりになられる方はいらっしゃいませんか?
お力添え、お願いいたします
Posted on 11月 18, 2015 at 9:14 午前
|
返信ありがとうございます!
結局このような形で対応いたしました。
$c = Page::getCurrentPage(); // ページオブジェクトのインスタンス取得
$db = Loader::db(); // データベースのインスタンス取得
$q = 'SELECT DISTINCT bID FROM collectionversionblocks WHERE (cvID = ' . (int)$c->vObj->cvID . ' AND cID = ' . (int)$c->cID . ')' . " OR (arHandle = 'Main' );";
$r = $db->Execute($q, array());
while ($row = $r->FetchRow()) {
$block = Block::getByID($row["bID"]); //ブロックをインスタンス化
if($block instanceof Block){
if(method_exists($block->instance,"func")){
$block->instance->func(); //ブロックのメンバーメソッドをコール
}
}
}
ありがとうございました!
Posted on 10月 30, 2015 at 5:01 午後
|
ありがとうございます!
思い通りの操作ができました!
Posted on 10月 30, 2015 at 4:35 午後
|